Skip to main content

bitwarden_importers/importers/keeper/proto/
authentication.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3pub struct ApiRequest {
4    #[prost(bytes = "vec", tag = "1")]
5    pub encrypted_transmission_key: ::prost::alloc::vec::Vec<u8>,
6    #[prost(int32, tag = "2")]
7    pub public_key_id: i32,
8    #[prost(string, tag = "3")]
9    pub locale: ::prost::alloc::string::String,
10    #[prost(bytes = "vec", tag = "4")]
11    pub encrypted_payload: ::prost::alloc::vec::Vec<u8>,
12    #[prost(int32, tag = "5")]
13    pub encryption_type: i32,
14    #[prost(string, tag = "6")]
15    pub recaptcha: ::prost::alloc::string::String,
16    #[prost(string, tag = "7")]
17    pub sub_environment: ::prost::alloc::string::String,
18}
19#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20pub struct ApiRequestPayload {
21    #[prost(bytes = "vec", tag = "1")]
22    pub payload: ::prost::alloc::vec::Vec<u8>,
23    #[prost(bytes = "vec", tag = "2")]
24    pub encrypted_session_token: ::prost::alloc::vec::Vec<u8>,
25    #[prost(bytes = "vec", tag = "3")]
26    pub time_token: ::prost::alloc::vec::Vec<u8>,
27    #[prost(int32, tag = "4")]
28    pub api_version: i32,
29}
30#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
31pub struct Transform {
32    #[prost(bytes = "vec", tag = "1")]
33    pub key: ::prost::alloc::vec::Vec<u8>,
34    #[prost(bytes = "vec", tag = "2")]
35    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
36}
37#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
38pub struct DeviceRequest {
39    #[prost(string, tag = "1")]
40    pub client_version: ::prost::alloc::string::String,
41    #[prost(string, tag = "2")]
42    pub device_name: ::prost::alloc::string::String,
43    #[prost(string, tag = "3")]
44    pub device_platform: ::prost::alloc::string::String,
45    #[prost(enumeration = "ClientFormFactor", tag = "4")]
46    pub client_form_factor: i32,
47    #[prost(string, tag = "5")]
48    pub username: ::prost::alloc::string::String,
49}
50#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
51pub struct AuthRequest {
52    #[prost(string, tag = "1")]
53    pub client_version: ::prost::alloc::string::String,
54    #[prost(string, tag = "2")]
55    pub username: ::prost::alloc::string::String,
56    #[prost(bytes = "vec", tag = "3")]
57    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
58}
59#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
60pub struct NewUserMinimumParams {
61    #[prost(int32, tag = "1")]
62    pub minimum_iterations: i32,
63    #[prost(string, repeated, tag = "2")]
64    pub password_match_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
65    #[prost(string, repeated, tag = "3")]
66    pub password_match_description: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
67    #[prost(bool, tag = "4")]
68    pub is_enterprise_domain: bool,
69    #[prost(bytes = "vec", tag = "5")]
70    pub enterprise_ecc_public_key: ::prost::alloc::vec::Vec<u8>,
71    #[prost(bool, tag = "6")]
72    pub forbid_key_type2: bool,
73}
74#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
75pub struct PreLoginRequest {
76    #[prost(message, optional, tag = "1")]
77    pub auth_request: ::core::option::Option<AuthRequest>,
78    #[prost(enumeration = "LoginType", tag = "2")]
79    pub login_type: i32,
80    #[prost(bytes = "vec", tag = "3")]
81    pub two_factor_token: ::prost::alloc::vec::Vec<u8>,
82}
83#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
84pub struct LoginRequest {
85    #[prost(message, optional, tag = "1")]
86    pub auth_request: ::core::option::Option<AuthRequest>,
87    #[prost(enumeration = "LoginType", tag = "2")]
88    pub login_type: i32,
89    #[prost(bytes = "vec", tag = "3")]
90    pub authentication_hash_prime: ::prost::alloc::vec::Vec<u8>,
91    #[prost(bytes = "vec", tag = "4")]
92    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
93    #[prost(bytes = "vec", tag = "5")]
94    pub auth_response: ::prost::alloc::vec::Vec<u8>,
95    #[prost(int32, tag = "6")]
96    pub mc_enterprise_id: i32,
97    #[prost(string, tag = "7")]
98    pub push_token: ::prost::alloc::string::String,
99    #[prost(string, tag = "8")]
100    pub platform: ::prost::alloc::string::String,
101}
102#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
103pub struct DeviceResponse {
104    #[prost(bytes = "vec", tag = "1")]
105    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
106    #[prost(enumeration = "DeviceStatus", tag = "2")]
107    pub status: i32,
108}
109#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
110pub struct Salt {
111    #[prost(int32, tag = "1")]
112    pub iterations: i32,
113    #[prost(bytes = "vec", tag = "2")]
114    pub salt: ::prost::alloc::vec::Vec<u8>,
115    #[prost(int32, tag = "3")]
116    pub algorithm: i32,
117    #[prost(bytes = "vec", tag = "4")]
118    pub uid: ::prost::alloc::vec::Vec<u8>,
119    #[prost(string, tag = "5")]
120    pub name: ::prost::alloc::string::String,
121}
122#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
123pub struct TwoFactorChannel {
124    #[prost(int32, tag = "1")]
125    pub r#type: i32,
126}
127#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
128pub struct StartLoginRequest {
129    #[prost(bytes = "vec", tag = "1")]
130    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
131    #[prost(string, tag = "2")]
132    pub username: ::prost::alloc::string::String,
133    #[prost(string, tag = "3")]
134    pub client_version: ::prost::alloc::string::String,
135    #[prost(bytes = "vec", tag = "4")]
136    pub message_session_uid: ::prost::alloc::vec::Vec<u8>,
137    #[prost(bytes = "vec", tag = "5")]
138    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
139    #[prost(enumeration = "LoginType", tag = "6")]
140    pub login_type: i32,
141    #[prost(int32, tag = "7")]
142    pub mc_enterprise_id: i32,
143    #[prost(enumeration = "LoginMethod", tag = "8")]
144    pub login_method: i32,
145    #[prost(bool, tag = "9")]
146    pub force_new_login: bool,
147    #[prost(bytes = "vec", tag = "10")]
148    pub clone_code: ::prost::alloc::vec::Vec<u8>,
149    #[prost(string, tag = "11")]
150    pub v2_two_factor_token: ::prost::alloc::string::String,
151    #[prost(bytes = "vec", tag = "12")]
152    pub account_uid: ::prost::alloc::vec::Vec<u8>,
153    #[prost(bytes = "vec", tag = "13")]
154    pub from_session_token: ::prost::alloc::vec::Vec<u8>,
155}
156#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct LoginResponse {
158    #[prost(enumeration = "LoginState", tag = "1")]
159    pub login_state: i32,
160    #[prost(bytes = "vec", tag = "2")]
161    pub account_uid: ::prost::alloc::vec::Vec<u8>,
162    #[prost(string, tag = "3")]
163    pub primary_username: ::prost::alloc::string::String,
164    #[prost(bytes = "vec", tag = "4")]
165    pub encrypted_data_key: ::prost::alloc::vec::Vec<u8>,
166    #[prost(enumeration = "EncryptedDataKeyType", tag = "5")]
167    pub encrypted_data_key_type: i32,
168    #[prost(bytes = "vec", tag = "6")]
169    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
170    #[prost(bytes = "vec", tag = "7")]
171    pub encrypted_session_token: ::prost::alloc::vec::Vec<u8>,
172    #[prost(enumeration = "SessionTokenType", tag = "8")]
173    pub session_token_type: i32,
174    #[prost(string, tag = "9")]
175    pub message: ::prost::alloc::string::String,
176    #[prost(string, tag = "10")]
177    pub url: ::prost::alloc::string::String,
178    #[prost(message, repeated, tag = "11")]
179    pub channels: ::prost::alloc::vec::Vec<TwoFactorChannelInfo>,
180    #[prost(message, repeated, tag = "12")]
181    pub salt: ::prost::alloc::vec::Vec<Salt>,
182    #[prost(bytes = "vec", tag = "13")]
183    pub clone_code: ::prost::alloc::vec::Vec<u8>,
184    #[prost(string, tag = "14")]
185    pub state_specific_value: ::prost::alloc::string::String,
186    #[prost(string, tag = "15")]
187    pub sso_client_version: ::prost::alloc::string::String,
188    #[prost(string, tag = "16")]
189    pub session_token_type_modifier: ::prost::alloc::string::String,
190}
191#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
192pub struct SwitchListElement {
193    #[prost(string, tag = "1")]
194    pub username: ::prost::alloc::string::String,
195    #[prost(string, tag = "2")]
196    pub full_name: ::prost::alloc::string::String,
197    #[prost(bool, tag = "3")]
198    pub auth_required: bool,
199    #[prost(bool, tag = "4")]
200    pub is_linked: bool,
201}
202#[derive(Clone, PartialEq, ::prost::Message)]
203pub struct SwitchListResponse {
204    #[prost(message, repeated, tag = "1")]
205    pub elements: ::prost::alloc::vec::Vec<SwitchListElement>,
206}
207#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
208pub struct SsoUserInfo {
209    #[prost(string, tag = "1")]
210    pub company_name: ::prost::alloc::string::String,
211    #[prost(string, tag = "2")]
212    pub saml_request: ::prost::alloc::string::String,
213    #[prost(string, tag = "3")]
214    pub saml_request_type: ::prost::alloc::string::String,
215    #[prost(string, tag = "4")]
216    pub sso_domain_name: ::prost::alloc::string::String,
217    #[prost(string, tag = "5")]
218    pub login_url: ::prost::alloc::string::String,
219    #[prost(string, tag = "6")]
220    pub logout_url: ::prost::alloc::string::String,
221}
222#[derive(Clone, PartialEq, ::prost::Message)]
223pub struct PreLoginResponse {
224    #[prost(enumeration = "DeviceStatus", tag = "1")]
225    pub device_status: i32,
226    #[prost(message, repeated, tag = "2")]
227    pub salt: ::prost::alloc::vec::Vec<Salt>,
228    #[prost(message, repeated, tag = "3")]
229    pub obsolete_field: ::prost::alloc::vec::Vec<TwoFactorChannel>,
230    #[prost(message, optional, tag = "4")]
231    pub sso_user_info: ::core::option::Option<SsoUserInfo>,
232}
233#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
234pub struct LoginAsUserRequest {
235    #[prost(string, tag = "1")]
236    pub username: ::prost::alloc::string::String,
237}
238#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
239pub struct LoginAsUserResponse {
240    #[prost(bytes = "vec", tag = "1")]
241    pub encrypted_session_token: ::prost::alloc::vec::Vec<u8>,
242    #[prost(bytes = "vec", tag = "2")]
243    pub encrypted_shared_account_key: ::prost::alloc::vec::Vec<u8>,
244}
245#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
246pub struct ValidateAuthHashRequest {
247    #[prost(enumeration = "PasswordMethod", tag = "1")]
248    pub password_method: i32,
249    #[prost(bytes = "vec", tag = "2")]
250    pub auth_response: ::prost::alloc::vec::Vec<u8>,
251    #[prost(bytes = "vec", tag = "3")]
252    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
253}
254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
255pub struct TwoFactorChannelInfo {
256    #[prost(enumeration = "TwoFactorChannelType", tag = "1")]
257    pub channel_type: i32,
258    #[prost(bytes = "vec", tag = "2")]
259    pub channel_uid: ::prost::alloc::vec::Vec<u8>,
260    #[prost(string, tag = "3")]
261    pub channel_name: ::prost::alloc::string::String,
262    #[prost(string, tag = "4")]
263    pub challenge: ::prost::alloc::string::String,
264    #[prost(string, repeated, tag = "5")]
265    pub capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
266    #[prost(string, tag = "6")]
267    pub phone_number: ::prost::alloc::string::String,
268    #[prost(enumeration = "TwoFactorExpiration", tag = "7")]
269    pub max_expiration: i32,
270    #[prost(int64, tag = "8")]
271    pub created_on: i64,
272    #[prost(enumeration = "TwoFactorExpiration", tag = "9")]
273    pub last_frequency: i32,
274}
275#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
276pub struct TwoFactorDuoStatus {
277    #[prost(string, repeated, tag = "1")]
278    pub capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
279    #[prost(string, tag = "2")]
280    pub phone_number: ::prost::alloc::string::String,
281    #[prost(string, tag = "3")]
282    pub enroll_url: ::prost::alloc::string::String,
283    #[prost(string, tag = "4")]
284    pub message: ::prost::alloc::string::String,
285}
286#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
287pub struct TwoFactorAddRequest {
288    #[prost(enumeration = "TwoFactorChannelType", tag = "1")]
289    pub channel_type: i32,
290    #[prost(bytes = "vec", tag = "2")]
291    pub channel_uid: ::prost::alloc::vec::Vec<u8>,
292    #[prost(string, tag = "3")]
293    pub channel_name: ::prost::alloc::string::String,
294    #[prost(string, tag = "4")]
295    pub phone_number: ::prost::alloc::string::String,
296    #[prost(enumeration = "TwoFactorPushType", tag = "5")]
297    pub duo_push_type: i32,
298}
299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
300pub struct TwoFactorRenameRequest {
301    #[prost(bytes = "vec", tag = "1")]
302    pub channel_uid: ::prost::alloc::vec::Vec<u8>,
303    #[prost(string, tag = "2")]
304    pub channel_name: ::prost::alloc::string::String,
305}
306#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
307pub struct TwoFactorAddResponse {
308    #[prost(string, tag = "1")]
309    pub challenge: ::prost::alloc::string::String,
310    #[prost(string, repeated, tag = "2")]
311    pub backup_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
312}
313#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
314pub struct TwoFactorDeleteRequest {
315    #[prost(bytes = "vec", tag = "1")]
316    pub channel_uid: ::prost::alloc::vec::Vec<u8>,
317}
318#[derive(Clone, PartialEq, ::prost::Message)]
319pub struct TwoFactorListResponse {
320    #[prost(message, repeated, tag = "1")]
321    pub channels: ::prost::alloc::vec::Vec<TwoFactorChannelInfo>,
322    #[prost(int64, tag = "2")]
323    pub expire_on: i64,
324}
325#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
326pub struct TwoFactorUpdateExpirationRequest {
327    #[prost(enumeration = "TwoFactorExpiration", tag = "1")]
328    pub expire_in: i32,
329}
330#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
331pub struct TwoFactorValidateRequest {
332    #[prost(bytes = "vec", tag = "1")]
333    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
334    #[prost(enumeration = "TwoFactorValueType", tag = "2")]
335    pub value_type: i32,
336    #[prost(string, tag = "3")]
337    pub value: ::prost::alloc::string::String,
338    #[prost(bytes = "vec", tag = "4")]
339    pub channel_uid: ::prost::alloc::vec::Vec<u8>,
340    #[prost(enumeration = "TwoFactorExpiration", tag = "5")]
341    pub expire_in: i32,
342}
343#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
344pub struct TwoFactorValidateResponse {
345    #[prost(bytes = "vec", tag = "1")]
346    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
347}
348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
349pub struct TwoFactorSendPushRequest {
350    #[prost(bytes = "vec", tag = "1")]
351    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
352    #[prost(enumeration = "TwoFactorPushType", tag = "2")]
353    pub push_type: i32,
354    #[prost(bytes = "vec", tag = "3")]
355    pub channel_uid: ::prost::alloc::vec::Vec<u8>,
356    #[prost(enumeration = "TwoFactorExpiration", tag = "4")]
357    pub expire_in: i32,
358}
359#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
360pub struct License {
361    #[prost(int64, tag = "1")]
362    pub created: i64,
363    #[prost(int64, tag = "2")]
364    pub expiration: i64,
365    #[prost(enumeration = "LicenseStatus", tag = "3")]
366    pub license_status: i32,
367    #[prost(bool, tag = "4")]
368    pub paid: bool,
369    #[prost(string, tag = "5")]
370    pub message: ::prost::alloc::string::String,
371}
372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
373pub struct OwnerlessRecord {
374    #[prost(bytes = "vec", tag = "1")]
375    pub record_uid: ::prost::alloc::vec::Vec<u8>,
376    #[prost(bytes = "vec", tag = "2")]
377    pub record_key: ::prost::alloc::vec::Vec<u8>,
378    #[prost(int32, tag = "3")]
379    pub status: i32,
380}
381#[derive(Clone, PartialEq, ::prost::Message)]
382pub struct OwnerlessRecords {
383    #[prost(message, repeated, tag = "1")]
384    pub ownerless_record: ::prost::alloc::vec::Vec<OwnerlessRecord>,
385}
386#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
387pub struct UserAuthRequest {
388    #[prost(bytes = "vec", tag = "1")]
389    pub uid: ::prost::alloc::vec::Vec<u8>,
390    #[prost(bytes = "vec", tag = "2")]
391    pub salt: ::prost::alloc::vec::Vec<u8>,
392    #[prost(int32, tag = "3")]
393    pub iterations: i32,
394    #[prost(bytes = "vec", tag = "4")]
395    pub encrypted_client_key: ::prost::alloc::vec::Vec<u8>,
396    #[prost(bytes = "vec", tag = "5")]
397    pub auth_hash: ::prost::alloc::vec::Vec<u8>,
398    #[prost(bytes = "vec", tag = "6")]
399    pub encrypted_data_key: ::prost::alloc::vec::Vec<u8>,
400    #[prost(enumeration = "LoginType", tag = "7")]
401    pub login_type: i32,
402    #[prost(string, tag = "8")]
403    pub name: ::prost::alloc::string::String,
404    #[prost(int32, tag = "9")]
405    pub algorithm: i32,
406}
407#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
408pub struct UidRequest {
409    #[prost(bytes = "vec", repeated, tag = "1")]
410    pub uid: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
411}
412#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
413pub struct DeviceUpdateRequest {
414    #[prost(bytes = "vec", tag = "1")]
415    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
416    #[prost(string, tag = "2")]
417    pub client_version: ::prost::alloc::string::String,
418    #[prost(string, tag = "3")]
419    pub device_name: ::prost::alloc::string::String,
420    #[prost(bytes = "vec", tag = "4")]
421    pub device_public_key: ::prost::alloc::vec::Vec<u8>,
422    #[prost(enumeration = "DeviceStatus", tag = "5")]
423    pub device_status: i32,
424    #[prost(string, tag = "6")]
425    pub device_platform: ::prost::alloc::string::String,
426    #[prost(enumeration = "ClientFormFactor", tag = "7")]
427    pub client_form_factor: i32,
428}
429#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
430pub struct DeviceUpdateResponse {
431    #[prost(bytes = "vec", tag = "1")]
432    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
433    #[prost(string, tag = "2")]
434    pub client_version: ::prost::alloc::string::String,
435    #[prost(string, tag = "3")]
436    pub device_name: ::prost::alloc::string::String,
437    #[prost(bytes = "vec", tag = "4")]
438    pub device_public_key: ::prost::alloc::vec::Vec<u8>,
439    #[prost(enumeration = "DeviceStatus", tag = "5")]
440    pub device_status: i32,
441    #[prost(string, tag = "6")]
442    pub device_platform: ::prost::alloc::string::String,
443    #[prost(enumeration = "ClientFormFactor", tag = "7")]
444    pub client_form_factor: i32,
445}
446#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
447pub struct RegisterDeviceInRegionRequest {
448    #[prost(bytes = "vec", tag = "1")]
449    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
450    #[prost(string, tag = "2")]
451    pub client_version: ::prost::alloc::string::String,
452    #[prost(string, tag = "3")]
453    pub device_name: ::prost::alloc::string::String,
454    #[prost(bytes = "vec", tag = "4")]
455    pub device_public_key: ::prost::alloc::vec::Vec<u8>,
456    #[prost(string, tag = "5")]
457    pub device_platform: ::prost::alloc::string::String,
458    #[prost(enumeration = "ClientFormFactor", tag = "6")]
459    pub client_form_factor: i32,
460}
461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
462pub struct RegistrationRequest {
463    #[prost(message, optional, tag = "1")]
464    pub auth_request: ::core::option::Option<AuthRequest>,
465    #[prost(message, optional, tag = "2")]
466    pub user_auth_request: ::core::option::Option<UserAuthRequest>,
467    #[prost(bytes = "vec", tag = "3")]
468    pub encrypted_client_key: ::prost::alloc::vec::Vec<u8>,
469    #[prost(bytes = "vec", tag = "4")]
470    pub encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
471    #[prost(bytes = "vec", tag = "5")]
472    pub public_key: ::prost::alloc::vec::Vec<u8>,
473    #[prost(string, tag = "6")]
474    pub verification_code: ::prost::alloc::string::String,
475    #[prost(bytes = "vec", tag = "7")]
476    pub deprecated_auth_hash_hash: ::prost::alloc::vec::Vec<u8>,
477    #[prost(bytes = "vec", tag = "8")]
478    pub deprecated_encrypted_client_key: ::prost::alloc::vec::Vec<u8>,
479    #[prost(bytes = "vec", tag = "9")]
480    pub deprecated_encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
481    #[prost(bytes = "vec", tag = "10")]
482    pub deprecated_encryption_params: ::prost::alloc::vec::Vec<u8>,
483}
484#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
485pub struct ConvertUserToV3Request {
486    #[prost(message, optional, tag = "1")]
487    pub auth_request: ::core::option::Option<AuthRequest>,
488    #[prost(message, optional, tag = "2")]
489    pub user_auth_request: ::core::option::Option<UserAuthRequest>,
490    #[prost(bytes = "vec", tag = "3")]
491    pub encrypted_client_key: ::prost::alloc::vec::Vec<u8>,
492    #[prost(bytes = "vec", tag = "4")]
493    pub encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
494    #[prost(bytes = "vec", tag = "5")]
495    pub public_key: ::prost::alloc::vec::Vec<u8>,
496}
497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
498pub struct RevisionResponse {
499    #[prost(int64, tag = "1")]
500    pub revision: i64,
501}
502#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
503pub struct ChangeEmailRequest {
504    #[prost(string, tag = "1")]
505    pub new_email: ::prost::alloc::string::String,
506}
507#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
508pub struct ChangeEmailResponse {
509    #[prost(bytes = "vec", tag = "1")]
510    pub encrypted_change_email_token: ::prost::alloc::vec::Vec<u8>,
511}
512#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
513pub struct EmailVerificationLinkResponse {
514    #[prost(bool, tag = "1")]
515    pub email_verified: bool,
516}
517#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
518pub struct SecurityData {
519    #[prost(bytes = "vec", tag = "1")]
520    pub uid: ::prost::alloc::vec::Vec<u8>,
521    #[prost(bytes = "vec", tag = "2")]
522    pub data: ::prost::alloc::vec::Vec<u8>,
523}
524#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
525pub struct SecurityScoreData {
526    #[prost(bytes = "vec", tag = "1")]
527    pub uid: ::prost::alloc::vec::Vec<u8>,
528    #[prost(bytes = "vec", tag = "2")]
529    pub data: ::prost::alloc::vec::Vec<u8>,
530    #[prost(int64, tag = "3")]
531    pub revision: i64,
532}
533#[derive(Clone, PartialEq, ::prost::Message)]
534pub struct SecurityDataRequest {
535    #[prost(message, repeated, tag = "1")]
536    pub record_security_data: ::prost::alloc::vec::Vec<SecurityData>,
537    #[prost(message, repeated, tag = "2")]
538    pub master_password_security_data: ::prost::alloc::vec::Vec<SecurityData>,
539    #[prost(enumeration = "super::enterprise::EncryptedKeyType", tag = "3")]
540    pub encryption_type: i32,
541    #[prost(message, repeated, tag = "4")]
542    pub record_security_score_data: ::prost::alloc::vec::Vec<SecurityScoreData>,
543}
544#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
545pub struct SecurityReportIncrementalData {
546    #[prost(int64, tag = "1")]
547    pub enterprise_user_id: i64,
548    #[prost(bytes = "vec", tag = "2")]
549    pub current_security_data: ::prost::alloc::vec::Vec<u8>,
550    #[prost(int64, tag = "3")]
551    pub current_security_data_revision: i64,
552    #[prost(bytes = "vec", tag = "4")]
553    pub old_security_data: ::prost::alloc::vec::Vec<u8>,
554    #[prost(int64, tag = "5")]
555    pub old_security_data_revision: i64,
556    #[prost(enumeration = "super::enterprise::EncryptedKeyType", tag = "6")]
557    pub current_data_encryption_type: i32,
558    #[prost(enumeration = "super::enterprise::EncryptedKeyType", tag = "7")]
559    pub old_data_encryption_type: i32,
560    #[prost(bytes = "vec", tag = "8")]
561    pub record_uid: ::prost::alloc::vec::Vec<u8>,
562}
563#[derive(Clone, PartialEq, ::prost::Message)]
564pub struct SecurityReport {
565    #[prost(int64, tag = "1")]
566    pub enterprise_user_id: i64,
567    #[prost(bytes = "vec", tag = "2")]
568    pub encrypted_report_data: ::prost::alloc::vec::Vec<u8>,
569    #[prost(int64, tag = "3")]
570    pub revision: i64,
571    #[prost(string, tag = "4")]
572    pub two_factor: ::prost::alloc::string::String,
573    #[prost(int64, tag = "5")]
574    pub last_login: i64,
575    #[prost(int32, tag = "6")]
576    pub number_of_reused_password: i32,
577    #[prost(message, repeated, tag = "7")]
578    pub security_report_incremental_data: ::prost::alloc::vec::Vec<SecurityReportIncrementalData>,
579    #[prost(int32, tag = "8")]
580    pub user_id: i32,
581    #[prost(bool, tag = "9")]
582    pub has_old_encryption: bool,
583}
584#[derive(Clone, PartialEq, ::prost::Message)]
585pub struct SecurityReportSaveRequest {
586    #[prost(message, repeated, tag = "1")]
587    pub security_report: ::prost::alloc::vec::Vec<SecurityReport>,
588    #[prost(bytes = "vec", tag = "2")]
589    pub continuation_token: ::prost::alloc::vec::Vec<u8>,
590}
591#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
592pub struct SecurityReportRequest {
593    #[prost(int64, tag = "1")]
594    pub from_page: i64,
595}
596#[derive(Clone, PartialEq, ::prost::Message)]
597pub struct SecurityReportResponse {
598    #[prost(bytes = "vec", tag = "1")]
599    pub enterprise_private_key: ::prost::alloc::vec::Vec<u8>,
600    #[prost(message, repeated, tag = "2")]
601    pub security_report: ::prost::alloc::vec::Vec<SecurityReport>,
602    #[prost(int64, tag = "3")]
603    pub as_of_revision: i64,
604    #[prost(int64, tag = "4")]
605    pub from_page: i64,
606    #[prost(int64, tag = "5")]
607    pub to_page: i64,
608    #[prost(bool, tag = "6")]
609    pub complete: bool,
610    #[prost(bytes = "vec", tag = "7")]
611    pub enterprise_ecc_private_key: ::prost::alloc::vec::Vec<u8>,
612    #[prost(bool, tag = "8")]
613    pub has_incremental_data: bool,
614}
615#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
616pub struct IncrementalSecurityDataRequest {
617    #[prost(bytes = "vec", tag = "1")]
618    pub continuation_token: ::prost::alloc::vec::Vec<u8>,
619}
620#[derive(Clone, PartialEq, ::prost::Message)]
621pub struct IncrementalSecurityDataResponse {
622    #[prost(message, repeated, tag = "1")]
623    pub security_report_incremental_data: ::prost::alloc::vec::Vec<SecurityReportIncrementalData>,
624    #[prost(bytes = "vec", tag = "2")]
625    pub continuation_token: ::prost::alloc::vec::Vec<u8>,
626}
627#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
628pub struct ReusedPasswordsRequest {
629    #[prost(int32, tag = "1")]
630    pub count: i32,
631}
632#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
633pub struct SummaryConsoleReport {
634    #[prost(int32, tag = "1")]
635    pub report_type: i32,
636    #[prost(bytes = "vec", tag = "2")]
637    pub report_data: ::prost::alloc::vec::Vec<u8>,
638}
639#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
640pub struct ChangeToKeyTypeOne {
641    #[prost(enumeration = "ObjectTypes", tag = "1")]
642    pub object_type: i32,
643    #[prost(bytes = "vec", tag = "2")]
644    pub primary_uid: ::prost::alloc::vec::Vec<u8>,
645    #[prost(bytes = "vec", tag = "3")]
646    pub secondary_uid: ::prost::alloc::vec::Vec<u8>,
647    #[prost(bytes = "vec", tag = "4")]
648    pub key: ::prost::alloc::vec::Vec<u8>,
649}
650#[derive(Clone, PartialEq, ::prost::Message)]
651pub struct ChangeToKeyTypeOneRequest {
652    #[prost(message, repeated, tag = "1")]
653    pub change_to_key_type_one: ::prost::alloc::vec::Vec<ChangeToKeyTypeOne>,
654}
655#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
656pub struct ChangeToKeyTypeOneStatus {
657    #[prost(bytes = "vec", tag = "1")]
658    pub uid: ::prost::alloc::vec::Vec<u8>,
659    #[prost(string, tag = "2")]
660    pub r#type: ::prost::alloc::string::String,
661    #[prost(string, tag = "3")]
662    pub status: ::prost::alloc::string::String,
663    #[prost(string, tag = "4")]
664    pub reason: ::prost::alloc::string::String,
665}
666#[derive(Clone, PartialEq, ::prost::Message)]
667pub struct ChangeToKeyTypeOneResponse {
668    #[prost(message, repeated, tag = "1")]
669    pub change_to_key_type_one_status: ::prost::alloc::vec::Vec<ChangeToKeyTypeOneStatus>,
670}
671#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
672pub struct GetChangeKeyTypesRequest {
673    #[prost(enumeration = "EncryptedObjectType", repeated, tag = "1")]
674    pub only_these_objects: ::prost::alloc::vec::Vec<i32>,
675    #[prost(int32, tag = "2")]
676    pub limit: i32,
677    #[prost(bool, tag = "3")]
678    pub include_recommended: bool,
679    #[prost(bool, tag = "4")]
680    pub include_keys: bool,
681    #[prost(bool, tag = "5")]
682    pub include_allowed_key_types: bool,
683}
684#[derive(Clone, PartialEq, ::prost::Message)]
685pub struct GetChangeKeyTypesResponse {
686    #[prost(message, repeated, tag = "1")]
687    pub keys: ::prost::alloc::vec::Vec<ChangeKeyType>,
688    #[prost(message, repeated, tag = "2")]
689    pub allowed_key_types: ::prost::alloc::vec::Vec<AllowedKeyTypes>,
690}
691#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
692pub struct AllowedKeyTypes {
693    #[prost(enumeration = "EncryptedObjectType", tag = "1")]
694    pub object_type: i32,
695    #[prost(
696        enumeration = "super::enterprise::EncryptedKeyType",
697        repeated,
698        tag = "2"
699    )]
700    pub allowed_key_types: ::prost::alloc::vec::Vec<i32>,
701}
702#[derive(Clone, PartialEq, ::prost::Message)]
703pub struct ChangeKeyTypes {
704    #[prost(message, repeated, tag = "1")]
705    pub keys: ::prost::alloc::vec::Vec<ChangeKeyType>,
706}
707#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
708pub struct ChangeKeyType {
709    #[prost(enumeration = "EncryptedObjectType", tag = "1")]
710    pub object_type: i32,
711    #[prost(bytes = "vec", tag = "2")]
712    pub uid: ::prost::alloc::vec::Vec<u8>,
713    #[prost(bytes = "vec", tag = "3")]
714    pub secondary_uid: ::prost::alloc::vec::Vec<u8>,
715    #[prost(bytes = "vec", tag = "4")]
716    pub key: ::prost::alloc::vec::Vec<u8>,
717    #[prost(enumeration = "super::enterprise::EncryptedKeyType", tag = "5")]
718    pub key_type: i32,
719    #[prost(enumeration = "GenericStatus", tag = "6")]
720    pub status: i32,
721}
722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
723pub struct SetKey {
724    #[prost(int64, tag = "1")]
725    pub id: i64,
726    #[prost(bytes = "vec", tag = "2")]
727    pub key: ::prost::alloc::vec::Vec<u8>,
728}
729#[derive(Clone, PartialEq, ::prost::Message)]
730pub struct SetKeyRequest {
731    #[prost(message, repeated, tag = "1")]
732    pub keys: ::prost::alloc::vec::Vec<SetKey>,
733}
734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
735pub struct CreateUserRequest {
736    #[prost(string, tag = "1")]
737    pub username: ::prost::alloc::string::String,
738    #[prost(bytes = "vec", tag = "2")]
739    pub auth_verifier: ::prost::alloc::vec::Vec<u8>,
740    #[prost(bytes = "vec", tag = "3")]
741    pub encryption_params: ::prost::alloc::vec::Vec<u8>,
742    #[prost(bytes = "vec", tag = "4")]
743    pub rsa_public_key: ::prost::alloc::vec::Vec<u8>,
744    #[prost(bytes = "vec", tag = "5")]
745    pub rsa_encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
746    #[prost(bytes = "vec", tag = "6")]
747    pub ecc_public_key: ::prost::alloc::vec::Vec<u8>,
748    #[prost(bytes = "vec", tag = "7")]
749    pub ecc_encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
750    #[prost(bytes = "vec", tag = "8")]
751    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
752    #[prost(bytes = "vec", tag = "9")]
753    pub encrypted_client_key: ::prost::alloc::vec::Vec<u8>,
754    #[prost(string, tag = "10")]
755    pub client_version: ::prost::alloc::string::String,
756    #[prost(bytes = "vec", tag = "11")]
757    pub encrypted_device_data_key: ::prost::alloc::vec::Vec<u8>,
758    #[prost(bytes = "vec", tag = "12")]
759    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
760    #[prost(bytes = "vec", tag = "13")]
761    pub message_session_uid: ::prost::alloc::vec::Vec<u8>,
762    #[prost(string, tag = "14")]
763    pub install_referrer: ::prost::alloc::string::String,
764    #[prost(int32, tag = "15")]
765    pub mcc_mnc: i32,
766    #[prost(string, tag = "16")]
767    pub mfg: ::prost::alloc::string::String,
768    #[prost(string, tag = "17")]
769    pub model: ::prost::alloc::string::String,
770    #[prost(string, tag = "18")]
771    pub brand: ::prost::alloc::string::String,
772    #[prost(string, tag = "19")]
773    pub product: ::prost::alloc::string::String,
774    #[prost(string, tag = "20")]
775    pub device: ::prost::alloc::string::String,
776    #[prost(string, tag = "21")]
777    pub carrier: ::prost::alloc::string::String,
778    #[prost(string, tag = "22")]
779    pub verification_code: ::prost::alloc::string::String,
780    #[prost(message, optional, tag = "23")]
781    pub enterprise_registration: ::core::option::Option<super::enterprise::EnterpriseRegistration>,
782    #[prost(bytes = "vec", tag = "24")]
783    pub encrypted_verification_token: ::prost::alloc::vec::Vec<u8>,
784    #[prost(bytes = "vec", tag = "25")]
785    pub enterprise_users_data_key: ::prost::alloc::vec::Vec<u8>,
786}
787#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
788pub struct NodeEnforcementAddOrUpdateRequest {
789    #[prost(int64, tag = "1")]
790    pub node_id: i64,
791    #[prost(string, tag = "2")]
792    pub enforcement: ::prost::alloc::string::String,
793    #[prost(string, tag = "3")]
794    pub value: ::prost::alloc::string::String,
795}
796#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
797pub struct NodeEnforcementRemoveRequest {
798    #[prost(int64, tag = "1")]
799    pub node_id: i64,
800    #[prost(string, tag = "2")]
801    pub enforcement: ::prost::alloc::string::String,
802}
803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
804pub struct ApiRequestByKey {
805    #[prost(int32, tag = "1")]
806    pub key_id: i32,
807    #[prost(bytes = "vec", tag = "2")]
808    pub payload: ::prost::alloc::vec::Vec<u8>,
809    #[prost(string, tag = "3")]
810    pub username: ::prost::alloc::string::String,
811    #[prost(string, tag = "4")]
812    pub locale: ::prost::alloc::string::String,
813    #[prost(enumeration = "SupportedLanguage", tag = "5")]
814    pub supported_language: i32,
815    #[prost(int32, tag = "6")]
816    pub r#type: i32,
817}
818#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
819pub struct ApiRequestByKAtoKaKey {
820    #[prost(enumeration = "Region", tag = "1")]
821    pub source_region: i32,
822    #[prost(bytes = "vec", tag = "2")]
823    pub payload: ::prost::alloc::vec::Vec<u8>,
824    #[prost(enumeration = "SupportedLanguage", tag = "3")]
825    pub supported_language: i32,
826    #[prost(enumeration = "Region", tag = "4")]
827    pub destination_region: i32,
828}
829#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
830pub struct MemcacheRequest {
831    #[prost(string, tag = "1")]
832    pub key: ::prost::alloc::string::String,
833    #[prost(int32, tag = "2")]
834    pub user_id: i32,
835}
836#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
837pub struct MemcacheResponse {
838    #[prost(string, tag = "1")]
839    pub key: ::prost::alloc::string::String,
840    #[prost(string, tag = "2")]
841    pub value: ::prost::alloc::string::String,
842}
843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
844pub struct MasterPasswordReentryRequest {
845    #[prost(string, tag = "1")]
846    pub pbkdf2_password: ::prost::alloc::string::String,
847    #[prost(enumeration = "MasterPasswordReentryActionType", tag = "2")]
848    pub action: i32,
849}
850#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
851pub struct MasterPasswordReentryResponse {
852    #[prost(enumeration = "MasterPasswordReentryStatus", tag = "1")]
853    pub status: i32,
854}
855#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
856pub struct DeviceRegistrationRequest {
857    #[prost(string, tag = "1")]
858    pub client_version: ::prost::alloc::string::String,
859    #[prost(string, tag = "2")]
860    pub device_name: ::prost::alloc::string::String,
861    #[prost(bytes = "vec", tag = "3")]
862    pub device_public_key: ::prost::alloc::vec::Vec<u8>,
863    #[prost(string, tag = "4")]
864    pub device_platform: ::prost::alloc::string::String,
865    #[prost(enumeration = "ClientFormFactor", tag = "5")]
866    pub client_form_factor: i32,
867}
868#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
869pub struct DeviceVerificationRequest {
870    #[prost(bytes = "vec", tag = "1")]
871    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
872    #[prost(string, tag = "2")]
873    pub username: ::prost::alloc::string::String,
874    #[prost(string, tag = "3")]
875    pub verification_channel: ::prost::alloc::string::String,
876    #[prost(bytes = "vec", tag = "4")]
877    pub message_session_uid: ::prost::alloc::vec::Vec<u8>,
878    #[prost(string, tag = "5")]
879    pub client_version: ::prost::alloc::string::String,
880}
881#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
882pub struct DeviceVerificationResponse {
883    #[prost(bytes = "vec", tag = "1")]
884    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
885    #[prost(string, tag = "2")]
886    pub username: ::prost::alloc::string::String,
887    #[prost(bytes = "vec", tag = "3")]
888    pub message_session_uid: ::prost::alloc::vec::Vec<u8>,
889    #[prost(string, tag = "4")]
890    pub client_version: ::prost::alloc::string::String,
891    #[prost(enumeration = "DeviceStatus", tag = "5")]
892    pub device_status: i32,
893}
894#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
895pub struct DeviceApprovalRequest {
896    #[prost(string, tag = "1")]
897    pub email: ::prost::alloc::string::String,
898    #[prost(string, tag = "2")]
899    pub two_factor_channel: ::prost::alloc::string::String,
900    #[prost(string, tag = "3")]
901    pub client_version: ::prost::alloc::string::String,
902    #[prost(string, tag = "4")]
903    pub locale: ::prost::alloc::string::String,
904    #[prost(bytes = "vec", tag = "5")]
905    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
906    #[prost(string, tag = "6")]
907    pub totp_code: ::prost::alloc::string::String,
908    #[prost(string, tag = "7")]
909    pub device_ip: ::prost::alloc::string::String,
910    #[prost(string, tag = "8")]
911    pub device_token_expire_days: ::prost::alloc::string::String,
912}
913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
914pub struct DeviceApprovalResponse {
915    #[prost(bytes = "vec", tag = "1")]
916    pub encrypted_two_factor_token: ::prost::alloc::vec::Vec<u8>,
917}
918#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
919pub struct ApproveDeviceRequest {
920    #[prost(bytes = "vec", tag = "1")]
921    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
922    #[prost(bytes = "vec", tag = "2")]
923    pub encrypted_device_data_key: ::prost::alloc::vec::Vec<u8>,
924    #[prost(bool, tag = "3")]
925    pub deny_approval: bool,
926    #[prost(bool, tag = "4")]
927    pub link_device: bool,
928}
929#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
930pub struct EnterpriseUserAliasRequest {
931    #[prost(int64, tag = "1")]
932    pub enterprise_user_id: i64,
933    #[prost(string, tag = "2")]
934    pub alias: ::prost::alloc::string::String,
935}
936#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
937pub struct EnterpriseUserAddAliasRequest {
938    #[prost(int64, tag = "1")]
939    pub enterprise_user_id: i64,
940    #[prost(string, tag = "2")]
941    pub alias: ::prost::alloc::string::String,
942    #[prost(bool, tag = "3")]
943    pub primary: bool,
944}
945#[derive(Clone, PartialEq, ::prost::Message)]
946pub struct EnterpriseUserAddAliasRequestV2 {
947    #[prost(message, repeated, tag = "1")]
948    pub enterprise_user_add_alias_request: ::prost::alloc::vec::Vec<EnterpriseUserAddAliasRequest>,
949}
950#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
951pub struct EnterpriseUserAddAliasStatus {
952    #[prost(int64, tag = "1")]
953    pub enterprise_user_id: i64,
954    #[prost(string, tag = "2")]
955    pub status: ::prost::alloc::string::String,
956}
957#[derive(Clone, PartialEq, ::prost::Message)]
958pub struct EnterpriseUserAddAliasResponse {
959    #[prost(message, repeated, tag = "1")]
960    pub status: ::prost::alloc::vec::Vec<EnterpriseUserAddAliasStatus>,
961}
962#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
963pub struct Device {
964    #[prost(bytes = "vec", tag = "1")]
965    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
966}
967#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
968pub struct RegisterDeviceDataKeyRequest {
969    #[prost(bytes = "vec", tag = "1")]
970    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
971    #[prost(bytes = "vec", tag = "2")]
972    pub encrypted_device_data_key: ::prost::alloc::vec::Vec<u8>,
973}
974#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
975pub struct ValidateCreateUserVerificationCodeRequest {
976    #[prost(string, tag = "1")]
977    pub username: ::prost::alloc::string::String,
978    #[prost(string, tag = "2")]
979    pub client_version: ::prost::alloc::string::String,
980    #[prost(string, tag = "3")]
981    pub verification_code: ::prost::alloc::string::String,
982}
983#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
984pub struct ValidateDeviceVerificationCodeRequest {
985    #[prost(string, tag = "1")]
986    pub username: ::prost::alloc::string::String,
987    #[prost(string, tag = "2")]
988    pub client_version: ::prost::alloc::string::String,
989    #[prost(string, tag = "3")]
990    pub verification_code: ::prost::alloc::string::String,
991    #[prost(bytes = "vec", tag = "4")]
992    pub message_session_uid: ::prost::alloc::vec::Vec<u8>,
993    #[prost(bytes = "vec", tag = "5")]
994    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
995}
996#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
997pub struct SendSessionMessageRequest {
998    #[prost(bytes = "vec", tag = "1")]
999    pub message_session_uid: ::prost::alloc::vec::Vec<u8>,
1000    #[prost(string, tag = "2")]
1001    pub command: ::prost::alloc::string::String,
1002    #[prost(string, tag = "3")]
1003    pub username: ::prost::alloc::string::String,
1004}
1005#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1006pub struct GlobalUserAccount {
1007    #[prost(string, tag = "1")]
1008    pub username: ::prost::alloc::string::String,
1009    #[prost(bytes = "vec", tag = "2")]
1010    pub account_uid: ::prost::alloc::vec::Vec<u8>,
1011    #[prost(string, tag = "3")]
1012    pub region_name: ::prost::alloc::string::String,
1013}
1014#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1015pub struct AccountUsername {
1016    #[prost(string, tag = "1")]
1017    pub username: ::prost::alloc::string::String,
1018    #[prost(string, tag = "2")]
1019    pub date_active: ::prost::alloc::string::String,
1020}
1021#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1022pub struct SsoServiceProviderRequest {
1023    #[prost(string, tag = "1")]
1024    pub name: ::prost::alloc::string::String,
1025    #[prost(string, tag = "2")]
1026    pub client_version: ::prost::alloc::string::String,
1027    #[prost(string, tag = "3")]
1028    pub locale: ::prost::alloc::string::String,
1029}
1030#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1031pub struct SsoServiceProviderResponse {
1032    #[prost(string, tag = "1")]
1033    pub name: ::prost::alloc::string::String,
1034    #[prost(string, tag = "2")]
1035    pub sp_url: ::prost::alloc::string::String,
1036    #[prost(bool, tag = "3")]
1037    pub is_cloud: bool,
1038    #[prost(string, tag = "4")]
1039    pub client_version: ::prost::alloc::string::String,
1040}
1041#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1042pub struct UserSettingRequest {
1043    #[prost(string, tag = "1")]
1044    pub setting: ::prost::alloc::string::String,
1045    #[prost(string, tag = "2")]
1046    pub value: ::prost::alloc::string::String,
1047}
1048#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1049pub struct ThrottleState {
1050    #[prost(enumeration = "ThrottleType", tag = "1")]
1051    pub r#type: i32,
1052    #[prost(string, tag = "2")]
1053    pub key: ::prost::alloc::string::String,
1054    #[prost(string, tag = "3")]
1055    pub value: ::prost::alloc::string::String,
1056    #[prost(bool, tag = "4")]
1057    pub state: bool,
1058}
1059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1060pub struct ThrottleState2 {
1061    #[prost(string, tag = "1")]
1062    pub key: ::prost::alloc::string::String,
1063    #[prost(string, tag = "2")]
1064    pub key_description: ::prost::alloc::string::String,
1065    #[prost(string, tag = "3")]
1066    pub value: ::prost::alloc::string::String,
1067    #[prost(string, tag = "4")]
1068    pub value_description: ::prost::alloc::string::String,
1069    #[prost(string, tag = "5")]
1070    pub identifier: ::prost::alloc::string::String,
1071    #[prost(bool, tag = "6")]
1072    pub locked: bool,
1073    #[prost(bool, tag = "7")]
1074    pub included_in_all_clear: bool,
1075    #[prost(int32, tag = "8")]
1076    pub expire_seconds: i32,
1077}
1078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1079pub struct DeviceInformation {
1080    #[prost(int64, tag = "1")]
1081    pub device_id: i64,
1082    #[prost(string, tag = "2")]
1083    pub device_name: ::prost::alloc::string::String,
1084    #[prost(string, tag = "3")]
1085    pub client_version: ::prost::alloc::string::String,
1086    #[prost(int64, tag = "4")]
1087    pub last_login: i64,
1088    #[prost(enumeration = "DeviceStatus", tag = "5")]
1089    pub device_status: i32,
1090}
1091#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1092pub struct UserSetting {
1093    #[prost(string, tag = "1")]
1094    pub name: ::prost::alloc::string::String,
1095    #[prost(bool, tag = "2")]
1096    pub value: bool,
1097}
1098#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1099pub struct UserDataKeyRequest {
1100    #[prost(int64, repeated, tag = "1")]
1101    pub enterprise_user_id: ::prost::alloc::vec::Vec<i64>,
1102}
1103#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1104pub struct UserDataKeyByNodeRequest {
1105    #[prost(int64, repeated, tag = "1")]
1106    pub node_ids: ::prost::alloc::vec::Vec<i64>,
1107}
1108#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1109pub struct EnterpriseUserIdDataKeyPair {
1110    #[prost(int64, tag = "1")]
1111    pub enterprise_user_id: i64,
1112    #[prost(bytes = "vec", tag = "2")]
1113    pub encrypted_data_key: ::prost::alloc::vec::Vec<u8>,
1114    #[prost(enumeration = "super::enterprise::EncryptedKeyType", tag = "3")]
1115    pub key_type: i32,
1116}
1117#[derive(Clone, PartialEq, ::prost::Message)]
1118pub struct UserDataKey {
1119    #[prost(int64, tag = "1")]
1120    pub role_id: i64,
1121    #[prost(bytes = "vec", tag = "2")]
1122    pub role_key: ::prost::alloc::vec::Vec<u8>,
1123    #[prost(string, tag = "3")]
1124    pub private_key: ::prost::alloc::string::String,
1125    #[prost(message, repeated, tag = "4")]
1126    pub enterprise_user_id_data_key_pairs: ::prost::alloc::vec::Vec<EnterpriseUserIdDataKeyPair>,
1127}
1128#[derive(Clone, PartialEq, ::prost::Message)]
1129pub struct UserDataKeyResponse {
1130    #[prost(message, repeated, tag = "1")]
1131    pub user_data_keys: ::prost::alloc::vec::Vec<UserDataKey>,
1132    #[prost(int64, repeated, tag = "2")]
1133    pub access_denied: ::prost::alloc::vec::Vec<i64>,
1134    #[prost(int64, repeated, tag = "3")]
1135    pub no_encrypted_data_key: ::prost::alloc::vec::Vec<i64>,
1136}
1137#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1138pub struct MasterPasswordRecoveryVerificationRequest {
1139    #[prost(bytes = "vec", tag = "1")]
1140    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
1141}
1142#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1143pub struct GetSecurityQuestionV3Request {
1144    #[prost(bytes = "vec", tag = "1")]
1145    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
1146    #[prost(string, tag = "2")]
1147    pub verification_code: ::prost::alloc::string::String,
1148}
1149#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1150pub struct GetSecurityQuestionV3Response {
1151    #[prost(string, tag = "1")]
1152    pub security_question: ::prost::alloc::string::String,
1153    #[prost(int64, tag = "2")]
1154    pub backup_key_date: i64,
1155    #[prost(bytes = "vec", tag = "3")]
1156    pub salt: ::prost::alloc::vec::Vec<u8>,
1157    #[prost(int32, tag = "4")]
1158    pub iterations: i32,
1159}
1160#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1161pub struct GetDataKeyBackupV3Request {
1162    #[prost(bytes = "vec", tag = "1")]
1163    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
1164    #[prost(string, tag = "2")]
1165    pub verification_code: ::prost::alloc::string::String,
1166    #[prost(bytes = "vec", tag = "3")]
1167    pub security_answer_hash: ::prost::alloc::vec::Vec<u8>,
1168}
1169#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1170pub struct PasswordRules {
1171    #[prost(string, tag = "1")]
1172    pub rule_type: ::prost::alloc::string::String,
1173    #[prost(bool, tag = "2")]
1174    pub r#match: bool,
1175    #[prost(string, tag = "3")]
1176    pub pattern: ::prost::alloc::string::String,
1177    #[prost(string, tag = "4")]
1178    pub description: ::prost::alloc::string::String,
1179    #[prost(int32, tag = "5")]
1180    pub minimum: i32,
1181    #[prost(string, tag = "6")]
1182    pub value: ::prost::alloc::string::String,
1183}
1184#[derive(Clone, PartialEq, ::prost::Message)]
1185pub struct GetDataKeyBackupV3Response {
1186    #[prost(bytes = "vec", tag = "1")]
1187    pub data_key_backup: ::prost::alloc::vec::Vec<u8>,
1188    #[prost(int64, tag = "2")]
1189    pub data_key_backup_date: i64,
1190    #[prost(bytes = "vec", tag = "3")]
1191    pub public_key: ::prost::alloc::vec::Vec<u8>,
1192    #[prost(bytes = "vec", tag = "4")]
1193    pub encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
1194    #[prost(bytes = "vec", tag = "5")]
1195    pub client_key: ::prost::alloc::vec::Vec<u8>,
1196    #[prost(bytes = "vec", tag = "6")]
1197    pub encrypted_session_token: ::prost::alloc::vec::Vec<u8>,
1198    #[prost(message, repeated, tag = "7")]
1199    pub password_rules: ::prost::alloc::vec::Vec<PasswordRules>,
1200    #[prost(string, tag = "8")]
1201    pub password_rules_intro: ::prost::alloc::string::String,
1202    #[prost(int32, tag = "9")]
1203    pub minimum_pbkdf2_iterations: i32,
1204    #[prost(enumeration = "super::enterprise::KeyType", tag = "10")]
1205    pub key_type: i32,
1206}
1207#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1208pub struct GetPublicKeysRequest {
1209    #[prost(string, repeated, tag = "1")]
1210    pub usernames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1211}
1212#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1213pub struct PublicKeyResponse {
1214    #[prost(string, tag = "1")]
1215    pub username: ::prost::alloc::string::String,
1216    #[prost(bytes = "vec", tag = "2")]
1217    pub public_key: ::prost::alloc::vec::Vec<u8>,
1218    #[prost(bytes = "vec", tag = "3")]
1219    pub public_ecc_key: ::prost::alloc::vec::Vec<u8>,
1220    #[prost(string, tag = "4")]
1221    pub message: ::prost::alloc::string::String,
1222    #[prost(string, tag = "5")]
1223    pub error_code: ::prost::alloc::string::String,
1224}
1225#[derive(Clone, PartialEq, ::prost::Message)]
1226pub struct GetPublicKeysResponse {
1227    #[prost(message, repeated, tag = "1")]
1228    pub key_responses: ::prost::alloc::vec::Vec<PublicKeyResponse>,
1229}
1230#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1231pub struct SetEccKeyPairRequest {
1232    #[prost(bytes = "vec", tag = "1")]
1233    pub public_key: ::prost::alloc::vec::Vec<u8>,
1234    #[prost(bytes = "vec", tag = "2")]
1235    pub encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
1236}
1237#[derive(Clone, PartialEq, ::prost::Message)]
1238pub struct SetEccKeyPairsRequest {
1239    #[prost(message, repeated, tag = "1")]
1240    pub team_keys: ::prost::alloc::vec::Vec<TeamEccKeyPair>,
1241}
1242#[derive(Clone, PartialEq, ::prost::Message)]
1243pub struct SetEccKeyPairsResponse {
1244    #[prost(message, repeated, tag = "1")]
1245    pub team_keys: ::prost::alloc::vec::Vec<TeamEccKeyPairResponse>,
1246}
1247#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1248pub struct TeamEccKeyPair {
1249    #[prost(bytes = "vec", tag = "1")]
1250    pub team_uid: ::prost::alloc::vec::Vec<u8>,
1251    #[prost(bytes = "vec", tag = "2")]
1252    pub public_key: ::prost::alloc::vec::Vec<u8>,
1253    #[prost(bytes = "vec", tag = "3")]
1254    pub encrypted_private_key: ::prost::alloc::vec::Vec<u8>,
1255}
1256#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1257pub struct TeamEccKeyPairResponse {
1258    #[prost(bytes = "vec", tag = "1")]
1259    pub team_uid: ::prost::alloc::vec::Vec<u8>,
1260    #[prost(enumeration = "GenericStatus", tag = "2")]
1261    pub status: i32,
1262}
1263#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1264pub struct GetKsmPublicKeysRequest {
1265    #[prost(bytes = "vec", repeated, tag = "1")]
1266    pub client_ids: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1267    #[prost(bytes = "vec", repeated, tag = "2")]
1268    pub controller_uids: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1269}
1270#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1271pub struct DevicePublicKeyResponse {
1272    #[prost(bytes = "vec", tag = "1")]
1273    pub client_id: ::prost::alloc::vec::Vec<u8>,
1274    #[prost(bytes = "vec", tag = "2")]
1275    pub public_key: ::prost::alloc::vec::Vec<u8>,
1276    #[prost(bytes = "vec", tag = "3")]
1277    pub controller_uid: ::prost::alloc::vec::Vec<u8>,
1278}
1279#[derive(Clone, PartialEq, ::prost::Message)]
1280pub struct GetKsmPublicKeysResponse {
1281    #[prost(message, repeated, tag = "1")]
1282    pub key_responses: ::prost::alloc::vec::Vec<DevicePublicKeyResponse>,
1283}
1284#[derive(Clone, PartialEq, ::prost::Message)]
1285pub struct AddAppSharesRequest {
1286    #[prost(bytes = "vec", tag = "1")]
1287    pub app_record_uid: ::prost::alloc::vec::Vec<u8>,
1288    #[prost(message, repeated, tag = "2")]
1289    pub shares: ::prost::alloc::vec::Vec<AppShareAdd>,
1290}
1291#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1292pub struct RemoveAppSharesRequest {
1293    #[prost(bytes = "vec", tag = "1")]
1294    pub app_record_uid: ::prost::alloc::vec::Vec<u8>,
1295    #[prost(bytes = "vec", repeated, tag = "2")]
1296    pub shares: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1297}
1298#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1299pub struct AppShareAdd {
1300    #[prost(bytes = "vec", tag = "2")]
1301    pub secret_uid: ::prost::alloc::vec::Vec<u8>,
1302    #[prost(enumeration = "ApplicationShareType", tag = "3")]
1303    pub share_type: i32,
1304    #[prost(bytes = "vec", tag = "4")]
1305    pub encrypted_secret_key: ::prost::alloc::vec::Vec<u8>,
1306    #[prost(bool, tag = "5")]
1307    pub editable: bool,
1308}
1309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1310pub struct AppShare {
1311    #[prost(bytes = "vec", tag = "1")]
1312    pub secret_uid: ::prost::alloc::vec::Vec<u8>,
1313    #[prost(enumeration = "ApplicationShareType", tag = "2")]
1314    pub share_type: i32,
1315    #[prost(bool, tag = "3")]
1316    pub editable: bool,
1317    #[prost(int64, tag = "4")]
1318    pub created_on: i64,
1319    #[prost(bytes = "vec", tag = "5")]
1320    pub data: ::prost::alloc::vec::Vec<u8>,
1321}
1322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1323pub struct AddAppClientRequest {
1324    #[prost(bytes = "vec", tag = "1")]
1325    pub app_record_uid: ::prost::alloc::vec::Vec<u8>,
1326    #[prost(bytes = "vec", tag = "2")]
1327    pub encrypted_app_key: ::prost::alloc::vec::Vec<u8>,
1328    #[prost(bytes = "vec", tag = "3")]
1329    pub client_id: ::prost::alloc::vec::Vec<u8>,
1330    #[prost(bool, tag = "4")]
1331    pub lock_ip: bool,
1332    #[prost(int64, tag = "5")]
1333    pub first_access_expire_on: i64,
1334    #[prost(int64, tag = "6")]
1335    pub access_expire_on: i64,
1336    #[prost(string, tag = "7")]
1337    pub id: ::prost::alloc::string::String,
1338    #[prost(enumeration = "super::enterprise::AppClientType", tag = "8")]
1339    pub app_client_type: i32,
1340}
1341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1342pub struct RemoveAppClientsRequest {
1343    #[prost(bytes = "vec", tag = "1")]
1344    pub app_record_uid: ::prost::alloc::vec::Vec<u8>,
1345    #[prost(bytes = "vec", repeated, tag = "2")]
1346    pub clients: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1347}
1348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1349pub struct AddExternalShareRequest {
1350    #[prost(bytes = "vec", tag = "1")]
1351    pub record_uid: ::prost::alloc::vec::Vec<u8>,
1352    #[prost(bytes = "vec", tag = "2")]
1353    pub encrypted_record_key: ::prost::alloc::vec::Vec<u8>,
1354    #[prost(bytes = "vec", tag = "3")]
1355    pub client_id: ::prost::alloc::vec::Vec<u8>,
1356    #[prost(int64, tag = "4")]
1357    pub access_expire_on: i64,
1358    #[prost(string, tag = "5")]
1359    pub id: ::prost::alloc::string::String,
1360    #[prost(bool, tag = "6")]
1361    pub is_self_destruct: bool,
1362    #[prost(bool, tag = "7")]
1363    pub is_editable: bool,
1364}
1365#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1366pub struct AppClient {
1367    #[prost(string, tag = "1")]
1368    pub id: ::prost::alloc::string::String,
1369    #[prost(bytes = "vec", tag = "2")]
1370    pub client_id: ::prost::alloc::vec::Vec<u8>,
1371    #[prost(int64, tag = "3")]
1372    pub created_on: i64,
1373    #[prost(int64, tag = "4")]
1374    pub first_access: i64,
1375    #[prost(int64, tag = "5")]
1376    pub last_access: i64,
1377    #[prost(bytes = "vec", tag = "6")]
1378    pub public_key: ::prost::alloc::vec::Vec<u8>,
1379    #[prost(bool, tag = "7")]
1380    pub lock_ip: bool,
1381    #[prost(string, tag = "8")]
1382    pub ip_address: ::prost::alloc::string::String,
1383    #[prost(int64, tag = "9")]
1384    pub first_access_expire_on: i64,
1385    #[prost(int64, tag = "10")]
1386    pub access_expire_on: i64,
1387    #[prost(enumeration = "super::enterprise::AppClientType", tag = "11")]
1388    pub app_client_type: i32,
1389    #[prost(bool, tag = "12")]
1390    pub can_edit: bool,
1391}
1392#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1393pub struct GetAppInfoRequest {
1394    #[prost(bytes = "vec", repeated, tag = "1")]
1395    pub app_record_uid: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1396}
1397#[derive(Clone, PartialEq, ::prost::Message)]
1398pub struct AppInfo {
1399    #[prost(bytes = "vec", tag = "1")]
1400    pub app_record_uid: ::prost::alloc::vec::Vec<u8>,
1401    #[prost(message, repeated, tag = "2")]
1402    pub shares: ::prost::alloc::vec::Vec<AppShare>,
1403    #[prost(message, repeated, tag = "3")]
1404    pub clients: ::prost::alloc::vec::Vec<AppClient>,
1405    #[prost(bool, tag = "4")]
1406    pub is_external_share: bool,
1407}
1408#[derive(Clone, PartialEq, ::prost::Message)]
1409pub struct GetAppInfoResponse {
1410    #[prost(message, repeated, tag = "1")]
1411    pub app_info: ::prost::alloc::vec::Vec<AppInfo>,
1412}
1413#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1414pub struct ApplicationSummary {
1415    #[prost(bytes = "vec", tag = "1")]
1416    pub app_record_uid: ::prost::alloc::vec::Vec<u8>,
1417    #[prost(int64, tag = "2")]
1418    pub last_access: i64,
1419    #[prost(int32, tag = "3")]
1420    pub record_shares: i32,
1421    #[prost(int32, tag = "4")]
1422    pub folder_shares: i32,
1423    #[prost(int32, tag = "5")]
1424    pub folder_records: i32,
1425    #[prost(int32, tag = "6")]
1426    pub client_count: i32,
1427    #[prost(int32, tag = "7")]
1428    pub expired_client_count: i32,
1429    #[prost(string, tag = "8")]
1430    pub username: ::prost::alloc::string::String,
1431    #[prost(bytes = "vec", tag = "9")]
1432    pub app_data: ::prost::alloc::vec::Vec<u8>,
1433}
1434#[derive(Clone, PartialEq, ::prost::Message)]
1435pub struct GetApplicationsSummaryResponse {
1436    #[prost(message, repeated, tag = "1")]
1437    pub application_summary: ::prost::alloc::vec::Vec<ApplicationSummary>,
1438}
1439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1440pub struct GetVerificationTokenRequest {
1441    #[prost(string, tag = "1")]
1442    pub username: ::prost::alloc::string::String,
1443}
1444#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1445pub struct GetVerificationTokenResponse {
1446    #[prost(bytes = "vec", tag = "1")]
1447    pub encrypted_verification_token: ::prost::alloc::vec::Vec<u8>,
1448}
1449#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1450pub struct SendShareInviteRequest {
1451    #[prost(string, tag = "1")]
1452    pub email: ::prost::alloc::string::String,
1453}
1454#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1455pub struct TimeLimitedAccessRequest {
1456    #[prost(bytes = "vec", repeated, tag = "1")]
1457    pub account_uid: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1458    #[prost(bytes = "vec", repeated, tag = "2")]
1459    pub team_uid: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1460    #[prost(bytes = "vec", repeated, tag = "3")]
1461    pub record_uid: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1462    #[prost(bytes = "vec", tag = "4")]
1463    pub shared_object_uid: ::prost::alloc::vec::Vec<u8>,
1464    #[prost(enumeration = "TimeLimitedAccessType", tag = "5")]
1465    pub time_limited_access_type: i32,
1466    #[prost(int64, tag = "6")]
1467    pub expiration: i64,
1468}
1469#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1470pub struct TimeLimitedAccessStatus {
1471    #[prost(bytes = "vec", tag = "1")]
1472    pub uid: ::prost::alloc::vec::Vec<u8>,
1473    #[prost(string, tag = "2")]
1474    pub message: ::prost::alloc::string::String,
1475}
1476#[derive(Clone, PartialEq, ::prost::Message)]
1477pub struct TimeLimitedAccessResponse {
1478    #[prost(int64, tag = "1")]
1479    pub revision: i64,
1480    #[prost(message, repeated, tag = "2")]
1481    pub user_access_status: ::prost::alloc::vec::Vec<TimeLimitedAccessStatus>,
1482    #[prost(message, repeated, tag = "3")]
1483    pub team_access_status: ::prost::alloc::vec::Vec<TimeLimitedAccessStatus>,
1484    #[prost(message, repeated, tag = "4")]
1485    pub record_access_status: ::prost::alloc::vec::Vec<TimeLimitedAccessStatus>,
1486}
1487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1488pub struct RequestDownloadRequest {
1489    #[prost(string, repeated, tag = "1")]
1490    pub file_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1491}
1492#[derive(Clone, PartialEq, ::prost::Message)]
1493pub struct RequestDownloadResponse {
1494    #[prost(string, tag = "1")]
1495    pub result: ::prost::alloc::string::String,
1496    #[prost(string, tag = "2")]
1497    pub message: ::prost::alloc::string::String,
1498    #[prost(message, repeated, tag = "3")]
1499    pub downloads: ::prost::alloc::vec::Vec<Download>,
1500}
1501#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1502pub struct Download {
1503    #[prost(string, tag = "1")]
1504    pub file_name: ::prost::alloc::string::String,
1505    #[prost(string, tag = "2")]
1506    pub url: ::prost::alloc::string::String,
1507    #[prost(int32, tag = "3")]
1508    pub success_status_code: i32,
1509}
1510#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1511pub struct DeleteUserRequest {
1512    #[prost(string, tag = "1")]
1513    pub reason: ::prost::alloc::string::String,
1514}
1515#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1516pub struct ChangeMasterPasswordRequest {
1517    #[prost(bytes = "vec", tag = "1")]
1518    pub auth_verifier: ::prost::alloc::vec::Vec<u8>,
1519    #[prost(bytes = "vec", tag = "2")]
1520    pub encryption_params: ::prost::alloc::vec::Vec<u8>,
1521    #[prost(bool, tag = "3")]
1522    pub from_service_provider: bool,
1523    #[prost(bool, tag = "4")]
1524    pub iterations_change: bool,
1525}
1526#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1527pub struct ChangeMasterPasswordResponse {
1528    #[prost(bytes = "vec", tag = "1")]
1529    pub encrypted_session_token: ::prost::alloc::vec::Vec<u8>,
1530}
1531#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1532pub struct AccountRecoverySetupRequest {
1533    #[prost(bytes = "vec", tag = "1")]
1534    pub recovery_encrypted_data_key: ::prost::alloc::vec::Vec<u8>,
1535    #[prost(bytes = "vec", tag = "2")]
1536    pub recovery_auth_hash: ::prost::alloc::vec::Vec<u8>,
1537}
1538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1539pub struct AccountRecoveryVerifyCodeResponse {
1540    #[prost(enumeration = "BackupKeyType", tag = "1")]
1541    pub backup_key_type: i32,
1542    #[prost(int64, tag = "2")]
1543    pub backup_key_date: i64,
1544    #[prost(string, tag = "3")]
1545    pub security_question: ::prost::alloc::string::String,
1546    #[prost(bytes = "vec", tag = "4")]
1547    pub salt: ::prost::alloc::vec::Vec<u8>,
1548    #[prost(int32, tag = "5")]
1549    pub iterations: i32,
1550}
1551#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1552pub struct EmergencyAccessLoginRequest {
1553    #[prost(string, tag = "1")]
1554    pub owner: ::prost::alloc::string::String,
1555}
1556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1557pub struct EmergencyAccessLoginResponse {
1558    #[prost(bytes = "vec", tag = "1")]
1559    pub session_token: ::prost::alloc::vec::Vec<u8>,
1560    #[prost(message, optional, tag = "2")]
1561    pub data_key: ::core::option::Option<super::enterprise::TypedKey>,
1562    #[prost(message, optional, tag = "3")]
1563    pub rsa_private_key: ::core::option::Option<super::enterprise::TypedKey>,
1564    #[prost(message, optional, tag = "4")]
1565    pub ecc_private_key: ::core::option::Option<super::enterprise::TypedKey>,
1566}
1567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1568pub struct UserTeamKey {
1569    #[prost(bytes = "vec", tag = "1")]
1570    pub team_uid: ::prost::alloc::vec::Vec<u8>,
1571    #[prost(string, tag = "2")]
1572    pub username: ::prost::alloc::string::String,
1573    #[prost(int64, tag = "3")]
1574    pub enterprise_user_id: i64,
1575    #[prost(bytes = "vec", tag = "4")]
1576    pub encrypted_team_key_rsa: ::prost::alloc::vec::Vec<u8>,
1577    #[prost(bytes = "vec", tag = "5")]
1578    pub encrypted_team_key_ec: ::prost::alloc::vec::Vec<u8>,
1579    #[prost(enumeration = "GenericStatus", tag = "6")]
1580    pub status: i32,
1581}
1582#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1583pub struct GenericRequestResponse {
1584    #[prost(bytes = "vec", repeated, tag = "1")]
1585    pub request: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1586}
1587#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1588pub struct PasskeyRegistrationRequest {
1589    #[prost(enumeration = "AuthenticatorAttachment", tag = "1")]
1590    pub authenticator_attachment: i32,
1591}
1592#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1593pub struct PasskeyRegistrationResponse {
1594    #[prost(bytes = "vec", tag = "1")]
1595    pub challenge_token: ::prost::alloc::vec::Vec<u8>,
1596    #[prost(string, tag = "2")]
1597    pub pk_creation_options: ::prost::alloc::string::String,
1598}
1599#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1600pub struct PasskeyRegistrationFinalization {
1601    #[prost(bytes = "vec", tag = "1")]
1602    pub challenge_token: ::prost::alloc::vec::Vec<u8>,
1603    #[prost(string, tag = "2")]
1604    pub authenticator_response: ::prost::alloc::string::String,
1605    #[prost(oneof = "passkey_registration_finalization::FriendlyName", tags = "3")]
1606    pub friendly_name: ::core::option::Option<passkey_registration_finalization::FriendlyName>,
1607}
1608/// Nested message and enum types in `PasskeyRegistrationFinalization`.
1609pub mod passkey_registration_finalization {
1610    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1611    pub enum FriendlyName {
1612        #[prost(string, tag = "3")]
1613        FriendlyName(::prost::alloc::string::String),
1614    }
1615}
1616#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1617pub struct PasskeyAuthenticationRequest {
1618    #[prost(enumeration = "AuthenticatorAttachment", tag = "1")]
1619    pub authenticator_attachment: i32,
1620    #[prost(enumeration = "PasskeyPurpose", tag = "2")]
1621    pub passkey_purpose: i32,
1622    #[prost(string, tag = "3")]
1623    pub client_version: ::prost::alloc::string::String,
1624    #[prost(bytes = "vec", tag = "4")]
1625    pub encrypted_device_token: ::prost::alloc::vec::Vec<u8>,
1626    #[prost(oneof = "passkey_authentication_request::Username", tags = "5")]
1627    pub username: ::core::option::Option<passkey_authentication_request::Username>,
1628    #[prost(
1629        oneof = "passkey_authentication_request::EncryptedLoginToken",
1630        tags = "6"
1631    )]
1632    pub encrypted_login_token:
1633        ::core::option::Option<passkey_authentication_request::EncryptedLoginToken>,
1634}
1635/// Nested message and enum types in `PasskeyAuthenticationRequest`.
1636pub mod passkey_authentication_request {
1637    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1638    pub enum Username {
1639        #[prost(string, tag = "5")]
1640        Username(::prost::alloc::string::String),
1641    }
1642    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1643    pub enum EncryptedLoginToken {
1644        #[prost(bytes, tag = "6")]
1645        EncryptedLoginToken(::prost::alloc::vec::Vec<u8>),
1646    }
1647}
1648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1649pub struct PasskeyAuthenticationResponse {
1650    #[prost(string, tag = "1")]
1651    pub pk_request_options: ::prost::alloc::string::String,
1652    #[prost(bytes = "vec", tag = "2")]
1653    pub challenge_token: ::prost::alloc::vec::Vec<u8>,
1654    #[prost(
1655        oneof = "passkey_authentication_response::EncryptedLoginToken",
1656        tags = "3"
1657    )]
1658    pub encrypted_login_token:
1659        ::core::option::Option<passkey_authentication_response::EncryptedLoginToken>,
1660}
1661/// Nested message and enum types in `PasskeyAuthenticationResponse`.
1662pub mod passkey_authentication_response {
1663    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1664    pub enum EncryptedLoginToken {
1665        #[prost(bytes, tag = "3")]
1666        EncryptedLoginToken(::prost::alloc::vec::Vec<u8>),
1667    }
1668}
1669#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1670pub struct PasskeyValidationRequest {
1671    #[prost(bytes = "vec", tag = "1")]
1672    pub challenge_token: ::prost::alloc::vec::Vec<u8>,
1673    #[prost(bytes = "vec", tag = "2")]
1674    pub assertion_response: ::prost::alloc::vec::Vec<u8>,
1675    #[prost(enumeration = "PasskeyPurpose", tag = "3")]
1676    pub passkey_purpose: i32,
1677    #[prost(oneof = "passkey_validation_request::EncryptedLoginToken", tags = "4")]
1678    pub encrypted_login_token:
1679        ::core::option::Option<passkey_validation_request::EncryptedLoginToken>,
1680}
1681/// Nested message and enum types in `PasskeyValidationRequest`.
1682pub mod passkey_validation_request {
1683    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1684    pub enum EncryptedLoginToken {
1685        #[prost(bytes, tag = "4")]
1686        EncryptedLoginToken(::prost::alloc::vec::Vec<u8>),
1687    }
1688}
1689#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1690pub struct PasskeyValidationResponse {
1691    #[prost(bool, tag = "1")]
1692    pub is_valid: bool,
1693    #[prost(bytes = "vec", tag = "2")]
1694    pub encrypted_login_token: ::prost::alloc::vec::Vec<u8>,
1695}
1696#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1697pub struct UpdatePasskeyRequest {
1698    #[prost(int32, tag = "1")]
1699    pub user_id: i32,
1700    #[prost(bytes = "vec", tag = "2")]
1701    pub credential_id: ::prost::alloc::vec::Vec<u8>,
1702    #[prost(oneof = "update_passkey_request::FriendlyName", tags = "3")]
1703    pub friendly_name: ::core::option::Option<update_passkey_request::FriendlyName>,
1704}
1705/// Nested message and enum types in `UpdatePasskeyRequest`.
1706pub mod update_passkey_request {
1707    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1708    pub enum FriendlyName {
1709        #[prost(string, tag = "3")]
1710        FriendlyName(::prost::alloc::string::String),
1711    }
1712}
1713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1714pub struct PasskeyListRequest {
1715    #[prost(bool, tag = "1")]
1716    pub include_disabled: bool,
1717}
1718#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1719pub struct PasskeyInfo {
1720    #[prost(int32, tag = "1")]
1721    pub user_id: i32,
1722    #[prost(bytes = "vec", tag = "2")]
1723    pub credential_id: ::prost::alloc::vec::Vec<u8>,
1724    #[prost(string, tag = "3")]
1725    pub friendly_name: ::prost::alloc::string::String,
1726    #[prost(string, tag = "4")]
1727    pub aaguid: ::prost::alloc::string::String,
1728    #[prost(int64, tag = "5")]
1729    pub created_at_millis: i64,
1730    #[prost(int64, tag = "6")]
1731    pub last_used_millis: i64,
1732    #[prost(int64, tag = "7")]
1733    pub disabled_at_millis: i64,
1734}
1735#[derive(Clone, PartialEq, ::prost::Message)]
1736pub struct PasskeyListResponse {
1737    #[prost(message, repeated, tag = "1")]
1738    pub passkey_info: ::prost::alloc::vec::Vec<PasskeyInfo>,
1739}
1740#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1741pub struct TranslationInfo {
1742    #[prost(string, tag = "1")]
1743    pub translation_key: ::prost::alloc::string::String,
1744    #[prost(string, tag = "2")]
1745    pub translation_value: ::prost::alloc::string::String,
1746}
1747#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1748pub struct TranslationRequest {
1749    #[prost(string, repeated, tag = "1")]
1750    pub translation_key: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1751}
1752#[derive(Clone, PartialEq, ::prost::Message)]
1753pub struct TranslationResponse {
1754    #[prost(message, repeated, tag = "1")]
1755    pub translation_info: ::prost::alloc::vec::Vec<TranslationInfo>,
1756}
1757#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1758#[repr(i32)]
1759pub enum SupportedLanguage {
1760    English = 0,
1761    Arabic = 1,
1762    British = 2,
1763    Chinese = 3,
1764    ChineseHongKong = 4,
1765    ChineseTaiwan = 5,
1766    Dutch = 6,
1767    French = 7,
1768    German = 8,
1769    Greek = 9,
1770    Hebrew = 10,
1771    Italian = 11,
1772    Japanese = 12,
1773    Korean = 13,
1774    Polish = 14,
1775    Portuguese = 15,
1776    PortugueseBrazil = 16,
1777    Romanian = 17,
1778    Russian = 18,
1779    Slovak = 19,
1780    Spanish = 20,
1781    Finnish = 21,
1782    Swedish = 22,
1783}
1784impl SupportedLanguage {
1785    /// String value of the enum field names used in the ProtoBuf definition.
1786    ///
1787    /// The values are not transformed in any way and thus are considered stable
1788    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1789    pub fn as_str_name(&self) -> &'static str {
1790        match self {
1791            Self::English => "ENGLISH",
1792            Self::Arabic => "ARABIC",
1793            Self::British => "BRITISH",
1794            Self::Chinese => "CHINESE",
1795            Self::ChineseHongKong => "CHINESE_HONG_KONG",
1796            Self::ChineseTaiwan => "CHINESE_TAIWAN",
1797            Self::Dutch => "DUTCH",
1798            Self::French => "FRENCH",
1799            Self::German => "GERMAN",
1800            Self::Greek => "GREEK",
1801            Self::Hebrew => "HEBREW",
1802            Self::Italian => "ITALIAN",
1803            Self::Japanese => "JAPANESE",
1804            Self::Korean => "KOREAN",
1805            Self::Polish => "POLISH",
1806            Self::Portuguese => "PORTUGUESE",
1807            Self::PortugueseBrazil => "PORTUGUESE_BRAZIL",
1808            Self::Romanian => "ROMANIAN",
1809            Self::Russian => "RUSSIAN",
1810            Self::Slovak => "SLOVAK",
1811            Self::Spanish => "SPANISH",
1812            Self::Finnish => "FINNISH",
1813            Self::Swedish => "SWEDISH",
1814        }
1815    }
1816    /// Creates an enum from field names used in the ProtoBuf definition.
1817    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1818        match value {
1819            "ENGLISH" => Some(Self::English),
1820            "ARABIC" => Some(Self::Arabic),
1821            "BRITISH" => Some(Self::British),
1822            "CHINESE" => Some(Self::Chinese),
1823            "CHINESE_HONG_KONG" => Some(Self::ChineseHongKong),
1824            "CHINESE_TAIWAN" => Some(Self::ChineseTaiwan),
1825            "DUTCH" => Some(Self::Dutch),
1826            "FRENCH" => Some(Self::French),
1827            "GERMAN" => Some(Self::German),
1828            "GREEK" => Some(Self::Greek),
1829            "HEBREW" => Some(Self::Hebrew),
1830            "ITALIAN" => Some(Self::Italian),
1831            "JAPANESE" => Some(Self::Japanese),
1832            "KOREAN" => Some(Self::Korean),
1833            "POLISH" => Some(Self::Polish),
1834            "PORTUGUESE" => Some(Self::Portuguese),
1835            "PORTUGUESE_BRAZIL" => Some(Self::PortugueseBrazil),
1836            "ROMANIAN" => Some(Self::Romanian),
1837            "RUSSIAN" => Some(Self::Russian),
1838            "SLOVAK" => Some(Self::Slovak),
1839            "SPANISH" => Some(Self::Spanish),
1840            "FINNISH" => Some(Self::Finnish),
1841            "SWEDISH" => Some(Self::Swedish),
1842            _ => None,
1843        }
1844    }
1845}
1846#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1847#[repr(i32)]
1848pub enum LoginType {
1849    Normal = 0,
1850    Sso = 1,
1851    Bio = 2,
1852    Alternate = 3,
1853    Offline = 4,
1854    ForgotPassword = 5,
1855    PasskeyBio = 6,
1856}
1857impl LoginType {
1858    /// String value of the enum field names used in the ProtoBuf definition.
1859    ///
1860    /// The values are not transformed in any way and thus are considered stable
1861    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1862    pub fn as_str_name(&self) -> &'static str {
1863        match self {
1864            Self::Normal => "NORMAL",
1865            Self::Sso => "SSO",
1866            Self::Bio => "BIO",
1867            Self::Alternate => "ALTERNATE",
1868            Self::Offline => "OFFLINE",
1869            Self::ForgotPassword => "FORGOT_PASSWORD",
1870            Self::PasskeyBio => "PASSKEY_BIO",
1871        }
1872    }
1873    /// Creates an enum from field names used in the ProtoBuf definition.
1874    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1875        match value {
1876            "NORMAL" => Some(Self::Normal),
1877            "SSO" => Some(Self::Sso),
1878            "BIO" => Some(Self::Bio),
1879            "ALTERNATE" => Some(Self::Alternate),
1880            "OFFLINE" => Some(Self::Offline),
1881            "FORGOT_PASSWORD" => Some(Self::ForgotPassword),
1882            "PASSKEY_BIO" => Some(Self::PasskeyBio),
1883            _ => None,
1884        }
1885    }
1886}
1887#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1888#[repr(i32)]
1889pub enum DeviceStatus {
1890    DeviceNeedsApproval = 0,
1891    DeviceOk = 1,
1892    DeviceDisabledByUser = 2,
1893    DeviceLockedByAdmin = 3,
1894}
1895impl DeviceStatus {
1896    /// String value of the enum field names used in the ProtoBuf definition.
1897    ///
1898    /// The values are not transformed in any way and thus are considered stable
1899    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1900    pub fn as_str_name(&self) -> &'static str {
1901        match self {
1902            Self::DeviceNeedsApproval => "DEVICE_NEEDS_APPROVAL",
1903            Self::DeviceOk => "DEVICE_OK",
1904            Self::DeviceDisabledByUser => "DEVICE_DISABLED_BY_USER",
1905            Self::DeviceLockedByAdmin => "DEVICE_LOCKED_BY_ADMIN",
1906        }
1907    }
1908    /// Creates an enum from field names used in the ProtoBuf definition.
1909    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1910        match value {
1911            "DEVICE_NEEDS_APPROVAL" => Some(Self::DeviceNeedsApproval),
1912            "DEVICE_OK" => Some(Self::DeviceOk),
1913            "DEVICE_DISABLED_BY_USER" => Some(Self::DeviceDisabledByUser),
1914            "DEVICE_LOCKED_BY_ADMIN" => Some(Self::DeviceLockedByAdmin),
1915            _ => None,
1916        }
1917    }
1918}
1919#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1920#[repr(i32)]
1921pub enum LicenseStatus {
1922    Other = 0,
1923    Active = 1,
1924    Expired = 2,
1925    Disabled = 3,
1926}
1927impl LicenseStatus {
1928    /// String value of the enum field names used in the ProtoBuf definition.
1929    ///
1930    /// The values are not transformed in any way and thus are considered stable
1931    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1932    pub fn as_str_name(&self) -> &'static str {
1933        match self {
1934            Self::Other => "OTHER",
1935            Self::Active => "ACTIVE",
1936            Self::Expired => "EXPIRED",
1937            Self::Disabled => "DISABLED",
1938        }
1939    }
1940    /// Creates an enum from field names used in the ProtoBuf definition.
1941    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1942        match value {
1943            "OTHER" => Some(Self::Other),
1944            "ACTIVE" => Some(Self::Active),
1945            "EXPIRED" => Some(Self::Expired),
1946            "DISABLED" => Some(Self::Disabled),
1947            _ => None,
1948        }
1949    }
1950}
1951#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1952#[repr(i32)]
1953pub enum AccountType {
1954    Consumer = 0,
1955    Family = 1,
1956    Enterprise = 2,
1957}
1958impl AccountType {
1959    /// String value of the enum field names used in the ProtoBuf definition.
1960    ///
1961    /// The values are not transformed in any way and thus are considered stable
1962    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1963    pub fn as_str_name(&self) -> &'static str {
1964        match self {
1965            Self::Consumer => "CONSUMER",
1966            Self::Family => "FAMILY",
1967            Self::Enterprise => "ENTERPRISE",
1968        }
1969    }
1970    /// Creates an enum from field names used in the ProtoBuf definition.
1971    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1972        match value {
1973            "CONSUMER" => Some(Self::Consumer),
1974            "FAMILY" => Some(Self::Family),
1975            "ENTERPRISE" => Some(Self::Enterprise),
1976            _ => None,
1977        }
1978    }
1979}
1980#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1981#[repr(i32)]
1982pub enum SessionTokenType {
1983    NoRestriction = 0,
1984    AccountRecovery = 1,
1985    ShareAccount = 2,
1986    Purchase = 3,
1987    Restrict = 4,
1988    AcceptInvite = 5,
1989    SupportServer = 6,
1990    EnterpriseCreation = 7,
1991    ExpiredButAllowedToSync = 8,
1992    AcceptFamilyInvite = 9,
1993    EnterpriseCreationPurchased = 10,
1994    EmergencyAccess = 11,
1995}
1996impl SessionTokenType {
1997    /// String value of the enum field names used in the ProtoBuf definition.
1998    ///
1999    /// The values are not transformed in any way and thus are considered stable
2000    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2001    pub fn as_str_name(&self) -> &'static str {
2002        match self {
2003            Self::NoRestriction => "NO_RESTRICTION",
2004            Self::AccountRecovery => "ACCOUNT_RECOVERY",
2005            Self::ShareAccount => "SHARE_ACCOUNT",
2006            Self::Purchase => "PURCHASE",
2007            Self::Restrict => "RESTRICT",
2008            Self::AcceptInvite => "ACCEPT_INVITE",
2009            Self::SupportServer => "SUPPORT_SERVER",
2010            Self::EnterpriseCreation => "ENTERPRISE_CREATION",
2011            Self::ExpiredButAllowedToSync => "EXPIRED_BUT_ALLOWED_TO_SYNC",
2012            Self::AcceptFamilyInvite => "ACCEPT_FAMILY_INVITE",
2013            Self::EnterpriseCreationPurchased => "ENTERPRISE_CREATION_PURCHASED",
2014            Self::EmergencyAccess => "EMERGENCY_ACCESS",
2015        }
2016    }
2017    /// Creates an enum from field names used in the ProtoBuf definition.
2018    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2019        match value {
2020            "NO_RESTRICTION" => Some(Self::NoRestriction),
2021            "ACCOUNT_RECOVERY" => Some(Self::AccountRecovery),
2022            "SHARE_ACCOUNT" => Some(Self::ShareAccount),
2023            "PURCHASE" => Some(Self::Purchase),
2024            "RESTRICT" => Some(Self::Restrict),
2025            "ACCEPT_INVITE" => Some(Self::AcceptInvite),
2026            "SUPPORT_SERVER" => Some(Self::SupportServer),
2027            "ENTERPRISE_CREATION" => Some(Self::EnterpriseCreation),
2028            "EXPIRED_BUT_ALLOWED_TO_SYNC" => Some(Self::ExpiredButAllowedToSync),
2029            "ACCEPT_FAMILY_INVITE" => Some(Self::AcceptFamilyInvite),
2030            "ENTERPRISE_CREATION_PURCHASED" => Some(Self::EnterpriseCreationPurchased),
2031            "EMERGENCY_ACCESS" => Some(Self::EmergencyAccess),
2032            _ => None,
2033        }
2034    }
2035}
2036#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2037#[repr(i32)]
2038pub enum Version {
2039    InvalidVersion = 0,
2040    DefaultVersion = 1,
2041    SecondVersion = 2,
2042}
2043impl Version {
2044    /// String value of the enum field names used in the ProtoBuf definition.
2045    ///
2046    /// The values are not transformed in any way and thus are considered stable
2047    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2048    pub fn as_str_name(&self) -> &'static str {
2049        match self {
2050            Self::InvalidVersion => "invalid_version",
2051            Self::DefaultVersion => "default_version",
2052            Self::SecondVersion => "second_version",
2053        }
2054    }
2055    /// Creates an enum from field names used in the ProtoBuf definition.
2056    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2057        match value {
2058            "invalid_version" => Some(Self::InvalidVersion),
2059            "default_version" => Some(Self::DefaultVersion),
2060            "second_version" => Some(Self::SecondVersion),
2061            _ => None,
2062        }
2063    }
2064}
2065#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2066#[repr(i32)]
2067pub enum MasterPasswordReentryActionType {
2068    Unmask = 0,
2069    Copy = 1,
2070}
2071impl MasterPasswordReentryActionType {
2072    /// String value of the enum field names used in the ProtoBuf definition.
2073    ///
2074    /// The values are not transformed in any way and thus are considered stable
2075    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2076    pub fn as_str_name(&self) -> &'static str {
2077        match self {
2078            Self::Unmask => "UNMASK",
2079            Self::Copy => "COPY",
2080        }
2081    }
2082    /// Creates an enum from field names used in the ProtoBuf definition.
2083    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2084        match value {
2085            "UNMASK" => Some(Self::Unmask),
2086            "COPY" => Some(Self::Copy),
2087            _ => None,
2088        }
2089    }
2090}
2091#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2092#[repr(i32)]
2093pub enum LoginMethod {
2094    InvalidLoginmethod = 0,
2095    ExistingAccount = 1,
2096    SsoDomain = 2,
2097    AfterSso = 3,
2098    NewAccount = 4,
2099}
2100impl LoginMethod {
2101    /// String value of the enum field names used in the ProtoBuf definition.
2102    ///
2103    /// The values are not transformed in any way and thus are considered stable
2104    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2105    pub fn as_str_name(&self) -> &'static str {
2106        match self {
2107            Self::InvalidLoginmethod => "INVALID_LOGINMETHOD",
2108            Self::ExistingAccount => "EXISTING_ACCOUNT",
2109            Self::SsoDomain => "SSO_DOMAIN",
2110            Self::AfterSso => "AFTER_SSO",
2111            Self::NewAccount => "NEW_ACCOUNT",
2112        }
2113    }
2114    /// Creates an enum from field names used in the ProtoBuf definition.
2115    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2116        match value {
2117            "INVALID_LOGINMETHOD" => Some(Self::InvalidLoginmethod),
2118            "EXISTING_ACCOUNT" => Some(Self::ExistingAccount),
2119            "SSO_DOMAIN" => Some(Self::SsoDomain),
2120            "AFTER_SSO" => Some(Self::AfterSso),
2121            "NEW_ACCOUNT" => Some(Self::NewAccount),
2122            _ => None,
2123        }
2124    }
2125}
2126#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2127#[repr(i32)]
2128pub enum LoginState {
2129    InvalidLoginstate = 0,
2130    LoggedOut = 1,
2131    DeviceApprovalRequired = 2,
2132    DeviceLocked = 3,
2133    AccountLocked = 4,
2134    DeviceAccountLocked = 5,
2135    Upgrade = 6,
2136    LicenseExpired = 7,
2137    RegionRedirect = 8,
2138    RedirectCloudSso = 9,
2139    RedirectOnsiteSso = 10,
2140    Requires2fa = 12,
2141    RequiresAuthHash = 13,
2142    RequiresUsername = 14,
2143    AfterCloudSsoLogin = 15,
2144    RequiresAccountCreation = 16,
2145    RequiresDeviceEncryptedDataKey = 17,
2146    LoginTokenExpired = 18,
2147    PasskeyInitiateChallenge = 19,
2148    PasskeyAuthRequired = 20,
2149    PasskeyVerifyAuthentication = 21,
2150    AfterPasskeyLogin = 22,
2151    LoggedIn = 99,
2152}
2153impl LoginState {
2154    /// String value of the enum field names used in the ProtoBuf definition.
2155    ///
2156    /// The values are not transformed in any way and thus are considered stable
2157    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2158    pub fn as_str_name(&self) -> &'static str {
2159        match self {
2160            Self::InvalidLoginstate => "INVALID_LOGINSTATE",
2161            Self::LoggedOut => "LOGGED_OUT",
2162            Self::DeviceApprovalRequired => "DEVICE_APPROVAL_REQUIRED",
2163            Self::DeviceLocked => "DEVICE_LOCKED",
2164            Self::AccountLocked => "ACCOUNT_LOCKED",
2165            Self::DeviceAccountLocked => "DEVICE_ACCOUNT_LOCKED",
2166            Self::Upgrade => "UPGRADE",
2167            Self::LicenseExpired => "LICENSE_EXPIRED",
2168            Self::RegionRedirect => "REGION_REDIRECT",
2169            Self::RedirectCloudSso => "REDIRECT_CLOUD_SSO",
2170            Self::RedirectOnsiteSso => "REDIRECT_ONSITE_SSO",
2171            Self::Requires2fa => "REQUIRES_2FA",
2172            Self::RequiresAuthHash => "REQUIRES_AUTH_HASH",
2173            Self::RequiresUsername => "REQUIRES_USERNAME",
2174            Self::AfterCloudSsoLogin => "AFTER_CLOUD_SSO_LOGIN",
2175            Self::RequiresAccountCreation => "REQUIRES_ACCOUNT_CREATION",
2176            Self::RequiresDeviceEncryptedDataKey => "REQUIRES_DEVICE_ENCRYPTED_DATA_KEY",
2177            Self::LoginTokenExpired => "LOGIN_TOKEN_EXPIRED",
2178            Self::PasskeyInitiateChallenge => "PASSKEY_INITIATE_CHALLENGE",
2179            Self::PasskeyAuthRequired => "PASSKEY_AUTH_REQUIRED",
2180            Self::PasskeyVerifyAuthentication => "PASSKEY_VERIFY_AUTHENTICATION",
2181            Self::AfterPasskeyLogin => "AFTER_PASSKEY_LOGIN",
2182            Self::LoggedIn => "LOGGED_IN",
2183        }
2184    }
2185    /// Creates an enum from field names used in the ProtoBuf definition.
2186    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2187        match value {
2188            "INVALID_LOGINSTATE" => Some(Self::InvalidLoginstate),
2189            "LOGGED_OUT" => Some(Self::LoggedOut),
2190            "DEVICE_APPROVAL_REQUIRED" => Some(Self::DeviceApprovalRequired),
2191            "DEVICE_LOCKED" => Some(Self::DeviceLocked),
2192            "ACCOUNT_LOCKED" => Some(Self::AccountLocked),
2193            "DEVICE_ACCOUNT_LOCKED" => Some(Self::DeviceAccountLocked),
2194            "UPGRADE" => Some(Self::Upgrade),
2195            "LICENSE_EXPIRED" => Some(Self::LicenseExpired),
2196            "REGION_REDIRECT" => Some(Self::RegionRedirect),
2197            "REDIRECT_CLOUD_SSO" => Some(Self::RedirectCloudSso),
2198            "REDIRECT_ONSITE_SSO" => Some(Self::RedirectOnsiteSso),
2199            "REQUIRES_2FA" => Some(Self::Requires2fa),
2200            "REQUIRES_AUTH_HASH" => Some(Self::RequiresAuthHash),
2201            "REQUIRES_USERNAME" => Some(Self::RequiresUsername),
2202            "AFTER_CLOUD_SSO_LOGIN" => Some(Self::AfterCloudSsoLogin),
2203            "REQUIRES_ACCOUNT_CREATION" => Some(Self::RequiresAccountCreation),
2204            "REQUIRES_DEVICE_ENCRYPTED_DATA_KEY" => Some(Self::RequiresDeviceEncryptedDataKey),
2205            "LOGIN_TOKEN_EXPIRED" => Some(Self::LoginTokenExpired),
2206            "PASSKEY_INITIATE_CHALLENGE" => Some(Self::PasskeyInitiateChallenge),
2207            "PASSKEY_AUTH_REQUIRED" => Some(Self::PasskeyAuthRequired),
2208            "PASSKEY_VERIFY_AUTHENTICATION" => Some(Self::PasskeyVerifyAuthentication),
2209            "AFTER_PASSKEY_LOGIN" => Some(Self::AfterPasskeyLogin),
2210            "LOGGED_IN" => Some(Self::LoggedIn),
2211            _ => None,
2212        }
2213    }
2214}
2215#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2216#[repr(i32)]
2217pub enum EncryptedDataKeyType {
2218    NoKey = 0,
2219    ByDevicePublicKey = 1,
2220    ByPassword = 2,
2221    ByAlternate = 3,
2222    ByBio = 4,
2223}
2224impl EncryptedDataKeyType {
2225    /// String value of the enum field names used in the ProtoBuf definition.
2226    ///
2227    /// The values are not transformed in any way and thus are considered stable
2228    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2229    pub fn as_str_name(&self) -> &'static str {
2230        match self {
2231            Self::NoKey => "NO_KEY",
2232            Self::ByDevicePublicKey => "BY_DEVICE_PUBLIC_KEY",
2233            Self::ByPassword => "BY_PASSWORD",
2234            Self::ByAlternate => "BY_ALTERNATE",
2235            Self::ByBio => "BY_BIO",
2236        }
2237    }
2238    /// Creates an enum from field names used in the ProtoBuf definition.
2239    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2240        match value {
2241            "NO_KEY" => Some(Self::NoKey),
2242            "BY_DEVICE_PUBLIC_KEY" => Some(Self::ByDevicePublicKey),
2243            "BY_PASSWORD" => Some(Self::ByPassword),
2244            "BY_ALTERNATE" => Some(Self::ByAlternate),
2245            "BY_BIO" => Some(Self::ByBio),
2246            _ => None,
2247        }
2248    }
2249}
2250#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2251#[repr(i32)]
2252pub enum PasswordMethod {
2253    Entered = 0,
2254    Biometrics = 1,
2255}
2256impl PasswordMethod {
2257    /// String value of the enum field names used in the ProtoBuf definition.
2258    ///
2259    /// The values are not transformed in any way and thus are considered stable
2260    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2261    pub fn as_str_name(&self) -> &'static str {
2262        match self {
2263            Self::Entered => "ENTERED",
2264            Self::Biometrics => "BIOMETRICS",
2265        }
2266    }
2267    /// Creates an enum from field names used in the ProtoBuf definition.
2268    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2269        match value {
2270            "ENTERED" => Some(Self::Entered),
2271            "BIOMETRICS" => Some(Self::Biometrics),
2272            _ => None,
2273        }
2274    }
2275}
2276#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2277#[repr(i32)]
2278pub enum TwoFactorPushType {
2279    TwoFaPushNone = 0,
2280    TwoFaPushSms = 1,
2281    TwoFaPushKeeper = 2,
2282    TwoFaPushDuoPush = 3,
2283    TwoFaPushDuoText = 4,
2284    TwoFaPushDuoCall = 5,
2285    TwoFaPushDna = 6,
2286}
2287impl TwoFactorPushType {
2288    /// String value of the enum field names used in the ProtoBuf definition.
2289    ///
2290    /// The values are not transformed in any way and thus are considered stable
2291    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2292    pub fn as_str_name(&self) -> &'static str {
2293        match self {
2294            Self::TwoFaPushNone => "TWO_FA_PUSH_NONE",
2295            Self::TwoFaPushSms => "TWO_FA_PUSH_SMS",
2296            Self::TwoFaPushKeeper => "TWO_FA_PUSH_KEEPER",
2297            Self::TwoFaPushDuoPush => "TWO_FA_PUSH_DUO_PUSH",
2298            Self::TwoFaPushDuoText => "TWO_FA_PUSH_DUO_TEXT",
2299            Self::TwoFaPushDuoCall => "TWO_FA_PUSH_DUO_CALL",
2300            Self::TwoFaPushDna => "TWO_FA_PUSH_DNA",
2301        }
2302    }
2303    /// Creates an enum from field names used in the ProtoBuf definition.
2304    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2305        match value {
2306            "TWO_FA_PUSH_NONE" => Some(Self::TwoFaPushNone),
2307            "TWO_FA_PUSH_SMS" => Some(Self::TwoFaPushSms),
2308            "TWO_FA_PUSH_KEEPER" => Some(Self::TwoFaPushKeeper),
2309            "TWO_FA_PUSH_DUO_PUSH" => Some(Self::TwoFaPushDuoPush),
2310            "TWO_FA_PUSH_DUO_TEXT" => Some(Self::TwoFaPushDuoText),
2311            "TWO_FA_PUSH_DUO_CALL" => Some(Self::TwoFaPushDuoCall),
2312            "TWO_FA_PUSH_DNA" => Some(Self::TwoFaPushDna),
2313            _ => None,
2314        }
2315    }
2316}
2317#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2318#[repr(i32)]
2319pub enum TwoFactorValueType {
2320    TwoFaCodeNone = 0,
2321    TwoFaCodeTotp = 1,
2322    TwoFaCodeSms = 2,
2323    TwoFaCodeDuo = 3,
2324    TwoFaCodeRsa = 4,
2325    TwoFaRespU2f = 5,
2326    TwoFaRespWebauthn = 6,
2327    TwoFaCodeDna = 7,
2328}
2329impl TwoFactorValueType {
2330    /// String value of the enum field names used in the ProtoBuf definition.
2331    ///
2332    /// The values are not transformed in any way and thus are considered stable
2333    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2334    pub fn as_str_name(&self) -> &'static str {
2335        match self {
2336            Self::TwoFaCodeNone => "TWO_FA_CODE_NONE",
2337            Self::TwoFaCodeTotp => "TWO_FA_CODE_TOTP",
2338            Self::TwoFaCodeSms => "TWO_FA_CODE_SMS",
2339            Self::TwoFaCodeDuo => "TWO_FA_CODE_DUO",
2340            Self::TwoFaCodeRsa => "TWO_FA_CODE_RSA",
2341            Self::TwoFaRespU2f => "TWO_FA_RESP_U2F",
2342            Self::TwoFaRespWebauthn => "TWO_FA_RESP_WEBAUTHN",
2343            Self::TwoFaCodeDna => "TWO_FA_CODE_DNA",
2344        }
2345    }
2346    /// Creates an enum from field names used in the ProtoBuf definition.
2347    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2348        match value {
2349            "TWO_FA_CODE_NONE" => Some(Self::TwoFaCodeNone),
2350            "TWO_FA_CODE_TOTP" => Some(Self::TwoFaCodeTotp),
2351            "TWO_FA_CODE_SMS" => Some(Self::TwoFaCodeSms),
2352            "TWO_FA_CODE_DUO" => Some(Self::TwoFaCodeDuo),
2353            "TWO_FA_CODE_RSA" => Some(Self::TwoFaCodeRsa),
2354            "TWO_FA_RESP_U2F" => Some(Self::TwoFaRespU2f),
2355            "TWO_FA_RESP_WEBAUTHN" => Some(Self::TwoFaRespWebauthn),
2356            "TWO_FA_CODE_DNA" => Some(Self::TwoFaCodeDna),
2357            _ => None,
2358        }
2359    }
2360}
2361#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2362#[repr(i32)]
2363pub enum TwoFactorChannelType {
2364    TwoFaCtNone = 0,
2365    TwoFaCtTotp = 1,
2366    TwoFaCtSms = 2,
2367    TwoFaCtDuo = 3,
2368    TwoFaCtRsa = 4,
2369    TwoFaCtBackup = 5,
2370    TwoFaCtU2f = 6,
2371    TwoFaCtWebauthn = 7,
2372    TwoFaCtKeeper = 8,
2373    TwoFaCtDna = 9,
2374}
2375impl TwoFactorChannelType {
2376    /// String value of the enum field names used in the ProtoBuf definition.
2377    ///
2378    /// The values are not transformed in any way and thus are considered stable
2379    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2380    pub fn as_str_name(&self) -> &'static str {
2381        match self {
2382            Self::TwoFaCtNone => "TWO_FA_CT_NONE",
2383            Self::TwoFaCtTotp => "TWO_FA_CT_TOTP",
2384            Self::TwoFaCtSms => "TWO_FA_CT_SMS",
2385            Self::TwoFaCtDuo => "TWO_FA_CT_DUO",
2386            Self::TwoFaCtRsa => "TWO_FA_CT_RSA",
2387            Self::TwoFaCtBackup => "TWO_FA_CT_BACKUP",
2388            Self::TwoFaCtU2f => "TWO_FA_CT_U2F",
2389            Self::TwoFaCtWebauthn => "TWO_FA_CT_WEBAUTHN",
2390            Self::TwoFaCtKeeper => "TWO_FA_CT_KEEPER",
2391            Self::TwoFaCtDna => "TWO_FA_CT_DNA",
2392        }
2393    }
2394    /// Creates an enum from field names used in the ProtoBuf definition.
2395    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2396        match value {
2397            "TWO_FA_CT_NONE" => Some(Self::TwoFaCtNone),
2398            "TWO_FA_CT_TOTP" => Some(Self::TwoFaCtTotp),
2399            "TWO_FA_CT_SMS" => Some(Self::TwoFaCtSms),
2400            "TWO_FA_CT_DUO" => Some(Self::TwoFaCtDuo),
2401            "TWO_FA_CT_RSA" => Some(Self::TwoFaCtRsa),
2402            "TWO_FA_CT_BACKUP" => Some(Self::TwoFaCtBackup),
2403            "TWO_FA_CT_U2F" => Some(Self::TwoFaCtU2f),
2404            "TWO_FA_CT_WEBAUTHN" => Some(Self::TwoFaCtWebauthn),
2405            "TWO_FA_CT_KEEPER" => Some(Self::TwoFaCtKeeper),
2406            "TWO_FA_CT_DNA" => Some(Self::TwoFaCtDna),
2407            _ => None,
2408        }
2409    }
2410}
2411#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2412#[repr(i32)]
2413pub enum TwoFactorExpiration {
2414    TwoFaExpImmediately = 0,
2415    TwoFaExp5Minutes = 1,
2416    TwoFaExp12Hours = 2,
2417    TwoFaExp24Hours = 3,
2418    TwoFaExp30Days = 4,
2419    TwoFaExpNever = 5,
2420}
2421impl TwoFactorExpiration {
2422    /// String value of the enum field names used in the ProtoBuf definition.
2423    ///
2424    /// The values are not transformed in any way and thus are considered stable
2425    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2426    pub fn as_str_name(&self) -> &'static str {
2427        match self {
2428            Self::TwoFaExpImmediately => "TWO_FA_EXP_IMMEDIATELY",
2429            Self::TwoFaExp5Minutes => "TWO_FA_EXP_5_MINUTES",
2430            Self::TwoFaExp12Hours => "TWO_FA_EXP_12_HOURS",
2431            Self::TwoFaExp24Hours => "TWO_FA_EXP_24_HOURS",
2432            Self::TwoFaExp30Days => "TWO_FA_EXP_30_DAYS",
2433            Self::TwoFaExpNever => "TWO_FA_EXP_NEVER",
2434        }
2435    }
2436    /// Creates an enum from field names used in the ProtoBuf definition.
2437    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2438        match value {
2439            "TWO_FA_EXP_IMMEDIATELY" => Some(Self::TwoFaExpImmediately),
2440            "TWO_FA_EXP_5_MINUTES" => Some(Self::TwoFaExp5Minutes),
2441            "TWO_FA_EXP_12_HOURS" => Some(Self::TwoFaExp12Hours),
2442            "TWO_FA_EXP_24_HOURS" => Some(Self::TwoFaExp24Hours),
2443            "TWO_FA_EXP_30_DAYS" => Some(Self::TwoFaExp30Days),
2444            "TWO_FA_EXP_NEVER" => Some(Self::TwoFaExpNever),
2445            _ => None,
2446        }
2447    }
2448}
2449#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2450#[repr(i32)]
2451pub enum LicenseType {
2452    Vault = 0,
2453    Chat = 1,
2454    Storage = 2,
2455    Breachwatch = 3,
2456}
2457impl LicenseType {
2458    /// String value of the enum field names used in the ProtoBuf definition.
2459    ///
2460    /// The values are not transformed in any way and thus are considered stable
2461    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2462    pub fn as_str_name(&self) -> &'static str {
2463        match self {
2464            Self::Vault => "VAULT",
2465            Self::Chat => "CHAT",
2466            Self::Storage => "STORAGE",
2467            Self::Breachwatch => "BREACHWATCH",
2468        }
2469    }
2470    /// Creates an enum from field names used in the ProtoBuf definition.
2471    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2472        match value {
2473            "VAULT" => Some(Self::Vault),
2474            "CHAT" => Some(Self::Chat),
2475            "STORAGE" => Some(Self::Storage),
2476            "BREACHWATCH" => Some(Self::Breachwatch),
2477            _ => None,
2478        }
2479    }
2480}
2481#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2482#[repr(i32)]
2483pub enum ObjectTypes {
2484    Record = 0,
2485    SharedFolderUser = 1,
2486    SharedFolderTeam = 2,
2487    UserFolder = 3,
2488    TeamUser = 4,
2489}
2490impl ObjectTypes {
2491    /// String value of the enum field names used in the ProtoBuf definition.
2492    ///
2493    /// The values are not transformed in any way and thus are considered stable
2494    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2495    pub fn as_str_name(&self) -> &'static str {
2496        match self {
2497            Self::Record => "RECORD",
2498            Self::SharedFolderUser => "SHARED_FOLDER_USER",
2499            Self::SharedFolderTeam => "SHARED_FOLDER_TEAM",
2500            Self::UserFolder => "USER_FOLDER",
2501            Self::TeamUser => "TEAM_USER",
2502        }
2503    }
2504    /// Creates an enum from field names used in the ProtoBuf definition.
2505    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2506        match value {
2507            "RECORD" => Some(Self::Record),
2508            "SHARED_FOLDER_USER" => Some(Self::SharedFolderUser),
2509            "SHARED_FOLDER_TEAM" => Some(Self::SharedFolderTeam),
2510            "USER_FOLDER" => Some(Self::UserFolder),
2511            "TEAM_USER" => Some(Self::TeamUser),
2512            _ => None,
2513        }
2514    }
2515}
2516#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2517#[repr(i32)]
2518pub enum EncryptedObjectType {
2519    EotUnspecified = 0,
2520    EotRecordKey = 1,
2521    EotSharedFolderUserKey = 2,
2522    EotSharedFolderTeamKey = 3,
2523    EotTeamUserKey = 4,
2524    EotUserFolderKey = 5,
2525    EotSecurityData = 6,
2526    EotSecurityDataMasterPassword = 7,
2527    EotEmergencyAccessKey = 8,
2528    EotV2RecordKey = 9,
2529}
2530impl EncryptedObjectType {
2531    /// String value of the enum field names used in the ProtoBuf definition.
2532    ///
2533    /// The values are not transformed in any way and thus are considered stable
2534    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2535    pub fn as_str_name(&self) -> &'static str {
2536        match self {
2537            Self::EotUnspecified => "EOT_UNSPECIFIED",
2538            Self::EotRecordKey => "EOT_RECORD_KEY",
2539            Self::EotSharedFolderUserKey => "EOT_SHARED_FOLDER_USER_KEY",
2540            Self::EotSharedFolderTeamKey => "EOT_SHARED_FOLDER_TEAM_KEY",
2541            Self::EotTeamUserKey => "EOT_TEAM_USER_KEY",
2542            Self::EotUserFolderKey => "EOT_USER_FOLDER_KEY",
2543            Self::EotSecurityData => "EOT_SECURITY_DATA",
2544            Self::EotSecurityDataMasterPassword => "EOT_SECURITY_DATA_MASTER_PASSWORD",
2545            Self::EotEmergencyAccessKey => "EOT_EMERGENCY_ACCESS_KEY",
2546            Self::EotV2RecordKey => "EOT_V2_RECORD_KEY",
2547        }
2548    }
2549    /// Creates an enum from field names used in the ProtoBuf definition.
2550    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2551        match value {
2552            "EOT_UNSPECIFIED" => Some(Self::EotUnspecified),
2553            "EOT_RECORD_KEY" => Some(Self::EotRecordKey),
2554            "EOT_SHARED_FOLDER_USER_KEY" => Some(Self::EotSharedFolderUserKey),
2555            "EOT_SHARED_FOLDER_TEAM_KEY" => Some(Self::EotSharedFolderTeamKey),
2556            "EOT_TEAM_USER_KEY" => Some(Self::EotTeamUserKey),
2557            "EOT_USER_FOLDER_KEY" => Some(Self::EotUserFolderKey),
2558            "EOT_SECURITY_DATA" => Some(Self::EotSecurityData),
2559            "EOT_SECURITY_DATA_MASTER_PASSWORD" => Some(Self::EotSecurityDataMasterPassword),
2560            "EOT_EMERGENCY_ACCESS_KEY" => Some(Self::EotEmergencyAccessKey),
2561            "EOT_V2_RECORD_KEY" => Some(Self::EotV2RecordKey),
2562            _ => None,
2563        }
2564    }
2565}
2566#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2567#[repr(i32)]
2568pub enum MasterPasswordReentryStatus {
2569    MpUnknown = 0,
2570    MpSuccess = 1,
2571    MpFailure = 2,
2572}
2573impl MasterPasswordReentryStatus {
2574    /// String value of the enum field names used in the ProtoBuf definition.
2575    ///
2576    /// The values are not transformed in any way and thus are considered stable
2577    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2578    pub fn as_str_name(&self) -> &'static str {
2579        match self {
2580            Self::MpUnknown => "MP_UNKNOWN",
2581            Self::MpSuccess => "MP_SUCCESS",
2582            Self::MpFailure => "MP_FAILURE",
2583        }
2584    }
2585    /// Creates an enum from field names used in the ProtoBuf definition.
2586    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2587        match value {
2588            "MP_UNKNOWN" => Some(Self::MpUnknown),
2589            "MP_SUCCESS" => Some(Self::MpSuccess),
2590            "MP_FAILURE" => Some(Self::MpFailure),
2591            _ => None,
2592        }
2593    }
2594}
2595#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2596#[repr(i32)]
2597pub enum AlternateAuthenticationType {
2598    AlternateMasterPassword = 0,
2599    Biometric = 1,
2600    AccountRecover = 2,
2601}
2602impl AlternateAuthenticationType {
2603    /// String value of the enum field names used in the ProtoBuf definition.
2604    ///
2605    /// The values are not transformed in any way and thus are considered stable
2606    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2607    pub fn as_str_name(&self) -> &'static str {
2608        match self {
2609            Self::AlternateMasterPassword => "ALTERNATE_MASTER_PASSWORD",
2610            Self::Biometric => "BIOMETRIC",
2611            Self::AccountRecover => "ACCOUNT_RECOVER",
2612        }
2613    }
2614    /// Creates an enum from field names used in the ProtoBuf definition.
2615    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2616        match value {
2617            "ALTERNATE_MASTER_PASSWORD" => Some(Self::AlternateMasterPassword),
2618            "BIOMETRIC" => Some(Self::Biometric),
2619            "ACCOUNT_RECOVER" => Some(Self::AccountRecover),
2620            _ => None,
2621        }
2622    }
2623}
2624#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2625#[repr(i32)]
2626pub enum ThrottleType {
2627    PasswordRetryThrottle = 0,
2628    PasswordRetryLegacyThrottle = 1,
2629    TwoFaThrottle = 2,
2630    TwoFaLegacyThrottle = 3,
2631    QaRetryThrottle = 4,
2632    AccountRecoverThrottle = 5,
2633    ValidateDeviceVerificationCodeThrottle = 6,
2634    ValidateCreateUserVerificationCodeThrottle = 7,
2635}
2636impl ThrottleType {
2637    /// String value of the enum field names used in the ProtoBuf definition.
2638    ///
2639    /// The values are not transformed in any way and thus are considered stable
2640    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2641    pub fn as_str_name(&self) -> &'static str {
2642        match self {
2643            Self::PasswordRetryThrottle => "PASSWORD_RETRY_THROTTLE",
2644            Self::PasswordRetryLegacyThrottle => "PASSWORD_RETRY_LEGACY_THROTTLE",
2645            Self::TwoFaThrottle => "TWO_FA_THROTTLE",
2646            Self::TwoFaLegacyThrottle => "TWO_FA_LEGACY_THROTTLE",
2647            Self::QaRetryThrottle => "QA_RETRY_THROTTLE",
2648            Self::AccountRecoverThrottle => "ACCOUNT_RECOVER_THROTTLE",
2649            Self::ValidateDeviceVerificationCodeThrottle => {
2650                "VALIDATE_DEVICE_VERIFICATION_CODE_THROTTLE"
2651            }
2652            Self::ValidateCreateUserVerificationCodeThrottle => {
2653                "VALIDATE_CREATE_USER_VERIFICATION_CODE_THROTTLE"
2654            }
2655        }
2656    }
2657    /// Creates an enum from field names used in the ProtoBuf definition.
2658    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2659        match value {
2660            "PASSWORD_RETRY_THROTTLE" => Some(Self::PasswordRetryThrottle),
2661            "PASSWORD_RETRY_LEGACY_THROTTLE" => Some(Self::PasswordRetryLegacyThrottle),
2662            "TWO_FA_THROTTLE" => Some(Self::TwoFaThrottle),
2663            "TWO_FA_LEGACY_THROTTLE" => Some(Self::TwoFaLegacyThrottle),
2664            "QA_RETRY_THROTTLE" => Some(Self::QaRetryThrottle),
2665            "ACCOUNT_RECOVER_THROTTLE" => Some(Self::AccountRecoverThrottle),
2666            "VALIDATE_DEVICE_VERIFICATION_CODE_THROTTLE" => {
2667                Some(Self::ValidateDeviceVerificationCodeThrottle)
2668            }
2669            "VALIDATE_CREATE_USER_VERIFICATION_CODE_THROTTLE" => {
2670                Some(Self::ValidateCreateUserVerificationCodeThrottle)
2671            }
2672            _ => None,
2673        }
2674    }
2675}
2676#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2677#[repr(i32)]
2678pub enum Region {
2679    Unknown = 0,
2680    Eu = 1,
2681    Us = 2,
2682    Usgov = 3,
2683    Au = 4,
2684    Jp = 5,
2685    Ca = 6,
2686}
2687impl Region {
2688    /// String value of the enum field names used in the ProtoBuf definition.
2689    ///
2690    /// The values are not transformed in any way and thus are considered stable
2691    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2692    pub fn as_str_name(&self) -> &'static str {
2693        match self {
2694            Self::Unknown => "UNKNOWN",
2695            Self::Eu => "eu",
2696            Self::Us => "us",
2697            Self::Usgov => "usgov",
2698            Self::Au => "au",
2699            Self::Jp => "jp",
2700            Self::Ca => "ca",
2701        }
2702    }
2703    /// Creates an enum from field names used in the ProtoBuf definition.
2704    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2705        match value {
2706            "UNKNOWN" => Some(Self::Unknown),
2707            "eu" => Some(Self::Eu),
2708            "us" => Some(Self::Us),
2709            "usgov" => Some(Self::Usgov),
2710            "au" => Some(Self::Au),
2711            "jp" => Some(Self::Jp),
2712            "ca" => Some(Self::Ca),
2713            _ => None,
2714        }
2715    }
2716}
2717#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2718#[repr(i32)]
2719pub enum ApplicationShareType {
2720    ShareTypeRecord = 0,
2721    ShareTypeFolder = 1,
2722}
2723impl ApplicationShareType {
2724    /// String value of the enum field names used in the ProtoBuf definition.
2725    ///
2726    /// The values are not transformed in any way and thus are considered stable
2727    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2728    pub fn as_str_name(&self) -> &'static str {
2729        match self {
2730            Self::ShareTypeRecord => "SHARE_TYPE_RECORD",
2731            Self::ShareTypeFolder => "SHARE_TYPE_FOLDER",
2732        }
2733    }
2734    /// Creates an enum from field names used in the ProtoBuf definition.
2735    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2736        match value {
2737            "SHARE_TYPE_RECORD" => Some(Self::ShareTypeRecord),
2738            "SHARE_TYPE_FOLDER" => Some(Self::ShareTypeFolder),
2739            _ => None,
2740        }
2741    }
2742}
2743#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2744#[repr(i32)]
2745pub enum TimeLimitedAccessType {
2746    InvalidTimeLimitedAccessType = 0,
2747    UserAccessToRecord = 1,
2748    UserOrTeamAccessToSharedfolder = 2,
2749    RecordAccessToSharedfolder = 3,
2750}
2751impl TimeLimitedAccessType {
2752    /// String value of the enum field names used in the ProtoBuf definition.
2753    ///
2754    /// The values are not transformed in any way and thus are considered stable
2755    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2756    pub fn as_str_name(&self) -> &'static str {
2757        match self {
2758            Self::InvalidTimeLimitedAccessType => "INVALID_TIME_LIMITED_ACCESS_TYPE",
2759            Self::UserAccessToRecord => "USER_ACCESS_TO_RECORD",
2760            Self::UserOrTeamAccessToSharedfolder => "USER_OR_TEAM_ACCESS_TO_SHAREDFOLDER",
2761            Self::RecordAccessToSharedfolder => "RECORD_ACCESS_TO_SHAREDFOLDER",
2762        }
2763    }
2764    /// Creates an enum from field names used in the ProtoBuf definition.
2765    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2766        match value {
2767            "INVALID_TIME_LIMITED_ACCESS_TYPE" => Some(Self::InvalidTimeLimitedAccessType),
2768            "USER_ACCESS_TO_RECORD" => Some(Self::UserAccessToRecord),
2769            "USER_OR_TEAM_ACCESS_TO_SHAREDFOLDER" => Some(Self::UserOrTeamAccessToSharedfolder),
2770            "RECORD_ACCESS_TO_SHAREDFOLDER" => Some(Self::RecordAccessToSharedfolder),
2771            _ => None,
2772        }
2773    }
2774}
2775#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2776#[repr(i32)]
2777pub enum BackupKeyType {
2778    BktSecAnswer = 0,
2779    BktPassphraseHash = 1,
2780}
2781impl BackupKeyType {
2782    /// String value of the enum field names used in the ProtoBuf definition.
2783    ///
2784    /// The values are not transformed in any way and thus are considered stable
2785    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2786    pub fn as_str_name(&self) -> &'static str {
2787        match self {
2788            Self::BktSecAnswer => "BKT_SEC_ANSWER",
2789            Self::BktPassphraseHash => "BKT_PASSPHRASE_HASH",
2790        }
2791    }
2792    /// Creates an enum from field names used in the ProtoBuf definition.
2793    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2794        match value {
2795            "BKT_SEC_ANSWER" => Some(Self::BktSecAnswer),
2796            "BKT_PASSPHRASE_HASH" => Some(Self::BktPassphraseHash),
2797            _ => None,
2798        }
2799    }
2800}
2801#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2802#[repr(i32)]
2803pub enum GenericStatus {
2804    Success = 0,
2805    InvalidObject = 1,
2806    AlreadyExists = 2,
2807    AccessDenied = 3,
2808}
2809impl GenericStatus {
2810    /// String value of the enum field names used in the ProtoBuf definition.
2811    ///
2812    /// The values are not transformed in any way and thus are considered stable
2813    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2814    pub fn as_str_name(&self) -> &'static str {
2815        match self {
2816            Self::Success => "SUCCESS",
2817            Self::InvalidObject => "INVALID_OBJECT",
2818            Self::AlreadyExists => "ALREADY_EXISTS",
2819            Self::AccessDenied => "ACCESS_DENIED",
2820        }
2821    }
2822    /// Creates an enum from field names used in the ProtoBuf definition.
2823    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2824        match value {
2825            "SUCCESS" => Some(Self::Success),
2826            "INVALID_OBJECT" => Some(Self::InvalidObject),
2827            "ALREADY_EXISTS" => Some(Self::AlreadyExists),
2828            "ACCESS_DENIED" => Some(Self::AccessDenied),
2829            _ => None,
2830        }
2831    }
2832}
2833#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2834#[repr(i32)]
2835pub enum AuthenticatorAttachment {
2836    CrossPlatform = 0,
2837    Platform = 1,
2838    AllSupported = 2,
2839}
2840impl AuthenticatorAttachment {
2841    /// String value of the enum field names used in the ProtoBuf definition.
2842    ///
2843    /// The values are not transformed in any way and thus are considered stable
2844    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2845    pub fn as_str_name(&self) -> &'static str {
2846        match self {
2847            Self::CrossPlatform => "CROSS_PLATFORM",
2848            Self::Platform => "PLATFORM",
2849            Self::AllSupported => "ALL_SUPPORTED",
2850        }
2851    }
2852    /// Creates an enum from field names used in the ProtoBuf definition.
2853    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2854        match value {
2855            "CROSS_PLATFORM" => Some(Self::CrossPlatform),
2856            "PLATFORM" => Some(Self::Platform),
2857            "ALL_SUPPORTED" => Some(Self::AllSupported),
2858            _ => None,
2859        }
2860    }
2861}
2862#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2863#[repr(i32)]
2864pub enum PasskeyPurpose {
2865    PkLogin = 0,
2866    PkReauth = 1,
2867}
2868impl PasskeyPurpose {
2869    /// String value of the enum field names used in the ProtoBuf definition.
2870    ///
2871    /// The values are not transformed in any way and thus are considered stable
2872    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2873    pub fn as_str_name(&self) -> &'static str {
2874        match self {
2875            Self::PkLogin => "PK_LOGIN",
2876            Self::PkReauth => "PK_REAUTH",
2877        }
2878    }
2879    /// Creates an enum from field names used in the ProtoBuf definition.
2880    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2881        match value {
2882            "PK_LOGIN" => Some(Self::PkLogin),
2883            "PK_REAUTH" => Some(Self::PkReauth),
2884            _ => None,
2885        }
2886    }
2887}
2888#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2889#[repr(i32)]
2890pub enum ClientFormFactor {
2891    FfEmpty = 0,
2892    FfPhone = 1,
2893    FfTablet = 2,
2894    FfWatch = 3,
2895}
2896impl ClientFormFactor {
2897    /// String value of the enum field names used in the ProtoBuf definition.
2898    ///
2899    /// The values are not transformed in any way and thus are considered stable
2900    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2901    pub fn as_str_name(&self) -> &'static str {
2902        match self {
2903            Self::FfEmpty => "FF_EMPTY",
2904            Self::FfPhone => "FF_PHONE",
2905            Self::FfTablet => "FF_TABLET",
2906            Self::FfWatch => "FF_WATCH",
2907        }
2908    }
2909    /// Creates an enum from field names used in the ProtoBuf definition.
2910    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2911        match value {
2912            "FF_EMPTY" => Some(Self::FfEmpty),
2913            "FF_PHONE" => Some(Self::FfPhone),
2914            "FF_TABLET" => Some(Self::FfTablet),
2915            "FF_WATCH" => Some(Self::FfWatch),
2916            _ => None,
2917        }
2918    }
2919}