aws_sdk_iot/operation/
register_certificate.rs

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