aws_sdk_quicksight/operation/
describe_role_custom_permission.rs

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