aws_sdk_iotsitewise/operation/
create_asset_model_composite_model.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateAssetModelCompositeModel`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateAssetModelCompositeModel;
6impl CreateAssetModelCompositeModel {
7    /// Creates a new `CreateAssetModelCompositeModel`
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::create_asset_model_composite_model::CreateAssetModelCompositeModelInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelError,
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::create_asset_model_composite_model::CreateAssetModelCompositeModelError>()
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::create_asset_model_composite_model::CreateAssetModelCompositeModelOutput>()
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::create_asset_model_composite_model::CreateAssetModelCompositeModelInput,
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            "IoTSiteWise",
56            "CreateAssetModelCompositeModel",
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            "IoTSiteWise.CreateAssetModelCompositeModel",
65            "rpc.service" = "IoTSiteWise",
66            "rpc.method" = "CreateAssetModelCompositeModel",
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_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
80            |token_provider, input| {
81                let input: &mut crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelInput =
82                    input.downcast_mut().expect("correct type");
83                if input.client_token.is_none() {
84                    input.client_token = ::std::option::Option::Some(token_provider.make_idempotency_token());
85                }
86            },
87        ));
88        if let ::std::option::Option::Some(config_override) = config_override {
89            for plugin in config_override.runtime_plugins.iter().cloned() {
90                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
91            }
92            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
93                config_override,
94                client_config.config.clone(),
95                &client_config.runtime_components,
96            ));
97        }
98        runtime_plugins
99    }
100}
101impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateAssetModelCompositeModel {
102    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
103        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateAssetModelCompositeModel");
104
105        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
106            CreateAssetModelCompositeModelRequestSerializer,
107        ));
108        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
109            CreateAssetModelCompositeModelResponseDeserializer,
110        ));
111
112        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
113            crate::config::auth::Params::builder()
114                .operation_name("CreateAssetModelCompositeModel")
115                .build()
116                .expect("required fields set"),
117        ));
118
119        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
120            "CreateAssetModelCompositeModel",
121            "IoTSiteWise",
122        ));
123        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
124        signing_options.double_uri_encode = true;
125        signing_options.content_sha256_header = false;
126        signing_options.normalize_uri_path = true;
127        signing_options.payload_override = None;
128
129        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
130            signing_options,
131            ..::std::default::Default::default()
132        });
133
134        ::std::option::Option::Some(cfg.freeze())
135    }
136
137    fn runtime_components(
138        &self,
139        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
140    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
141        #[allow(unused_mut)]
142        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateAssetModelCompositeModel")
143            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
144            .with_interceptor(CreateAssetModelCompositeModelEndpointParamsInterceptor)
145            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
146                crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelError,
147            >::new())
148            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
149                crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelError,
150            >::new())
151            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
152                crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelError,
153            >::new());
154
155        ::std::borrow::Cow::Owned(rcb)
156    }
157}
158
159#[derive(Debug)]
160struct CreateAssetModelCompositeModelResponseDeserializer;
161impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateAssetModelCompositeModelResponseDeserializer {
162    fn deserialize_nonstreaming(
163        &self,
164        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
165    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
166        let (success, status) = (response.status().is_success(), response.status().as_u16());
167        let headers = response.headers();
168        let body = response.body().bytes().expect("body loaded");
169        #[allow(unused_mut)]
170        let mut force_error = false;
171        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
172        let parse_result = if !success && status != 202 || force_error {
173            crate::protocol_serde::shape_create_asset_model_composite_model::de_create_asset_model_composite_model_http_error(status, headers, body)
174        } else {
175            crate::protocol_serde::shape_create_asset_model_composite_model::de_create_asset_model_composite_model_http_response(
176                status, headers, body,
177            )
178        };
179        crate::protocol_serde::type_erase_result(parse_result)
180    }
181}
182#[derive(Debug)]
183struct CreateAssetModelCompositeModelRequestSerializer;
184impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateAssetModelCompositeModelRequestSerializer {
185    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
186    fn serialize_input(
187        &self,
188        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
189        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
190    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
191        let input = input
192            .downcast::<crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelInput>()
193            .expect("correct type");
194        let _header_serialization_settings = _cfg
195            .load::<crate::serialization_settings::HeaderSerializationSettings>()
196            .cloned()
197            .unwrap_or_default();
198        let mut request_builder = {
199            #[allow(clippy::uninlined_format_args)]
200            fn uri_base(
201                _input: &crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelInput,
202                output: &mut ::std::string::String,
203            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
204                use ::std::fmt::Write as _;
205                let input_1 = &_input.asset_model_id;
206                let input_1 = input_1
207                    .as_ref()
208                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("asset_model_id", "cannot be empty or unset"))?;
209                let asset_model_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
210                if asset_model_id.is_empty() {
211                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
212                        "asset_model_id",
213                        "cannot be empty or unset",
214                    ));
215                }
216                ::std::write!(output, "/asset-models/{assetModelId}/composite-models", assetModelId = asset_model_id)
217                    .expect("formatting should succeed");
218                ::std::result::Result::Ok(())
219            }
220            #[allow(clippy::unnecessary_wraps)]
221            fn update_http_builder(
222                input: &crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelInput,
223                builder: ::http::request::Builder,
224            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
225                let mut uri = ::std::string::String::new();
226                uri_base(input, &mut uri)?;
227                let builder =
228                    crate::protocol_serde::shape_create_asset_model_composite_model::ser_create_asset_model_composite_model_headers(input, builder)?;
229                ::std::result::Result::Ok(builder.method("POST").uri(uri))
230            }
231            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
232            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
233            builder
234        };
235        let body = ::aws_smithy_types::body::SdkBody::from(
236            crate::protocol_serde::shape_create_asset_model_composite_model::ser_create_asset_model_composite_model_input(&input)?,
237        );
238        if let Some(content_length) = body.content_length() {
239            let content_length = content_length.to_string();
240            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
241        }
242        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
243    }
244}
245#[derive(Debug)]
246struct CreateAssetModelCompositeModelEndpointParamsInterceptor;
247
248impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateAssetModelCompositeModelEndpointParamsInterceptor {
249    fn name(&self) -> &'static str {
250        "CreateAssetModelCompositeModelEndpointParamsInterceptor"
251    }
252
253    fn read_before_execution(
254        &self,
255        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
256            '_,
257            ::aws_smithy_runtime_api::client::interceptors::context::Input,
258            ::aws_smithy_runtime_api::client::interceptors::context::Output,
259            ::aws_smithy_runtime_api::client::interceptors::context::Error,
260        >,
261        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
262    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
263        let _input = context
264            .input()
265            .downcast_ref::<CreateAssetModelCompositeModelInput>()
266            .ok_or("failed to downcast to CreateAssetModelCompositeModelInput")?;
267
268        let endpoint_prefix = ::aws_smithy_runtime_api::client::endpoint::EndpointPrefix::new("api.").map_err(|err| {
269            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint prefix could not be built", err)
270        })?;
271        cfg.interceptor_state().store_put(endpoint_prefix);
272
273        let params = crate::config::endpoint::Params::builder()
274            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
275            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
276            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
277            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
278            .build()
279            .map_err(|err| {
280                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
281            })?;
282        cfg.interceptor_state()
283            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
284        ::std::result::Result::Ok(())
285    }
286}
287
288// The get_* functions below are generated from JMESPath expressions in the
289// operationContextParams trait. They target the operation's input shape.
290
291/// Error type for the `CreateAssetModelCompositeModelError` operation.
292#[non_exhaustive]
293#[derive(::std::fmt::Debug)]
294pub enum CreateAssetModelCompositeModelError {
295    /// <p>Your request has conflicting operations. This can occur if you're trying to perform more than one operation on the same resource at the same time.</p>
296    ConflictingOperationException(crate::types::error::ConflictingOperationException),
297    /// <p>IoT SiteWise can't process your request right now. Try again later.</p>
298    InternalFailureException(crate::types::error::InternalFailureException),
299    /// <p>The request isn't valid. This can occur if your request contains malformed JSON or unsupported characters. Check your request and try again.</p>
300    InvalidRequestException(crate::types::error::InvalidRequestException),
301    /// <p>You've reached the quota for a resource. For example, this can occur if you're trying to associate more than the allowed number of child assets or attempting to create more than the allowed number of properties for an asset model.</p>
302    /// <p>For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>
303    LimitExceededException(crate::types::error::LimitExceededException),
304    /// <p>The precondition in one or more of the request-header fields evaluated to <code>FALSE</code>.</p>
305    PreconditionFailedException(crate::types::error::PreconditionFailedException),
306    /// <p>The resource already exists.</p>
307    ResourceAlreadyExistsException(crate::types::error::ResourceAlreadyExistsException),
308    /// <p>The requested resource can't be found.</p>
309    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
310    /// <p>Your request exceeded a rate limit. For example, you might have exceeded the number of IoT SiteWise assets that can be created per second, the allowed number of messages per second, and so on.</p>
311    /// <p>For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>
312    ThrottlingException(crate::types::error::ThrottlingException),
313    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
314    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
315    variable wildcard pattern and check `.code()`:
316     \
317    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
318     \
319    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateAssetModelCompositeModelError) for what information is available for the error.")]
320    Unhandled(crate::error::sealed_unhandled::Unhandled),
321}
322impl CreateAssetModelCompositeModelError {
323    /// Creates the `CreateAssetModelCompositeModelError::Unhandled` variant from any error type.
324    pub fn unhandled(
325        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
326    ) -> Self {
327        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
328            source: err.into(),
329            meta: ::std::default::Default::default(),
330        })
331    }
332
333    /// Creates the `CreateAssetModelCompositeModelError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
334    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
335        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
336            source: err.clone().into(),
337            meta: err,
338        })
339    }
340    ///
341    /// Returns error metadata, which includes the error code, message,
342    /// request ID, and potentially additional information.
343    ///
344    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
345        match self {
346            Self::ConflictingOperationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
347            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
348            Self::InvalidRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
349            Self::LimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
350            Self::PreconditionFailedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
351            Self::ResourceAlreadyExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
352            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
353            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
354            Self::Unhandled(e) => &e.meta,
355        }
356    }
357    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::ConflictingOperationException`.
358    pub fn is_conflicting_operation_exception(&self) -> bool {
359        matches!(self, Self::ConflictingOperationException(_))
360    }
361    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::InternalFailureException`.
362    pub fn is_internal_failure_exception(&self) -> bool {
363        matches!(self, Self::InternalFailureException(_))
364    }
365    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::InvalidRequestException`.
366    pub fn is_invalid_request_exception(&self) -> bool {
367        matches!(self, Self::InvalidRequestException(_))
368    }
369    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::LimitExceededException`.
370    pub fn is_limit_exceeded_exception(&self) -> bool {
371        matches!(self, Self::LimitExceededException(_))
372    }
373    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::PreconditionFailedException`.
374    pub fn is_precondition_failed_exception(&self) -> bool {
375        matches!(self, Self::PreconditionFailedException(_))
376    }
377    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::ResourceAlreadyExistsException`.
378    pub fn is_resource_already_exists_exception(&self) -> bool {
379        matches!(self, Self::ResourceAlreadyExistsException(_))
380    }
381    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::ResourceNotFoundException`.
382    pub fn is_resource_not_found_exception(&self) -> bool {
383        matches!(self, Self::ResourceNotFoundException(_))
384    }
385    /// Returns `true` if the error kind is `CreateAssetModelCompositeModelError::ThrottlingException`.
386    pub fn is_throttling_exception(&self) -> bool {
387        matches!(self, Self::ThrottlingException(_))
388    }
389}
390impl ::std::error::Error for CreateAssetModelCompositeModelError {
391    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
392        match self {
393            Self::ConflictingOperationException(_inner) => ::std::option::Option::Some(_inner),
394            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
395            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
396            Self::LimitExceededException(_inner) => ::std::option::Option::Some(_inner),
397            Self::PreconditionFailedException(_inner) => ::std::option::Option::Some(_inner),
398            Self::ResourceAlreadyExistsException(_inner) => ::std::option::Option::Some(_inner),
399            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
400            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
401            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
402        }
403    }
404}
405impl ::std::fmt::Display for CreateAssetModelCompositeModelError {
406    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
407        match self {
408            Self::ConflictingOperationException(_inner) => _inner.fmt(f),
409            Self::InternalFailureException(_inner) => _inner.fmt(f),
410            Self::InvalidRequestException(_inner) => _inner.fmt(f),
411            Self::LimitExceededException(_inner) => _inner.fmt(f),
412            Self::PreconditionFailedException(_inner) => _inner.fmt(f),
413            Self::ResourceAlreadyExistsException(_inner) => _inner.fmt(f),
414            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
415            Self::ThrottlingException(_inner) => _inner.fmt(f),
416            Self::Unhandled(_inner) => {
417                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
418                    write!(f, "unhandled error ({code})")
419                } else {
420                    f.write_str("unhandled error")
421                }
422            }
423        }
424    }
425}
426impl ::aws_smithy_types::retry::ProvideErrorKind for CreateAssetModelCompositeModelError {
427    fn code(&self) -> ::std::option::Option<&str> {
428        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
429    }
430    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
431        ::std::option::Option::None
432    }
433}
434impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateAssetModelCompositeModelError {
435    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
436        match self {
437            Self::ConflictingOperationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
438            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
439            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
440            Self::LimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
441            Self::PreconditionFailedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
442            Self::ResourceAlreadyExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
443            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
444            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
445            Self::Unhandled(_inner) => &_inner.meta,
446        }
447    }
448}
449impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateAssetModelCompositeModelError {
450    fn create_unhandled_error(
451        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
452        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
453    ) -> Self {
454        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
455            source,
456            meta: meta.unwrap_or_default(),
457        })
458    }
459}
460impl ::aws_types::request_id::RequestId for crate::operation::create_asset_model_composite_model::CreateAssetModelCompositeModelError {
461    fn request_id(&self) -> Option<&str> {
462        self.meta().request_id()
463    }
464}
465
466pub use crate::operation::create_asset_model_composite_model::_create_asset_model_composite_model_output::CreateAssetModelCompositeModelOutput;
467
468pub use crate::operation::create_asset_model_composite_model::_create_asset_model_composite_model_input::CreateAssetModelCompositeModelInput;
469
470mod _create_asset_model_composite_model_input;
471
472mod _create_asset_model_composite_model_output;
473
474/// Builders
475pub mod builders;