aws_sdk_quicksight/operation/
list_group_memberships.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ListGroupMemberships`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ListGroupMemberships;
6impl ListGroupMemberships {
7    /// Creates a new `ListGroupMemberships`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::list_group_memberships::ListGroupMembershipsInput,
14    ) -> ::std::result::Result<
15        crate::operation::list_group_memberships::ListGroupMembershipsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::list_group_memberships::ListGroupMembershipsError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::list_group_memberships::ListGroupMembershipsError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::list_group_memberships::ListGroupMembershipsOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::list_group_memberships::ListGroupMembershipsInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("QuickSight", "ListGroupMemberships", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "QuickSight.ListGroupMemberships",
59                "rpc.service" = "QuickSight",
60                "rpc.method" = "ListGroupMemberships",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
74            ::aws_runtime::auth::sigv4::SCHEME_ID,
75        ]));
76        if let ::std::option::Option::Some(config_override) = config_override {
77            for plugin in config_override.runtime_plugins.iter().cloned() {
78                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
79            }
80            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
81                config_override,
82                client_config.config.clone(),
83                &client_config.runtime_components,
84            ));
85        }
86        runtime_plugins
87    }
88}
89impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ListGroupMemberships {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ListGroupMemberships");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            ListGroupMembershipsRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            ListGroupMembershipsResponseDeserializer,
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
101            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
105            "ListGroupMemberships",
106            "QuickSight",
107        ));
108        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
109        signing_options.double_uri_encode = true;
110        signing_options.content_sha256_header = false;
111        signing_options.normalize_uri_path = true;
112        signing_options.payload_override = None;
113
114        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
115            signing_options,
116            ..::std::default::Default::default()
117        });
118
119        ::std::option::Option::Some(cfg.freeze())
120    }
121
122    fn runtime_components(
123        &self,
124        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
125    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
126        #[allow(unused_mut)]
127        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ListGroupMemberships")
128            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
129            .with_interceptor(ListGroupMembershipsEndpointParamsInterceptor)
130            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
131                crate::operation::list_group_memberships::ListGroupMembershipsError,
132            >::new())
133            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
134                crate::operation::list_group_memberships::ListGroupMembershipsError,
135            >::new())
136            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
137                crate::operation::list_group_memberships::ListGroupMembershipsError,
138            >::new());
139
140        ::std::borrow::Cow::Owned(rcb)
141    }
142}
143
144#[derive(Debug)]
145struct ListGroupMembershipsResponseDeserializer;
146impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListGroupMembershipsResponseDeserializer {
147    fn deserialize_nonstreaming(
148        &self,
149        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
150    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
151        let (success, status) = (response.status().is_success(), response.status().as_u16());
152        let headers = response.headers();
153        let body = response.body().bytes().expect("body loaded");
154        #[allow(unused_mut)]
155        let mut force_error = false;
156        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
157        let parse_result = if !success && status != 200 || force_error {
158            crate::protocol_serde::shape_list_group_memberships::de_list_group_memberships_http_error(status, headers, body)
159        } else {
160            crate::protocol_serde::shape_list_group_memberships::de_list_group_memberships_http_response(status, headers, body)
161        };
162        crate::protocol_serde::type_erase_result(parse_result)
163    }
164}
165#[derive(Debug)]
166struct ListGroupMembershipsRequestSerializer;
167impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ListGroupMembershipsRequestSerializer {
168    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
169    fn serialize_input(
170        &self,
171        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
172        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
173    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
174        let input = input
175            .downcast::<crate::operation::list_group_memberships::ListGroupMembershipsInput>()
176            .expect("correct type");
177        let _header_serialization_settings = _cfg
178            .load::<crate::serialization_settings::HeaderSerializationSettings>()
179            .cloned()
180            .unwrap_or_default();
181        let mut request_builder = {
182            fn uri_base(
183                _input: &crate::operation::list_group_memberships::ListGroupMembershipsInput,
184                output: &mut ::std::string::String,
185            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
186                use ::std::fmt::Write as _;
187                let input_1 = &_input.aws_account_id;
188                let input_1 = input_1
189                    .as_ref()
190                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("aws_account_id", "cannot be empty or unset"))?;
191                let aws_account_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
192                if aws_account_id.is_empty() {
193                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
194                        "aws_account_id",
195                        "cannot be empty or unset",
196                    ));
197                }
198                let input_2 = &_input.namespace;
199                let input_2 = input_2
200                    .as_ref()
201                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("namespace", "cannot be empty or unset"))?;
202                let namespace = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
203                if namespace.is_empty() {
204                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
205                        "namespace",
206                        "cannot be empty or unset",
207                    ));
208                }
209                let input_3 = &_input.group_name;
210                let input_3 = input_3
211                    .as_ref()
212                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("group_name", "cannot be empty or unset"))?;
213                let group_name = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
214                if group_name.is_empty() {
215                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
216                        "group_name",
217                        "cannot be empty or unset",
218                    ));
219                }
220                ::std::write!(
221                    output,
222                    "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members",
223                    AwsAccountId = aws_account_id,
224                    Namespace = namespace,
225                    GroupName = group_name
226                )
227                .expect("formatting should succeed");
228                ::std::result::Result::Ok(())
229            }
230            fn uri_query(
231                _input: &crate::operation::list_group_memberships::ListGroupMembershipsInput,
232                mut output: &mut ::std::string::String,
233            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
234                let mut query = ::aws_smithy_http::query::Writer::new(output);
235                if let ::std::option::Option::Some(inner_4) = &_input.next_token {
236                    {
237                        query.push_kv("next-token", &::aws_smithy_http::query::fmt_string(inner_4));
238                    }
239                }
240                if let ::std::option::Option::Some(inner_5) = &_input.max_results {
241                    {
242                        query.push_kv("max-results", ::aws_smithy_types::primitive::Encoder::from(*inner_5).encode());
243                    }
244                }
245                ::std::result::Result::Ok(())
246            }
247            #[allow(clippy::unnecessary_wraps)]
248            fn update_http_builder(
249                input: &crate::operation::list_group_memberships::ListGroupMembershipsInput,
250                builder: ::http::request::Builder,
251            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
252                let mut uri = ::std::string::String::new();
253                uri_base(input, &mut uri)?;
254                uri_query(input, &mut uri)?;
255                ::std::result::Result::Ok(builder.method("GET").uri(uri))
256            }
257            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
258            builder
259        };
260        let body = ::aws_smithy_types::body::SdkBody::from("");
261
262        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
263    }
264}
265#[derive(Debug)]
266struct ListGroupMembershipsEndpointParamsInterceptor;
267
268impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListGroupMembershipsEndpointParamsInterceptor {
269    fn name(&self) -> &'static str {
270        "ListGroupMembershipsEndpointParamsInterceptor"
271    }
272
273    fn read_before_execution(
274        &self,
275        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
276            '_,
277            ::aws_smithy_runtime_api::client::interceptors::context::Input,
278            ::aws_smithy_runtime_api::client::interceptors::context::Output,
279            ::aws_smithy_runtime_api::client::interceptors::context::Error,
280        >,
281        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
282    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
283        let _input = context
284            .input()
285            .downcast_ref::<ListGroupMembershipsInput>()
286            .ok_or("failed to downcast to ListGroupMembershipsInput")?;
287
288        let params = crate::config::endpoint::Params::builder()
289            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
290            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
291            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
292            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
293            .build()
294            .map_err(|err| {
295                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
296            })?;
297        cfg.interceptor_state()
298            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
299        ::std::result::Result::Ok(())
300    }
301}
302
303// The get_* functions below are generated from JMESPath expressions in the
304// operationContextParams trait. They target the operation's input shape.
305
306/// Error type for the `ListGroupMembershipsError` operation.
307#[non_exhaustive]
308#[derive(::std::fmt::Debug)]
309pub enum ListGroupMembershipsError {
310    /// <p>You don't have access to this item. The provided credentials couldn't be validated. You might not be authorized to carry out the request. Make sure that your account is authorized to use the Amazon QuickSight service, that your policies have the correct permissions, and that you are using the correct credentials.</p>
311    AccessDeniedException(crate::types::error::AccessDeniedException),
312    /// <p>An internal failure occurred.</p>
313    InternalFailureException(crate::types::error::InternalFailureException),
314    /// <p>The <code>NextToken</code> value isn't valid.</p>
315    InvalidNextTokenException(crate::types::error::InvalidNextTokenException),
316    /// <p>One or more parameters has a value that isn't valid.</p>
317    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
318    /// <p>One or more preconditions aren't met.</p>
319    PreconditionNotMetException(crate::types::error::PreconditionNotMetException),
320    /// <p>One or more resources can't be found.</p>
321    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
322    /// <p>This resource is currently unavailable.</p>
323    ResourceUnavailableException(crate::types::error::ResourceUnavailableException),
324    /// <p>Access is throttled.</p>
325    ThrottlingException(crate::types::error::ThrottlingException),
326    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
327    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
328    variable wildcard pattern and check `.code()`:
329     \
330    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
331     \
332    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ListGroupMembershipsError) for what information is available for the error.")]
333    Unhandled(crate::error::sealed_unhandled::Unhandled),
334}
335impl ListGroupMembershipsError {
336    /// Creates the `ListGroupMembershipsError::Unhandled` variant from any error type.
337    pub fn unhandled(
338        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
339    ) -> Self {
340        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
341            source: err.into(),
342            meta: ::std::default::Default::default(),
343        })
344    }
345
346    /// Creates the `ListGroupMembershipsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
347    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
348        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
349            source: err.clone().into(),
350            meta: err,
351        })
352    }
353    ///
354    /// Returns error metadata, which includes the error code, message,
355    /// request ID, and potentially additional information.
356    ///
357    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
358        match self {
359            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
360            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
361            Self::InvalidNextTokenException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
362            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
363            Self::PreconditionNotMetException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
364            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::ResourceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::Unhandled(e) => &e.meta,
368        }
369    }
370    /// Returns `true` if the error kind is `ListGroupMembershipsError::AccessDeniedException`.
371    pub fn is_access_denied_exception(&self) -> bool {
372        matches!(self, Self::AccessDeniedException(_))
373    }
374    /// Returns `true` if the error kind is `ListGroupMembershipsError::InternalFailureException`.
375    pub fn is_internal_failure_exception(&self) -> bool {
376        matches!(self, Self::InternalFailureException(_))
377    }
378    /// Returns `true` if the error kind is `ListGroupMembershipsError::InvalidNextTokenException`.
379    pub fn is_invalid_next_token_exception(&self) -> bool {
380        matches!(self, Self::InvalidNextTokenException(_))
381    }
382    /// Returns `true` if the error kind is `ListGroupMembershipsError::InvalidParameterValueException`.
383    pub fn is_invalid_parameter_value_exception(&self) -> bool {
384        matches!(self, Self::InvalidParameterValueException(_))
385    }
386    /// Returns `true` if the error kind is `ListGroupMembershipsError::PreconditionNotMetException`.
387    pub fn is_precondition_not_met_exception(&self) -> bool {
388        matches!(self, Self::PreconditionNotMetException(_))
389    }
390    /// Returns `true` if the error kind is `ListGroupMembershipsError::ResourceNotFoundException`.
391    pub fn is_resource_not_found_exception(&self) -> bool {
392        matches!(self, Self::ResourceNotFoundException(_))
393    }
394    /// Returns `true` if the error kind is `ListGroupMembershipsError::ResourceUnavailableException`.
395    pub fn is_resource_unavailable_exception(&self) -> bool {
396        matches!(self, Self::ResourceUnavailableException(_))
397    }
398    /// Returns `true` if the error kind is `ListGroupMembershipsError::ThrottlingException`.
399    pub fn is_throttling_exception(&self) -> bool {
400        matches!(self, Self::ThrottlingException(_))
401    }
402}
403impl ::std::error::Error for ListGroupMembershipsError {
404    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
405        match self {
406            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
407            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
408            Self::InvalidNextTokenException(_inner) => ::std::option::Option::Some(_inner),
409            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
410            Self::PreconditionNotMetException(_inner) => ::std::option::Option::Some(_inner),
411            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
412            Self::ResourceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
413            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
414            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
415        }
416    }
417}
418impl ::std::fmt::Display for ListGroupMembershipsError {
419    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
420        match self {
421            Self::AccessDeniedException(_inner) => _inner.fmt(f),
422            Self::InternalFailureException(_inner) => _inner.fmt(f),
423            Self::InvalidNextTokenException(_inner) => _inner.fmt(f),
424            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
425            Self::PreconditionNotMetException(_inner) => _inner.fmt(f),
426            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
427            Self::ResourceUnavailableException(_inner) => _inner.fmt(f),
428            Self::ThrottlingException(_inner) => _inner.fmt(f),
429            Self::Unhandled(_inner) => {
430                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
431                    write!(f, "unhandled error ({code})")
432                } else {
433                    f.write_str("unhandled error")
434                }
435            }
436        }
437    }
438}
439impl ::aws_smithy_types::retry::ProvideErrorKind for ListGroupMembershipsError {
440    fn code(&self) -> ::std::option::Option<&str> {
441        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
442    }
443    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
444        ::std::option::Option::None
445    }
446}
447impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ListGroupMembershipsError {
448    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
449        match self {
450            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
451            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
452            Self::InvalidNextTokenException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
453            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
454            Self::PreconditionNotMetException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
455            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
456            Self::ResourceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
457            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
458            Self::Unhandled(_inner) => &_inner.meta,
459        }
460    }
461}
462impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ListGroupMembershipsError {
463    fn create_unhandled_error(
464        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
465        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
466    ) -> Self {
467        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
468            source,
469            meta: meta.unwrap_or_default(),
470        })
471    }
472}
473impl ::aws_types::request_id::RequestId for crate::operation::list_group_memberships::ListGroupMembershipsError {
474    fn request_id(&self) -> Option<&str> {
475        self.meta().request_id()
476    }
477}
478
479pub use crate::operation::list_group_memberships::_list_group_memberships_output::ListGroupMembershipsOutput;
480
481pub use crate::operation::list_group_memberships::_list_group_memberships_input::ListGroupMembershipsInput;
482
483mod _list_group_memberships_input;
484
485mod _list_group_memberships_output;
486
487/// Builders
488pub mod builders;
489
490/// Paginator for this operation
491pub mod paginator;