1#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct User {
4 #[prost(string, tag = "1")]
5 pub rid: ::prost::alloc::string::String,
6 #[prost(string, tag = "2")]
7 pub org_rid: ::prost::alloc::string::String,
8 #[prost(string, tag = "3")]
9 pub email: ::prost::alloc::string::String,
10 #[prost(string, tag = "4")]
11 pub display_name: ::prost::alloc::string::String,
12 #[prost(string, tag = "5")]
13 pub avatar_url: ::prost::alloc::string::String,
14 #[prost(message, optional, tag = "6")]
15 pub create_time: ::core::option::Option<
16 super::super::super::super::google::protobuf::Timestamp,
17 >,
18}
19#[derive(Clone, PartialEq, ::prost::Message)]
20pub struct GetUserRequest {
21 #[prost(string, tag = "1")]
22 pub user_rid: ::prost::alloc::string::String,
23}
24#[derive(Clone, PartialEq, ::prost::Message)]
25pub struct GetUserResponse {
26 #[prost(message, optional, tag = "1")]
27 pub user: ::core::option::Option<User>,
28}
29#[derive(Clone, PartialEq, ::prost::Message)]
30pub struct BatchGetUsersRequest {
31 #[prost(string, repeated, tag = "1")]
32 pub user_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
33}
34#[derive(Clone, PartialEq, ::prost::Message)]
35pub struct BatchGetUsersResponse {
36 #[prost(message, repeated, tag = "1")]
37 pub users: ::prost::alloc::vec::Vec<User>,
38}
39#[derive(Clone, PartialEq, ::prost::Message)]
40pub struct SearchUsersQuery {
41 #[prost(oneof = "search_users_query::Query", tags = "1, 2, 3, 4")]
42 pub query: ::core::option::Option<search_users_query::Query>,
43}
44pub mod search_users_query {
46 #[derive(Clone, PartialEq, ::prost::Oneof)]
47 pub enum Query {
48 #[prost(message, tag = "1")]
49 And(super::SearchUsersQueries),
50 #[prost(message, tag = "2")]
51 Or(super::SearchUsersQueries),
52 #[prost(string, tag = "3")]
53 ExactEmail(::prost::alloc::string::String),
54 #[prost(string, tag = "4")]
55 SearchText(::prost::alloc::string::String),
56 }
57}
58#[derive(Clone, PartialEq, ::prost::Message)]
59pub struct SearchUsersQueries {
60 #[prost(message, repeated, tag = "1")]
61 pub queries: ::prost::alloc::vec::Vec<SearchUsersQuery>,
62}
63#[derive(Clone, Copy, PartialEq, ::prost::Message)]
64pub struct UserSort {
65 #[prost(enumeration = "UserSortField", tag = "1")]
66 pub field: i32,
67 #[prost(bool, tag = "2")]
68 pub is_descending: bool,
69}
70#[derive(Clone, PartialEq, ::prost::Message)]
71pub struct SearchUsersRequest {
72 #[prost(message, optional, tag = "1")]
73 pub query: ::core::option::Option<SearchUsersQuery>,
74 #[prost(message, optional, tag = "2")]
75 pub sort: ::core::option::Option<UserSort>,
76 #[prost(int32, optional, tag = "3")]
77 pub page_size: ::core::option::Option<i32>,
78 #[prost(string, tag = "4")]
79 pub page_token: ::prost::alloc::string::String,
80}
81#[derive(Clone, PartialEq, ::prost::Message)]
82pub struct SearchUsersResponse {
83 #[prost(message, repeated, tag = "1")]
84 pub users: ::prost::alloc::vec::Vec<User>,
85 #[prost(string, tag = "2")]
86 pub next_page_token: ::prost::alloc::string::String,
87}
88#[derive(Clone, Copy, PartialEq, ::prost::Message)]
89pub struct GetCurrentUserRequest {}
90#[derive(Clone, PartialEq, ::prost::Message)]
91pub struct GetCurrentUserResponse {
92 #[prost(message, optional, tag = "1")]
93 pub user: ::core::option::Option<User>,
94}
95#[derive(Clone, PartialEq, ::prost::Message)]
96pub struct UpdateCurrentUserRequest {
97 #[prost(message, optional, tag = "1")]
98 pub user: ::core::option::Option<User>,
99}
100#[derive(Clone, PartialEq, ::prost::Message)]
101pub struct UpdateCurrentUserResponse {
102 #[prost(message, optional, tag = "1")]
103 pub user: ::core::option::Option<User>,
104}
105#[derive(Clone, Copy, PartialEq, ::prost::Message)]
106pub struct NumberFormat {
107 #[prost(int32, optional, tag = "1")]
108 pub significant_figures: ::core::option::Option<i32>,
109 #[prost(enumeration = "NumberDisplayOption", optional, tag = "2")]
110 pub display_option: ::core::option::Option<i32>,
111 #[deprecated]
112 #[prost(int32, optional, tag = "3")]
113 pub fixed_decimal_places: ::core::option::Option<i32>,
114 #[prost(message, optional, tag = "4")]
115 pub decimal_places: ::core::option::Option<DecimalPlaces>,
116}
117#[derive(Clone, Copy, PartialEq, ::prost::Message)]
118pub struct DecimalPlaces {
119 #[prost(oneof = "decimal_places::Places", tags = "1, 2")]
120 pub places: ::core::option::Option<decimal_places::Places>,
121}
122pub mod decimal_places {
124 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
125 pub enum Places {
126 #[prost(int32, tag = "1")]
127 Fixed(i32),
128 #[prost(int32, tag = "2")]
129 Max(i32),
130 }
131}
132#[derive(Clone, Copy, PartialEq, ::prost::Message)]
133pub struct UserSettings {
134 #[prost(enumeration = "DefaultTimeRangeType", tag = "1")]
135 pub default_time_range_type: i32,
136 #[prost(enumeration = "Appearance", tag = "2")]
137 pub appearance: i32,
138 #[prost(enumeration = "Timezone", tag = "3")]
139 pub timezone: i32,
140 #[deprecated]
141 #[prost(bool, tag = "4")]
142 pub time_series_hover_tooltip_concise: bool,
143 #[prost(enumeration = "ChartTooltipMode", tag = "5")]
144 pub chart_tooltip_mode: i32,
145 #[prost(message, optional, tag = "6")]
146 pub data_number_format: ::core::option::Option<NumberFormat>,
147 #[prost(enumeration = "RelativeTimestampFormat", tag = "7")]
148 pub relative_timestamp_format: i32,
149 #[prost(bool, tag = "8")]
150 pub vim_mode_enabled: bool,
151 #[prost(bool, optional, tag = "9")]
152 pub default_workbook_visible_in_search: ::core::option::Option<bool>,
153}
154#[derive(Clone, Copy, PartialEq, ::prost::Message)]
155pub struct GetCurrentUserSettingsRequest {}
156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
157pub struct GetCurrentUserSettingsResponse {
158 #[prost(message, optional, tag = "1")]
159 pub settings: ::core::option::Option<UserSettings>,
160}
161#[derive(Clone, Copy, PartialEq, ::prost::Message)]
162pub struct UpdateCurrentUserSettingsRequest {
163 #[prost(message, optional, tag = "1")]
164 pub settings: ::core::option::Option<UserSettings>,
165}
166#[derive(Clone, Copy, PartialEq, ::prost::Message)]
167pub struct UpdateCurrentUserSettingsResponse {
168 #[prost(message, optional, tag = "1")]
169 pub settings: ::core::option::Option<UserSettings>,
170}
171#[derive(Clone, PartialEq, ::prost::Message)]
172pub struct PreregisterUsersRequest {
173 #[prost(string, repeated, tag = "1")]
174 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
175}
176#[derive(Clone, PartialEq, ::prost::Message)]
177pub struct PreregisterUsersResponse {
178 #[prost(message, repeated, tag = "1")]
179 pub users: ::prost::alloc::vec::Vec<User>,
180}
181#[derive(Clone, PartialEq, ::prost::Message)]
182pub struct DeactivateUserRequest {
183 #[prost(string, tag = "1")]
184 pub user_rid: ::prost::alloc::string::String,
185}
186#[derive(Clone, Copy, PartialEq, ::prost::Message)]
187pub struct DeactivateUserResponse {}
188#[derive(Clone, PartialEq, ::prost::Message)]
189pub struct ReactivateUserRequest {
190 #[prost(string, tag = "1")]
191 pub user_rid: ::prost::alloc::string::String,
192}
193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
194pub struct ReactivateUserResponse {}
195#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
196#[repr(i32)]
197pub enum UserSortField {
198 Unspecified = 0,
199 Name = 1,
200 Email = 2,
201 CreateTime = 3,
202 UpdateTime = 4,
203}
204impl UserSortField {
205 pub fn as_str_name(&self) -> &'static str {
210 match self {
211 Self::Unspecified => "USER_SORT_FIELD_UNSPECIFIED",
212 Self::Name => "USER_SORT_FIELD_NAME",
213 Self::Email => "USER_SORT_FIELD_EMAIL",
214 Self::CreateTime => "USER_SORT_FIELD_CREATE_TIME",
215 Self::UpdateTime => "USER_SORT_FIELD_UPDATE_TIME",
216 }
217 }
218 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
220 match value {
221 "USER_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
222 "USER_SORT_FIELD_NAME" => Some(Self::Name),
223 "USER_SORT_FIELD_EMAIL" => Some(Self::Email),
224 "USER_SORT_FIELD_CREATE_TIME" => Some(Self::CreateTime),
225 "USER_SORT_FIELD_UPDATE_TIME" => Some(Self::UpdateTime),
226 _ => None,
227 }
228 }
229}
230#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
231#[repr(i32)]
232pub enum DefaultTimeRangeType {
233 Unspecified = 0,
234 Default = 1,
235 Absolute = 2,
236 Relative = 3,
237}
238impl DefaultTimeRangeType {
239 pub fn as_str_name(&self) -> &'static str {
244 match self {
245 Self::Unspecified => "DEFAULT_TIME_RANGE_TYPE_UNSPECIFIED",
246 Self::Default => "DEFAULT_TIME_RANGE_TYPE_DEFAULT",
247 Self::Absolute => "DEFAULT_TIME_RANGE_TYPE_ABSOLUTE",
248 Self::Relative => "DEFAULT_TIME_RANGE_TYPE_RELATIVE",
249 }
250 }
251 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
253 match value {
254 "DEFAULT_TIME_RANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
255 "DEFAULT_TIME_RANGE_TYPE_DEFAULT" => Some(Self::Default),
256 "DEFAULT_TIME_RANGE_TYPE_ABSOLUTE" => Some(Self::Absolute),
257 "DEFAULT_TIME_RANGE_TYPE_RELATIVE" => Some(Self::Relative),
258 _ => None,
259 }
260 }
261}
262#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
263#[repr(i32)]
264pub enum Appearance {
265 Unspecified = 0,
266 System = 1,
267 Light = 2,
268 Dark = 3,
269}
270impl Appearance {
271 pub fn as_str_name(&self) -> &'static str {
276 match self {
277 Self::Unspecified => "APPEARANCE_UNSPECIFIED",
278 Self::System => "APPEARANCE_SYSTEM",
279 Self::Light => "APPEARANCE_LIGHT",
280 Self::Dark => "APPEARANCE_DARK",
281 }
282 }
283 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
285 match value {
286 "APPEARANCE_UNSPECIFIED" => Some(Self::Unspecified),
287 "APPEARANCE_SYSTEM" => Some(Self::System),
288 "APPEARANCE_LIGHT" => Some(Self::Light),
289 "APPEARANCE_DARK" => Some(Self::Dark),
290 _ => None,
291 }
292 }
293}
294#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
295#[repr(i32)]
296pub enum Timezone {
297 Unspecified = 0,
298 Local = 1,
299 Utc = 2,
300}
301impl Timezone {
302 pub fn as_str_name(&self) -> &'static str {
307 match self {
308 Self::Unspecified => "TIMEZONE_UNSPECIFIED",
309 Self::Local => "TIMEZONE_LOCAL",
310 Self::Utc => "TIMEZONE_UTC",
311 }
312 }
313 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
315 match value {
316 "TIMEZONE_UNSPECIFIED" => Some(Self::Unspecified),
317 "TIMEZONE_LOCAL" => Some(Self::Local),
318 "TIMEZONE_UTC" => Some(Self::Utc),
319 _ => None,
320 }
321 }
322}
323#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
324#[repr(i32)]
325pub enum ChartTooltipMode {
326 Unspecified = 0,
327 Verbose = 1,
328 Concise = 2,
329 MultiRowConcise = 3,
330 Single = 4,
331 None = 5,
332}
333impl ChartTooltipMode {
334 pub fn as_str_name(&self) -> &'static str {
339 match self {
340 Self::Unspecified => "CHART_TOOLTIP_MODE_UNSPECIFIED",
341 Self::Verbose => "CHART_TOOLTIP_MODE_VERBOSE",
342 Self::Concise => "CHART_TOOLTIP_MODE_CONCISE",
343 Self::MultiRowConcise => "CHART_TOOLTIP_MODE_MULTI_ROW_CONCISE",
344 Self::Single => "CHART_TOOLTIP_MODE_SINGLE",
345 Self::None => "CHART_TOOLTIP_MODE_NONE",
346 }
347 }
348 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
350 match value {
351 "CHART_TOOLTIP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
352 "CHART_TOOLTIP_MODE_VERBOSE" => Some(Self::Verbose),
353 "CHART_TOOLTIP_MODE_CONCISE" => Some(Self::Concise),
354 "CHART_TOOLTIP_MODE_MULTI_ROW_CONCISE" => Some(Self::MultiRowConcise),
355 "CHART_TOOLTIP_MODE_SINGLE" => Some(Self::Single),
356 "CHART_TOOLTIP_MODE_NONE" => Some(Self::None),
357 _ => None,
358 }
359 }
360}
361#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
362#[repr(i32)]
363pub enum RelativeTimestampFormat {
364 Unspecified = 0,
365 TemporalSubunits = 1,
366 TotalSeconds = 2,
367}
368impl RelativeTimestampFormat {
369 pub fn as_str_name(&self) -> &'static str {
374 match self {
375 Self::Unspecified => "RELATIVE_TIMESTAMP_FORMAT_UNSPECIFIED",
376 Self::TemporalSubunits => "RELATIVE_TIMESTAMP_FORMAT_TEMPORAL_SUBUNITS",
377 Self::TotalSeconds => "RELATIVE_TIMESTAMP_FORMAT_TOTAL_SECONDS",
378 }
379 }
380 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
382 match value {
383 "RELATIVE_TIMESTAMP_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
384 "RELATIVE_TIMESTAMP_FORMAT_TEMPORAL_SUBUNITS" => Some(Self::TemporalSubunits),
385 "RELATIVE_TIMESTAMP_FORMAT_TOTAL_SECONDS" => Some(Self::TotalSeconds),
386 _ => None,
387 }
388 }
389}
390#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
391#[repr(i32)]
392pub enum NumberDisplayOption {
393 Unspecified = 0,
394 Scientific = 1,
395 Succinct = 2,
396 Locale = 3,
397 Plain = 4,
398}
399impl NumberDisplayOption {
400 pub fn as_str_name(&self) -> &'static str {
405 match self {
406 Self::Unspecified => "NUMBER_DISPLAY_OPTION_UNSPECIFIED",
407 Self::Scientific => "NUMBER_DISPLAY_OPTION_SCIENTIFIC",
408 Self::Succinct => "NUMBER_DISPLAY_OPTION_SUCCINCT",
409 Self::Locale => "NUMBER_DISPLAY_OPTION_LOCALE",
410 Self::Plain => "NUMBER_DISPLAY_OPTION_PLAIN",
411 }
412 }
413 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
415 match value {
416 "NUMBER_DISPLAY_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
417 "NUMBER_DISPLAY_OPTION_SCIENTIFIC" => Some(Self::Scientific),
418 "NUMBER_DISPLAY_OPTION_SUCCINCT" => Some(Self::Succinct),
419 "NUMBER_DISPLAY_OPTION_LOCALE" => Some(Self::Locale),
420 "NUMBER_DISPLAY_OPTION_PLAIN" => Some(Self::Plain),
421 _ => None,
422 }
423 }
424}
425#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
426#[repr(i32)]
427pub enum UserError {
428 Unspecified = 0,
429 InvalidUserRid = 1,
430 OneofNotSet = 2,
431 InvalidEnumValue = 3,
432 TooManyUserRids = 4,
433 QueryTooComplex = 5,
434}
435impl UserError {
436 pub fn as_str_name(&self) -> &'static str {
441 match self {
442 Self::Unspecified => "USER_ERROR_UNSPECIFIED",
443 Self::InvalidUserRid => "USER_ERROR_INVALID_USER_RID",
444 Self::OneofNotSet => "USER_ERROR_ONEOF_NOT_SET",
445 Self::InvalidEnumValue => "USER_ERROR_INVALID_ENUM_VALUE",
446 Self::TooManyUserRids => "USER_ERROR_TOO_MANY_USER_RIDS",
447 Self::QueryTooComplex => "USER_ERROR_QUERY_TOO_COMPLEX",
448 }
449 }
450 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
452 match value {
453 "USER_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
454 "USER_ERROR_INVALID_USER_RID" => Some(Self::InvalidUserRid),
455 "USER_ERROR_ONEOF_NOT_SET" => Some(Self::OneofNotSet),
456 "USER_ERROR_INVALID_ENUM_VALUE" => Some(Self::InvalidEnumValue),
457 "USER_ERROR_TOO_MANY_USER_RIDS" => Some(Self::TooManyUserRids),
458 "USER_ERROR_QUERY_TOO_COMPLEX" => Some(Self::QueryTooComplex),
459 _ => None,
460 }
461 }
462}
463pub mod user_service_client {
465 #![allow(
466 unused_variables,
467 dead_code,
468 missing_docs,
469 clippy::wildcard_imports,
470 clippy::let_unit_value,
471 )]
472 use tonic::codegen::*;
473 use tonic::codegen::http::Uri;
474 #[derive(Debug, Clone)]
475 pub struct UserServiceClient<T> {
476 inner: tonic::client::Grpc<T>,
477 }
478 impl UserServiceClient<tonic::transport::Channel> {
479 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
481 where
482 D: TryInto<tonic::transport::Endpoint>,
483 D::Error: Into<StdError>,
484 {
485 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
486 Ok(Self::new(conn))
487 }
488 }
489 impl<T> UserServiceClient<T>
490 where
491 T: tonic::client::GrpcService<tonic::body::Body>,
492 T::Error: Into<StdError>,
493 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
494 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
495 {
496 pub fn new(inner: T) -> Self {
497 let inner = tonic::client::Grpc::new(inner);
498 Self { inner }
499 }
500 pub fn with_origin(inner: T, origin: Uri) -> Self {
501 let inner = tonic::client::Grpc::with_origin(inner, origin);
502 Self { inner }
503 }
504 pub fn with_interceptor<F>(
505 inner: T,
506 interceptor: F,
507 ) -> UserServiceClient<InterceptedService<T, F>>
508 where
509 F: tonic::service::Interceptor,
510 T::ResponseBody: Default,
511 T: tonic::codegen::Service<
512 http::Request<tonic::body::Body>,
513 Response = http::Response<
514 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
515 >,
516 >,
517 <T as tonic::codegen::Service<
518 http::Request<tonic::body::Body>,
519 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
520 {
521 UserServiceClient::new(InterceptedService::new(inner, interceptor))
522 }
523 #[must_use]
528 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
529 self.inner = self.inner.send_compressed(encoding);
530 self
531 }
532 #[must_use]
534 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
535 self.inner = self.inner.accept_compressed(encoding);
536 self
537 }
538 #[must_use]
542 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
543 self.inner = self.inner.max_decoding_message_size(limit);
544 self
545 }
546 #[must_use]
550 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
551 self.inner = self.inner.max_encoding_message_size(limit);
552 self
553 }
554 pub async fn get_user(
555 &mut self,
556 request: impl tonic::IntoRequest<super::GetUserRequest>,
557 ) -> std::result::Result<
558 tonic::Response<super::GetUserResponse>,
559 tonic::Status,
560 > {
561 self.inner
562 .ready()
563 .await
564 .map_err(|e| {
565 tonic::Status::unknown(
566 format!("Service was not ready: {}", e.into()),
567 )
568 })?;
569 let codec = tonic::codec::ProstCodec::default();
570 let path = http::uri::PathAndQuery::from_static(
571 "/nominal.authentication.users.v1.UserService/GetUser",
572 );
573 let mut req = request.into_request();
574 req.extensions_mut()
575 .insert(
576 GrpcMethod::new(
577 "nominal.authentication.users.v1.UserService",
578 "GetUser",
579 ),
580 );
581 self.inner.unary(req, path, codec).await
582 }
583 pub async fn batch_get_users(
584 &mut self,
585 request: impl tonic::IntoRequest<super::BatchGetUsersRequest>,
586 ) -> std::result::Result<
587 tonic::Response<super::BatchGetUsersResponse>,
588 tonic::Status,
589 > {
590 self.inner
591 .ready()
592 .await
593 .map_err(|e| {
594 tonic::Status::unknown(
595 format!("Service was not ready: {}", e.into()),
596 )
597 })?;
598 let codec = tonic::codec::ProstCodec::default();
599 let path = http::uri::PathAndQuery::from_static(
600 "/nominal.authentication.users.v1.UserService/BatchGetUsers",
601 );
602 let mut req = request.into_request();
603 req.extensions_mut()
604 .insert(
605 GrpcMethod::new(
606 "nominal.authentication.users.v1.UserService",
607 "BatchGetUsers",
608 ),
609 );
610 self.inner.unary(req, path, codec).await
611 }
612 pub async fn search_users(
613 &mut self,
614 request: impl tonic::IntoRequest<super::SearchUsersRequest>,
615 ) -> std::result::Result<
616 tonic::Response<super::SearchUsersResponse>,
617 tonic::Status,
618 > {
619 self.inner
620 .ready()
621 .await
622 .map_err(|e| {
623 tonic::Status::unknown(
624 format!("Service was not ready: {}", e.into()),
625 )
626 })?;
627 let codec = tonic::codec::ProstCodec::default();
628 let path = http::uri::PathAndQuery::from_static(
629 "/nominal.authentication.users.v1.UserService/SearchUsers",
630 );
631 let mut req = request.into_request();
632 req.extensions_mut()
633 .insert(
634 GrpcMethod::new(
635 "nominal.authentication.users.v1.UserService",
636 "SearchUsers",
637 ),
638 );
639 self.inner.unary(req, path, codec).await
640 }
641 pub async fn get_current_user(
642 &mut self,
643 request: impl tonic::IntoRequest<super::GetCurrentUserRequest>,
644 ) -> std::result::Result<
645 tonic::Response<super::GetCurrentUserResponse>,
646 tonic::Status,
647 > {
648 self.inner
649 .ready()
650 .await
651 .map_err(|e| {
652 tonic::Status::unknown(
653 format!("Service was not ready: {}", e.into()),
654 )
655 })?;
656 let codec = tonic::codec::ProstCodec::default();
657 let path = http::uri::PathAndQuery::from_static(
658 "/nominal.authentication.users.v1.UserService/GetCurrentUser",
659 );
660 let mut req = request.into_request();
661 req.extensions_mut()
662 .insert(
663 GrpcMethod::new(
664 "nominal.authentication.users.v1.UserService",
665 "GetCurrentUser",
666 ),
667 );
668 self.inner.unary(req, path, codec).await
669 }
670 pub async fn update_current_user(
671 &mut self,
672 request: impl tonic::IntoRequest<super::UpdateCurrentUserRequest>,
673 ) -> std::result::Result<
674 tonic::Response<super::UpdateCurrentUserResponse>,
675 tonic::Status,
676 > {
677 self.inner
678 .ready()
679 .await
680 .map_err(|e| {
681 tonic::Status::unknown(
682 format!("Service was not ready: {}", e.into()),
683 )
684 })?;
685 let codec = tonic::codec::ProstCodec::default();
686 let path = http::uri::PathAndQuery::from_static(
687 "/nominal.authentication.users.v1.UserService/UpdateCurrentUser",
688 );
689 let mut req = request.into_request();
690 req.extensions_mut()
691 .insert(
692 GrpcMethod::new(
693 "nominal.authentication.users.v1.UserService",
694 "UpdateCurrentUser",
695 ),
696 );
697 self.inner.unary(req, path, codec).await
698 }
699 pub async fn get_current_user_settings(
700 &mut self,
701 request: impl tonic::IntoRequest<super::GetCurrentUserSettingsRequest>,
702 ) -> std::result::Result<
703 tonic::Response<super::GetCurrentUserSettingsResponse>,
704 tonic::Status,
705 > {
706 self.inner
707 .ready()
708 .await
709 .map_err(|e| {
710 tonic::Status::unknown(
711 format!("Service was not ready: {}", e.into()),
712 )
713 })?;
714 let codec = tonic::codec::ProstCodec::default();
715 let path = http::uri::PathAndQuery::from_static(
716 "/nominal.authentication.users.v1.UserService/GetCurrentUserSettings",
717 );
718 let mut req = request.into_request();
719 req.extensions_mut()
720 .insert(
721 GrpcMethod::new(
722 "nominal.authentication.users.v1.UserService",
723 "GetCurrentUserSettings",
724 ),
725 );
726 self.inner.unary(req, path, codec).await
727 }
728 pub async fn update_current_user_settings(
729 &mut self,
730 request: impl tonic::IntoRequest<super::UpdateCurrentUserSettingsRequest>,
731 ) -> std::result::Result<
732 tonic::Response<super::UpdateCurrentUserSettingsResponse>,
733 tonic::Status,
734 > {
735 self.inner
736 .ready()
737 .await
738 .map_err(|e| {
739 tonic::Status::unknown(
740 format!("Service was not ready: {}", e.into()),
741 )
742 })?;
743 let codec = tonic::codec::ProstCodec::default();
744 let path = http::uri::PathAndQuery::from_static(
745 "/nominal.authentication.users.v1.UserService/UpdateCurrentUserSettings",
746 );
747 let mut req = request.into_request();
748 req.extensions_mut()
749 .insert(
750 GrpcMethod::new(
751 "nominal.authentication.users.v1.UserService",
752 "UpdateCurrentUserSettings",
753 ),
754 );
755 self.inner.unary(req, path, codec).await
756 }
757 pub async fn preregister_users(
758 &mut self,
759 request: impl tonic::IntoRequest<super::PreregisterUsersRequest>,
760 ) -> std::result::Result<
761 tonic::Response<super::PreregisterUsersResponse>,
762 tonic::Status,
763 > {
764 self.inner
765 .ready()
766 .await
767 .map_err(|e| {
768 tonic::Status::unknown(
769 format!("Service was not ready: {}", e.into()),
770 )
771 })?;
772 let codec = tonic::codec::ProstCodec::default();
773 let path = http::uri::PathAndQuery::from_static(
774 "/nominal.authentication.users.v1.UserService/PreregisterUsers",
775 );
776 let mut req = request.into_request();
777 req.extensions_mut()
778 .insert(
779 GrpcMethod::new(
780 "nominal.authentication.users.v1.UserService",
781 "PreregisterUsers",
782 ),
783 );
784 self.inner.unary(req, path, codec).await
785 }
786 pub async fn deactivate_user(
787 &mut self,
788 request: impl tonic::IntoRequest<super::DeactivateUserRequest>,
789 ) -> std::result::Result<
790 tonic::Response<super::DeactivateUserResponse>,
791 tonic::Status,
792 > {
793 self.inner
794 .ready()
795 .await
796 .map_err(|e| {
797 tonic::Status::unknown(
798 format!("Service was not ready: {}", e.into()),
799 )
800 })?;
801 let codec = tonic::codec::ProstCodec::default();
802 let path = http::uri::PathAndQuery::from_static(
803 "/nominal.authentication.users.v1.UserService/DeactivateUser",
804 );
805 let mut req = request.into_request();
806 req.extensions_mut()
807 .insert(
808 GrpcMethod::new(
809 "nominal.authentication.users.v1.UserService",
810 "DeactivateUser",
811 ),
812 );
813 self.inner.unary(req, path, codec).await
814 }
815 pub async fn reactivate_user(
816 &mut self,
817 request: impl tonic::IntoRequest<super::ReactivateUserRequest>,
818 ) -> std::result::Result<
819 tonic::Response<super::ReactivateUserResponse>,
820 tonic::Status,
821 > {
822 self.inner
823 .ready()
824 .await
825 .map_err(|e| {
826 tonic::Status::unknown(
827 format!("Service was not ready: {}", e.into()),
828 )
829 })?;
830 let codec = tonic::codec::ProstCodec::default();
831 let path = http::uri::PathAndQuery::from_static(
832 "/nominal.authentication.users.v1.UserService/ReactivateUser",
833 );
834 let mut req = request.into_request();
835 req.extensions_mut()
836 .insert(
837 GrpcMethod::new(
838 "nominal.authentication.users.v1.UserService",
839 "ReactivateUser",
840 ),
841 );
842 self.inner.unary(req, path, codec).await
843 }
844 }
845}
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct CheckUserRegistrationRequest {
848 #[prost(string, tag = "1")]
849 pub email: ::prost::alloc::string::String,
850}
851#[derive(Clone, Copy, PartialEq, ::prost::Message)]
852pub struct CheckUserRegistrationResponse {
853 #[prost(bool, tag = "1")]
854 pub allowed: bool,
855}
856#[derive(Clone, Copy, PartialEq, ::prost::Message)]
857pub struct CheckFreemiumUserRegistrationRequest {}
858#[derive(Clone, Copy, PartialEq, ::prost::Message)]
859pub struct CheckFreemiumUserRegistrationResponse {
860 #[prost(bool, tag = "1")]
861 pub allowed: bool,
862}
863pub mod user_registration_service_client {
865 #![allow(
866 unused_variables,
867 dead_code,
868 missing_docs,
869 clippy::wildcard_imports,
870 clippy::let_unit_value,
871 )]
872 use tonic::codegen::*;
873 use tonic::codegen::http::Uri;
874 #[derive(Debug, Clone)]
875 pub struct UserRegistrationServiceClient<T> {
876 inner: tonic::client::Grpc<T>,
877 }
878 impl UserRegistrationServiceClient<tonic::transport::Channel> {
879 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
881 where
882 D: TryInto<tonic::transport::Endpoint>,
883 D::Error: Into<StdError>,
884 {
885 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
886 Ok(Self::new(conn))
887 }
888 }
889 impl<T> UserRegistrationServiceClient<T>
890 where
891 T: tonic::client::GrpcService<tonic::body::Body>,
892 T::Error: Into<StdError>,
893 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
894 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
895 {
896 pub fn new(inner: T) -> Self {
897 let inner = tonic::client::Grpc::new(inner);
898 Self { inner }
899 }
900 pub fn with_origin(inner: T, origin: Uri) -> Self {
901 let inner = tonic::client::Grpc::with_origin(inner, origin);
902 Self { inner }
903 }
904 pub fn with_interceptor<F>(
905 inner: T,
906 interceptor: F,
907 ) -> UserRegistrationServiceClient<InterceptedService<T, F>>
908 where
909 F: tonic::service::Interceptor,
910 T::ResponseBody: Default,
911 T: tonic::codegen::Service<
912 http::Request<tonic::body::Body>,
913 Response = http::Response<
914 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
915 >,
916 >,
917 <T as tonic::codegen::Service<
918 http::Request<tonic::body::Body>,
919 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
920 {
921 UserRegistrationServiceClient::new(
922 InterceptedService::new(inner, interceptor),
923 )
924 }
925 #[must_use]
930 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
931 self.inner = self.inner.send_compressed(encoding);
932 self
933 }
934 #[must_use]
936 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
937 self.inner = self.inner.accept_compressed(encoding);
938 self
939 }
940 #[must_use]
944 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
945 self.inner = self.inner.max_decoding_message_size(limit);
946 self
947 }
948 #[must_use]
952 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
953 self.inner = self.inner.max_encoding_message_size(limit);
954 self
955 }
956 pub async fn check_user_registration(
957 &mut self,
958 request: impl tonic::IntoRequest<super::CheckUserRegistrationRequest>,
959 ) -> std::result::Result<
960 tonic::Response<super::CheckUserRegistrationResponse>,
961 tonic::Status,
962 > {
963 self.inner
964 .ready()
965 .await
966 .map_err(|e| {
967 tonic::Status::unknown(
968 format!("Service was not ready: {}", e.into()),
969 )
970 })?;
971 let codec = tonic::codec::ProstCodec::default();
972 let path = http::uri::PathAndQuery::from_static(
973 "/nominal.authentication.users.v1.UserRegistrationService/CheckUserRegistration",
974 );
975 let mut req = request.into_request();
976 req.extensions_mut()
977 .insert(
978 GrpcMethod::new(
979 "nominal.authentication.users.v1.UserRegistrationService",
980 "CheckUserRegistration",
981 ),
982 );
983 self.inner.unary(req, path, codec).await
984 }
985 pub async fn check_freemium_user_registration(
986 &mut self,
987 request: impl tonic::IntoRequest<super::CheckFreemiumUserRegistrationRequest>,
988 ) -> std::result::Result<
989 tonic::Response<super::CheckFreemiumUserRegistrationResponse>,
990 tonic::Status,
991 > {
992 self.inner
993 .ready()
994 .await
995 .map_err(|e| {
996 tonic::Status::unknown(
997 format!("Service was not ready: {}", e.into()),
998 )
999 })?;
1000 let codec = tonic::codec::ProstCodec::default();
1001 let path = http::uri::PathAndQuery::from_static(
1002 "/nominal.authentication.users.v1.UserRegistrationService/CheckFreemiumUserRegistration",
1003 );
1004 let mut req = request.into_request();
1005 req.extensions_mut()
1006 .insert(
1007 GrpcMethod::new(
1008 "nominal.authentication.users.v1.UserRegistrationService",
1009 "CheckFreemiumUserRegistration",
1010 ),
1011 );
1012 self.inner.unary(req, path, codec).await
1013 }
1014 }
1015}
1016#[derive(Clone, PartialEq, ::prost::Message)]
1017pub struct IdentityProviderTokens {
1018 #[prost(string, tag = "1")]
1019 pub id_token: ::prost::alloc::string::String,
1020 #[prost(string, optional, tag = "2")]
1021 pub access_token: ::core::option::Option<::prost::alloc::string::String>,
1022}
1023#[derive(Clone, PartialEq, ::prost::Message)]
1024pub struct UserSessionOrganizationHint {
1025 #[prost(oneof = "user_session_organization_hint::Hint", tags = "1, 2")]
1026 pub hint: ::core::option::Option<user_session_organization_hint::Hint>,
1027}
1028pub mod user_session_organization_hint {
1030 #[derive(Clone, PartialEq, ::prost::Oneof)]
1031 pub enum Hint {
1032 #[prost(string, tag = "1")]
1033 OrganizationRid(::prost::alloc::string::String),
1034 #[prost(string, tag = "2")]
1035 WorkspaceRid(::prost::alloc::string::String),
1036 }
1037}
1038#[derive(Clone, PartialEq, ::prost::Message)]
1039pub struct IdentityTokenSessionCredentials {
1040 #[prost(message, optional, tag = "1")]
1041 pub tokens: ::core::option::Option<IdentityProviderTokens>,
1042 #[prost(message, optional, tag = "2")]
1043 pub organization_hint: ::core::option::Option<UserSessionOrganizationHint>,
1044}
1045#[derive(Clone, PartialEq, ::prost::Message)]
1046pub struct AccessTokenSessionCredentials {
1047 #[prost(string, tag = "1")]
1048 pub access_token: ::prost::alloc::string::String,
1049 #[prost(string, optional, tag = "2")]
1050 pub organization_rid: ::core::option::Option<::prost::alloc::string::String>,
1051}
1052#[derive(Clone, PartialEq, ::prost::Message)]
1053pub struct CurrentSessionCredentials {
1054 #[prost(string, tag = "1")]
1055 pub organization_rid: ::prost::alloc::string::String,
1056}
1057#[derive(Clone, PartialEq, ::prost::Message)]
1058pub struct CreateUserSessionRequest {
1059 #[prost(oneof = "create_user_session_request::Credentials", tags = "1, 2, 3")]
1060 pub credentials: ::core::option::Option<create_user_session_request::Credentials>,
1061}
1062pub mod create_user_session_request {
1064 #[derive(Clone, PartialEq, ::prost::Oneof)]
1065 pub enum Credentials {
1066 #[prost(message, tag = "1")]
1067 IdentityToken(super::IdentityTokenSessionCredentials),
1068 #[prost(message, tag = "2")]
1069 AccessToken(super::AccessTokenSessionCredentials),
1070 #[prost(message, tag = "3")]
1071 CurrentSession(super::CurrentSessionCredentials),
1072 }
1073}
1074#[derive(Clone, PartialEq, ::prost::Message)]
1075pub struct UserSession {
1076 #[prost(string, tag = "1")]
1077 pub access_token: ::prost::alloc::string::String,
1078 #[prost(message, optional, tag = "2")]
1079 pub expire_time: ::core::option::Option<
1080 super::super::super::super::google::protobuf::Timestamp,
1081 >,
1082 #[prost(string, tag = "3")]
1083 pub user_rid: ::prost::alloc::string::String,
1084 #[prost(string, tag = "4")]
1085 pub organization_rid: ::prost::alloc::string::String,
1086 #[prost(bool, tag = "5")]
1087 pub is_guest: bool,
1088}
1089#[derive(Clone, PartialEq, ::prost::Message)]
1090pub struct CreateUserSessionResponse {
1091 #[prost(message, optional, tag = "1")]
1092 pub session: ::core::option::Option<UserSession>,
1093}
1094#[derive(Clone, PartialEq, ::prost::Message)]
1095pub struct EligibleUserOrganization {
1096 #[prost(string, tag = "1")]
1097 pub organization_rid: ::prost::alloc::string::String,
1098 #[prost(string, tag = "2")]
1099 pub display_name: ::prost::alloc::string::String,
1100 #[prost(string, optional, tag = "3")]
1101 pub organization_display_name: ::core::option::Option<
1102 ::prost::alloc::string::String,
1103 >,
1104}
1105#[derive(Clone, PartialEq, ::prost::Message)]
1106pub struct ListEligibleUserOrganizationsRequest {
1107 #[prost(message, optional, tag = "1")]
1108 pub tokens: ::core::option::Option<IdentityProviderTokens>,
1109 #[prost(int32, optional, tag = "2")]
1110 pub page_size: ::core::option::Option<i32>,
1111 #[prost(string, tag = "3")]
1112 pub page_token: ::prost::alloc::string::String,
1113}
1114#[derive(Clone, PartialEq, ::prost::Message)]
1115pub struct ListEligibleUserOrganizationsResponse {
1116 #[prost(message, repeated, tag = "1")]
1117 pub organizations: ::prost::alloc::vec::Vec<EligibleUserOrganization>,
1118 #[prost(string, tag = "2")]
1119 pub next_page_token: ::prost::alloc::string::String,
1120}
1121#[derive(Clone, PartialEq, ::prost::Message)]
1122pub struct ResolveIdentityProviderSessionEndEndpointRequest {
1123 #[prost(string, tag = "1")]
1124 pub id_token: ::prost::alloc::string::String,
1125}
1126#[derive(Clone, PartialEq, ::prost::Message)]
1127pub struct ResolveIdentityProviderSessionEndEndpointResponse {
1128 #[prost(string, optional, tag = "1")]
1129 pub endpoint: ::core::option::Option<::prost::alloc::string::String>,
1130}
1131#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1132#[repr(i32)]
1133pub enum UserSessionError {
1134 Unspecified = 0,
1135 InvalidRid = 1,
1136 InvalidPageToken = 2,
1137 UnrepresentableExpiry = 3,
1138 InvalidCredentials = 4,
1139}
1140impl UserSessionError {
1141 pub fn as_str_name(&self) -> &'static str {
1146 match self {
1147 Self::Unspecified => "USER_SESSION_ERROR_UNSPECIFIED",
1148 Self::InvalidRid => "USER_SESSION_ERROR_INVALID_RID",
1149 Self::InvalidPageToken => "USER_SESSION_ERROR_INVALID_PAGE_TOKEN",
1150 Self::UnrepresentableExpiry => "USER_SESSION_ERROR_UNREPRESENTABLE_EXPIRY",
1151 Self::InvalidCredentials => "USER_SESSION_ERROR_INVALID_CREDENTIALS",
1152 }
1153 }
1154 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1156 match value {
1157 "USER_SESSION_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1158 "USER_SESSION_ERROR_INVALID_RID" => Some(Self::InvalidRid),
1159 "USER_SESSION_ERROR_INVALID_PAGE_TOKEN" => Some(Self::InvalidPageToken),
1160 "USER_SESSION_ERROR_UNREPRESENTABLE_EXPIRY" => {
1161 Some(Self::UnrepresentableExpiry)
1162 }
1163 "USER_SESSION_ERROR_INVALID_CREDENTIALS" => Some(Self::InvalidCredentials),
1164 _ => None,
1165 }
1166 }
1167}
1168pub mod user_session_service_client {
1170 #![allow(
1171 unused_variables,
1172 dead_code,
1173 missing_docs,
1174 clippy::wildcard_imports,
1175 clippy::let_unit_value,
1176 )]
1177 use tonic::codegen::*;
1178 use tonic::codegen::http::Uri;
1179 #[derive(Debug, Clone)]
1180 pub struct UserSessionServiceClient<T> {
1181 inner: tonic::client::Grpc<T>,
1182 }
1183 impl UserSessionServiceClient<tonic::transport::Channel> {
1184 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1186 where
1187 D: TryInto<tonic::transport::Endpoint>,
1188 D::Error: Into<StdError>,
1189 {
1190 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1191 Ok(Self::new(conn))
1192 }
1193 }
1194 impl<T> UserSessionServiceClient<T>
1195 where
1196 T: tonic::client::GrpcService<tonic::body::Body>,
1197 T::Error: Into<StdError>,
1198 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1199 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1200 {
1201 pub fn new(inner: T) -> Self {
1202 let inner = tonic::client::Grpc::new(inner);
1203 Self { inner }
1204 }
1205 pub fn with_origin(inner: T, origin: Uri) -> Self {
1206 let inner = tonic::client::Grpc::with_origin(inner, origin);
1207 Self { inner }
1208 }
1209 pub fn with_interceptor<F>(
1210 inner: T,
1211 interceptor: F,
1212 ) -> UserSessionServiceClient<InterceptedService<T, F>>
1213 where
1214 F: tonic::service::Interceptor,
1215 T::ResponseBody: Default,
1216 T: tonic::codegen::Service<
1217 http::Request<tonic::body::Body>,
1218 Response = http::Response<
1219 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1220 >,
1221 >,
1222 <T as tonic::codegen::Service<
1223 http::Request<tonic::body::Body>,
1224 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1225 {
1226 UserSessionServiceClient::new(InterceptedService::new(inner, interceptor))
1227 }
1228 #[must_use]
1233 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1234 self.inner = self.inner.send_compressed(encoding);
1235 self
1236 }
1237 #[must_use]
1239 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1240 self.inner = self.inner.accept_compressed(encoding);
1241 self
1242 }
1243 #[must_use]
1247 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1248 self.inner = self.inner.max_decoding_message_size(limit);
1249 self
1250 }
1251 #[must_use]
1255 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1256 self.inner = self.inner.max_encoding_message_size(limit);
1257 self
1258 }
1259 pub async fn create_user_session(
1260 &mut self,
1261 request: impl tonic::IntoRequest<super::CreateUserSessionRequest>,
1262 ) -> std::result::Result<
1263 tonic::Response<super::CreateUserSessionResponse>,
1264 tonic::Status,
1265 > {
1266 self.inner
1267 .ready()
1268 .await
1269 .map_err(|e| {
1270 tonic::Status::unknown(
1271 format!("Service was not ready: {}", e.into()),
1272 )
1273 })?;
1274 let codec = tonic::codec::ProstCodec::default();
1275 let path = http::uri::PathAndQuery::from_static(
1276 "/nominal.authentication.users.v1.UserSessionService/CreateUserSession",
1277 );
1278 let mut req = request.into_request();
1279 req.extensions_mut()
1280 .insert(
1281 GrpcMethod::new(
1282 "nominal.authentication.users.v1.UserSessionService",
1283 "CreateUserSession",
1284 ),
1285 );
1286 self.inner.unary(req, path, codec).await
1287 }
1288 pub async fn list_eligible_user_organizations(
1289 &mut self,
1290 request: impl tonic::IntoRequest<super::ListEligibleUserOrganizationsRequest>,
1291 ) -> std::result::Result<
1292 tonic::Response<super::ListEligibleUserOrganizationsResponse>,
1293 tonic::Status,
1294 > {
1295 self.inner
1296 .ready()
1297 .await
1298 .map_err(|e| {
1299 tonic::Status::unknown(
1300 format!("Service was not ready: {}", e.into()),
1301 )
1302 })?;
1303 let codec = tonic::codec::ProstCodec::default();
1304 let path = http::uri::PathAndQuery::from_static(
1305 "/nominal.authentication.users.v1.UserSessionService/ListEligibleUserOrganizations",
1306 );
1307 let mut req = request.into_request();
1308 req.extensions_mut()
1309 .insert(
1310 GrpcMethod::new(
1311 "nominal.authentication.users.v1.UserSessionService",
1312 "ListEligibleUserOrganizations",
1313 ),
1314 );
1315 self.inner.unary(req, path, codec).await
1316 }
1317 pub async fn resolve_identity_provider_session_end_endpoint(
1318 &mut self,
1319 request: impl tonic::IntoRequest<
1320 super::ResolveIdentityProviderSessionEndEndpointRequest,
1321 >,
1322 ) -> std::result::Result<
1323 tonic::Response<super::ResolveIdentityProviderSessionEndEndpointResponse>,
1324 tonic::Status,
1325 > {
1326 self.inner
1327 .ready()
1328 .await
1329 .map_err(|e| {
1330 tonic::Status::unknown(
1331 format!("Service was not ready: {}", e.into()),
1332 )
1333 })?;
1334 let codec = tonic::codec::ProstCodec::default();
1335 let path = http::uri::PathAndQuery::from_static(
1336 "/nominal.authentication.users.v1.UserSessionService/ResolveIdentityProviderSessionEndEndpoint",
1337 );
1338 let mut req = request.into_request();
1339 req.extensions_mut()
1340 .insert(
1341 GrpcMethod::new(
1342 "nominal.authentication.users.v1.UserSessionService",
1343 "ResolveIdentityProviderSessionEndEndpoint",
1344 ),
1345 );
1346 self.inner.unary(req, path, codec).await
1347 }
1348 }
1349}