Skip to main content

aws_sdk_pinpointsmsvoicev2/operation/
create_notify_configuration.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateNotifyConfiguration`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateNotifyConfiguration;
6impl CreateNotifyConfiguration {
7    /// Creates a new `CreateNotifyConfiguration`
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_notify_configuration::CreateNotifyConfigurationInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_notify_configuration::CreateNotifyConfigurationOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_notify_configuration::CreateNotifyConfigurationError,
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_notify_configuration::CreateNotifyConfigurationError>()
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_notify_configuration::CreateNotifyConfigurationOutput>()
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_notify_configuration::CreateNotifyConfigurationInput,
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            "Pinpoint SMS Voice V2",
56            "CreateNotifyConfiguration",
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            "Pinpoint SMS Voice V2.CreateNotifyConfiguration",
65            "rpc.service" = "Pinpoint SMS Voice V2",
66            "rpc.method" = "CreateNotifyConfiguration",
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_notify_configuration::CreateNotifyConfigurationInput =
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 CreateNotifyConfiguration {
102    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
103        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateNotifyConfiguration");
104
105        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
106            CreateNotifyConfigurationRequestSerializer,
107        ));
108        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
109            CreateNotifyConfigurationResponseDeserializer,
110        ));
111
112        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
113            crate::config::auth::Params::builder()
114                .operation_name("CreateNotifyConfiguration")
115                .build()
116                .expect("required fields set"),
117        ));
118
119        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
120            "CreateNotifyConfiguration",
121            "Pinpoint SMS Voice V2",
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("CreateNotifyConfiguration")
143            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
144                CreateNotifyConfigurationTelemetryInputCaptureInterceptor,
145            ))
146            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
147                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
148            ))
149            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
150                CreateNotifyConfigurationEndpointParamsInterceptor,
151            ))
152            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
153                crate::operation::create_notify_configuration::CreateNotifyConfigurationError,
154            >::new())
155            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
156                crate::operation::create_notify_configuration::CreateNotifyConfigurationError,
157            >::new())
158            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
159                crate::operation::create_notify_configuration::CreateNotifyConfigurationError,
160            >::new())
161            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
162                crate::operation::create_notify_configuration::CreateNotifyConfigurationError,
163            >::new());
164
165        ::std::borrow::Cow::Owned(rcb)
166    }
167}
168
169#[derive(Debug)]
170struct CreateNotifyConfigurationTelemetryInputCaptureInterceptor;
171
172#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
173impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateNotifyConfigurationTelemetryInputCaptureInterceptor {
174    fn name(&self) -> &'static str {
175        "CreateNotifyConfigurationTelemetryInputCaptureInterceptor"
176    }
177
178    fn read_before_execution(
179        &self,
180        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
181            '_,
182            ::aws_smithy_runtime_api::client::interceptors::context::Input,
183            ::aws_smithy_runtime_api::client::interceptors::context::Output,
184            ::aws_smithy_runtime_api::client::interceptors::context::Error,
185        >,
186        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
187    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
188        // Nothing to do unless the customer opted in by naming members to record.
189        let ::std::option::Option::Some(requested) = cfg
190            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
191            .filter(|r| !r.is_empty())
192        else {
193            return ::std::result::Result::Ok(());
194        };
195
196        let ::std::option::Option::Some(input) = context.input().downcast_ref::<CreateNotifyConfigurationInput>() else {
197            // A mismatched input is not this interceptor's concern; skip quietly.
198            return ::std::result::Result::Ok(());
199        };
200
201        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
202        if requested.should_capture("DisplayName") {
203            if let ::std::option::Option::Some(value) = input.display_name.as_deref() {
204                captured.insert("DisplayName", value);
205            }
206        }
207        if requested.should_capture("DefaultTemplateId") {
208            if let ::std::option::Option::Some(value) = input.default_template_id.as_deref() {
209                captured.insert("DefaultTemplateId", value);
210            }
211        }
212        if requested.should_capture("PoolId") {
213            if let ::std::option::Option::Some(value) = input.pool_id.as_deref() {
214                captured.insert("PoolId", value);
215            }
216        }
217        if requested.should_capture("ClientToken") {
218            if let ::std::option::Option::Some(value) = input.client_token.as_deref() {
219                captured.insert("ClientToken", value);
220            }
221        }
222
223        cfg.interceptor_state().store_put(captured);
224        ::std::result::Result::Ok(())
225    }
226}
227#[derive(Debug)]
228struct CreateNotifyConfigurationResponseDeserializer;
229impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateNotifyConfigurationResponseDeserializer {
230    fn deserialize_nonstreaming_with_config(
231        &self,
232        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
233        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
234    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
235        let (success, status) = (response.status().is_success(), response.status().as_u16());
236        let headers = response.headers();
237        let body = response.body().bytes().expect("body loaded");
238        #[allow(unused_mut)]
239        let mut force_error = false;
240        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
241        let parse_result = if !success && status != 200 || force_error {
242            crate::protocol_serde::shape_create_notify_configuration::de_create_notify_configuration_http_error(status, headers, body)
243        } else {
244            crate::protocol_serde::shape_create_notify_configuration::de_create_notify_configuration_http_response(status, headers, body)
245        };
246        crate::protocol_serde::type_erase_result(parse_result)
247    }
248}
249#[derive(Debug)]
250struct CreateNotifyConfigurationRequestSerializer;
251impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateNotifyConfigurationRequestSerializer {
252    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
253    fn serialize_input(
254        &self,
255        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
256        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
257    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
258        let input = input
259            .downcast::<crate::operation::create_notify_configuration::CreateNotifyConfigurationInput>()
260            .expect("correct type");
261        let _header_serialization_settings = _cfg
262            .load::<crate::serialization_settings::HeaderSerializationSettings>()
263            .cloned()
264            .unwrap_or_default();
265        let mut request_builder = {
266            #[allow(clippy::uninlined_format_args)]
267            fn uri_base(
268                _input: &crate::operation::create_notify_configuration::CreateNotifyConfigurationInput,
269                output: &mut ::std::string::String,
270            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
271                use ::std::fmt::Write as _;
272                ::std::write!(output, "/").expect("formatting should succeed");
273                ::std::result::Result::Ok(())
274            }
275            #[allow(clippy::unnecessary_wraps)]
276            fn update_http_builder(
277                input: &crate::operation::create_notify_configuration::CreateNotifyConfigurationInput,
278                builder: ::http_1x::request::Builder,
279            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
280                let mut uri = ::std::string::String::new();
281                uri_base(input, &mut uri)?;
282                ::std::result::Result::Ok(builder.method("POST").uri(uri))
283            }
284            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
285            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.0");
286            builder = _header_serialization_settings.set_default_header(
287                builder,
288                ::http_1x::header::HeaderName::from_static("x-amz-target"),
289                "PinpointSMSVoiceV2.CreateNotifyConfiguration",
290            );
291            builder
292        };
293        let body = ::aws_smithy_types::body::SdkBody::from(
294            crate::protocol_serde::shape_create_notify_configuration::ser_create_notify_configuration_input(&input)?,
295        );
296        if let Some(content_length) = body.content_length() {
297            let content_length = content_length.to_string();
298            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
299        }
300        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
301    }
302}
303#[derive(Debug)]
304struct CreateNotifyConfigurationEndpointParamsInterceptor;
305
306#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
307impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateNotifyConfigurationEndpointParamsInterceptor {
308    fn name(&self) -> &'static str {
309        "CreateNotifyConfigurationEndpointParamsInterceptor"
310    }
311
312    fn read_before_execution(
313        &self,
314        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
315            '_,
316            ::aws_smithy_runtime_api::client::interceptors::context::Input,
317            ::aws_smithy_runtime_api::client::interceptors::context::Output,
318            ::aws_smithy_runtime_api::client::interceptors::context::Error,
319        >,
320        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
321    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
322        let _input = context
323            .input()
324            .downcast_ref::<CreateNotifyConfigurationInput>()
325            .ok_or("failed to downcast to CreateNotifyConfigurationInput")?;
326
327        let params = crate::config::endpoint::Params::builder()
328            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
329            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
330            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
331            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
332            .build()
333            .map_err(|err| {
334                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
335            })?;
336        cfg.interceptor_state()
337            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
338        ::std::result::Result::Ok(())
339    }
340}
341
342// The get_* functions below are generated from JMESPath expressions in the
343// operationContextParams trait. They target the operation's input shape.
344
345/// Error type for the `CreateNotifyConfigurationError` operation.
346#[non_exhaustive]
347#[derive(::std::fmt::Debug)]
348pub enum CreateNotifyConfigurationError {
349    /// <p>The request was denied because you don't have sufficient permissions to access the resource.</p>
350    AccessDeniedException(crate::types::error::AccessDeniedException),
351    /// <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 or it could be that the requested action isn't valid for the current state or configuration of the resource.</p>
352    ConflictException(crate::types::error::ConflictException),
353    /// <p>The API encountered an unexpected error and couldn't complete the request. You might be able to successfully issue the request again in the future.</p>
354    InternalServerException(crate::types::error::InternalServerException),
355    /// <p>A requested resource couldn't be found.</p>
356    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
357    /// <p>The request would cause a service quota to be exceeded.</p>
358    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
359    /// <p>An error that occurred because too many requests were sent during a certain amount of time.</p>
360    ThrottlingException(crate::types::error::ThrottlingException),
361    /// <p>A validation exception for a field.</p>
362    ValidationException(crate::types::error::ValidationException),
363    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
364    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
365    variable wildcard pattern and check `.code()`:
366     \
367    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
368     \
369    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateNotifyConfigurationError) for what information is available for the error.")]
370    Unhandled(crate::error::sealed_unhandled::Unhandled),
371}
372impl CreateNotifyConfigurationError {
373    /// Creates the `CreateNotifyConfigurationError::Unhandled` variant from any error type.
374    pub fn unhandled(
375        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
376    ) -> Self {
377        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
378            source: err.into(),
379            meta: ::std::default::Default::default(),
380        })
381    }
382
383    /// Creates the `CreateNotifyConfigurationError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
384    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
385        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
386            source: err.clone().into(),
387            meta: err,
388        })
389    }
390    ///
391    /// Returns error metadata, which includes the error code, message,
392    /// request ID, and potentially additional information.
393    ///
394    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
395        match self {
396            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
397            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
398            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
399            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
400            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
401            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
402            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
403            Self::Unhandled(e) => &e.meta,
404        }
405    }
406    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::AccessDeniedException`.
407    pub fn is_access_denied_exception(&self) -> bool {
408        matches!(self, Self::AccessDeniedException(_))
409    }
410    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::ConflictException`.
411    pub fn is_conflict_exception(&self) -> bool {
412        matches!(self, Self::ConflictException(_))
413    }
414    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::InternalServerException`.
415    pub fn is_internal_server_exception(&self) -> bool {
416        matches!(self, Self::InternalServerException(_))
417    }
418    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::ResourceNotFoundException`.
419    pub fn is_resource_not_found_exception(&self) -> bool {
420        matches!(self, Self::ResourceNotFoundException(_))
421    }
422    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::ServiceQuotaExceededException`.
423    pub fn is_service_quota_exceeded_exception(&self) -> bool {
424        matches!(self, Self::ServiceQuotaExceededException(_))
425    }
426    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::ThrottlingException`.
427    pub fn is_throttling_exception(&self) -> bool {
428        matches!(self, Self::ThrottlingException(_))
429    }
430    /// Returns `true` if the error kind is `CreateNotifyConfigurationError::ValidationException`.
431    pub fn is_validation_exception(&self) -> bool {
432        matches!(self, Self::ValidationException(_))
433    }
434}
435impl ::std::error::Error for CreateNotifyConfigurationError {
436    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
437        match self {
438            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
439            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
440            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
441            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
442            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
443            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
444            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
445            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
446        }
447    }
448}
449impl ::std::fmt::Display for CreateNotifyConfigurationError {
450    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
451        match self {
452            Self::AccessDeniedException(_inner) => _inner.fmt(f),
453            Self::ConflictException(_inner) => _inner.fmt(f),
454            Self::InternalServerException(_inner) => _inner.fmt(f),
455            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
456            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
457            Self::ThrottlingException(_inner) => _inner.fmt(f),
458            Self::ValidationException(_inner) => _inner.fmt(f),
459            Self::Unhandled(_inner) => {
460                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
461                    write!(f, "unhandled error ({code})")
462                } else {
463                    f.write_str("unhandled error")
464                }
465            }
466        }
467    }
468}
469impl ::aws_smithy_types::retry::ProvideErrorKind for CreateNotifyConfigurationError {
470    fn code(&self) -> ::std::option::Option<&str> {
471        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
472    }
473    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
474        match self {
475            Self::InternalServerException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
476            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
477            _ => ::std::option::Option::None,
478        }
479    }
480}
481impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateNotifyConfigurationError {
482    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
483        match self {
484            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
485            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
486            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
487            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
488            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
489            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
490            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
491            Self::Unhandled(_inner) => &_inner.meta,
492        }
493    }
494}
495impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateNotifyConfigurationError {
496    fn create_unhandled_error(
497        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
498        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
499    ) -> Self {
500        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
501            source,
502            meta: meta.unwrap_or_default(),
503        })
504    }
505}
506impl ::aws_types::request_id::RequestId for crate::operation::create_notify_configuration::CreateNotifyConfigurationError {
507    fn request_id(&self) -> Option<&str> {
508        self.meta().request_id()
509    }
510}
511
512pub use crate::operation::create_notify_configuration::_create_notify_configuration_input::CreateNotifyConfigurationInput;
513
514pub use crate::operation::create_notify_configuration::_create_notify_configuration_output::CreateNotifyConfigurationOutput;
515
516mod _create_notify_configuration_input;
517
518mod _create_notify_configuration_output;
519
520/// Builders
521pub mod builders;