Skip to main content

aws_sdk_secretsmanager/operation/
update_secret.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `UpdateSecret`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct UpdateSecret;
6impl UpdateSecret {
7    /// Creates a new `UpdateSecret`
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::update_secret::UpdateSecretInput,
14    ) -> ::std::result::Result<
15        crate::operation::update_secret::UpdateSecretOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::update_secret::UpdateSecretError,
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::update_secret::UpdateSecretError>()
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::update_secret::UpdateSecretOutput>()
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::update_secret::UpdateSecretInput,
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("Secrets Manager", "UpdateSecret", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "Secrets Manager.UpdateSecret",
59                "rpc.service" = "Secrets Manager",
60                "rpc.method" = "UpdateSecret",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73        runtime_plugins = runtime_plugins.with_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
74            |token_provider, input| {
75                let input: &mut crate::operation::update_secret::UpdateSecretInput = input.downcast_mut().expect("correct type");
76                if input.client_request_token.is_none() {
77                    input.client_request_token = ::std::option::Option::Some(token_provider.make_idempotency_token());
78                }
79            },
80        ));
81        if let ::std::option::Option::Some(config_override) = config_override {
82            for plugin in config_override.runtime_plugins.iter().cloned() {
83                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
84            }
85            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
86                config_override,
87                client_config.config.clone(),
88                &client_config.runtime_components,
89            ));
90        }
91        runtime_plugins
92    }
93}
94impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for UpdateSecret {
95    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
96        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UpdateSecret");
97
98        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
99            UpdateSecretRequestSerializer,
100        ));
101        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
102            UpdateSecretResponseDeserializer,
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
106            crate::config::auth::Params::builder()
107                .operation_name("UpdateSecret")
108                .build()
109                .expect("required fields set"),
110        ));
111
112        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
113            "UpdateSecret",
114            "Secrets Manager",
115        ));
116        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
117        signing_options.double_uri_encode = true;
118        signing_options.content_sha256_header = false;
119        signing_options.normalize_uri_path = true;
120        signing_options.payload_override = None;
121
122        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
123            signing_options,
124            ..::std::default::Default::default()
125        });
126
127        ::std::option::Option::Some(cfg.freeze())
128    }
129
130    fn runtime_components(
131        &self,
132        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
133    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
134        #[allow(unused_mut)]
135        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("UpdateSecret")
136            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
137                UpdateSecretTelemetryInputCaptureInterceptor,
138            ))
139            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
140                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
141            ))
142            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
143                UpdateSecretEndpointParamsInterceptor,
144            ))
145            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
146                crate::operation::update_secret::UpdateSecretError,
147            >::new())
148            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
149                crate::operation::update_secret::UpdateSecretError,
150            >::new())
151            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
152                crate::operation::update_secret::UpdateSecretError,
153            >::new())
154            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
155                crate::operation::update_secret::UpdateSecretError,
156            >::new());
157
158        ::std::borrow::Cow::Owned(rcb)
159    }
160}
161
162#[derive(Debug)]
163struct UpdateSecretTelemetryInputCaptureInterceptor;
164
165#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
166impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateSecretTelemetryInputCaptureInterceptor {
167    fn name(&self) -> &'static str {
168        "UpdateSecretTelemetryInputCaptureInterceptor"
169    }
170
171    fn read_before_execution(
172        &self,
173        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
174            '_,
175            ::aws_smithy_runtime_api::client::interceptors::context::Input,
176            ::aws_smithy_runtime_api::client::interceptors::context::Output,
177            ::aws_smithy_runtime_api::client::interceptors::context::Error,
178        >,
179        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
180    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
181        // Nothing to do unless the customer opted in by naming members to record.
182        let ::std::option::Option::Some(requested) = cfg
183            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
184            .filter(|r| !r.is_empty())
185        else {
186            return ::std::result::Result::Ok(());
187        };
188
189        let ::std::option::Option::Some(input) = context.input().downcast_ref::<UpdateSecretInput>() else {
190            // A mismatched input is not this interceptor's concern; skip quietly.
191            return ::std::result::Result::Ok(());
192        };
193
194        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
195        if requested.should_capture("SecretId") {
196            if let ::std::option::Option::Some(value) = input.secret_id.as_deref() {
197                captured.insert("SecretId", value);
198            }
199        }
200        if requested.should_capture("ClientRequestToken") {
201            if let ::std::option::Option::Some(value) = input.client_request_token.as_deref() {
202                captured.insert("ClientRequestToken", value);
203            }
204        }
205        if requested.should_capture("Description") {
206            if let ::std::option::Option::Some(value) = input.description.as_deref() {
207                captured.insert("Description", value);
208            }
209        }
210        if requested.should_capture("KmsKeyId") {
211            if let ::std::option::Option::Some(value) = input.kms_key_id.as_deref() {
212                captured.insert("KmsKeyId", value);
213            }
214        }
215        if requested.should_capture("Type") {
216            if let ::std::option::Option::Some(value) = input.r#type.as_deref() {
217                captured.insert("Type", value);
218            }
219        }
220
221        cfg.interceptor_state().store_put(captured);
222        ::std::result::Result::Ok(())
223    }
224}
225#[derive(Debug)]
226struct UpdateSecretResponseDeserializer;
227impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UpdateSecretResponseDeserializer {
228    fn deserialize_nonstreaming_with_config(
229        &self,
230        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
231        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
232    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
233        let (success, status) = (response.status().is_success(), response.status().as_u16());
234        let headers = response.headers();
235        let body = response.body().bytes().expect("body loaded");
236        #[allow(unused_mut)]
237        let mut force_error = false;
238        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
239        let parse_result = if !success && status != 200 || force_error {
240            crate::protocol_serde::shape_update_secret::de_update_secret_http_error(status, headers, body)
241        } else {
242            crate::protocol_serde::shape_update_secret::de_update_secret_http_response(status, headers, body)
243        };
244        crate::protocol_serde::type_erase_result(parse_result)
245    }
246}
247#[derive(Debug)]
248struct UpdateSecretRequestSerializer;
249impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UpdateSecretRequestSerializer {
250    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
251    fn serialize_input(
252        &self,
253        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
254        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
255    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
256        let input = input
257            .downcast::<crate::operation::update_secret::UpdateSecretInput>()
258            .expect("correct type");
259        let _header_serialization_settings = _cfg
260            .load::<crate::serialization_settings::HeaderSerializationSettings>()
261            .cloned()
262            .unwrap_or_default();
263        let mut request_builder = {
264            #[allow(clippy::uninlined_format_args)]
265            fn uri_base(
266                _input: &crate::operation::update_secret::UpdateSecretInput,
267                output: &mut ::std::string::String,
268            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
269                use ::std::fmt::Write as _;
270                ::std::write!(output, "/").expect("formatting should succeed");
271                ::std::result::Result::Ok(())
272            }
273            #[allow(clippy::unnecessary_wraps)]
274            fn update_http_builder(
275                input: &crate::operation::update_secret::UpdateSecretInput,
276                builder: ::http_1x::request::Builder,
277            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
278                let mut uri = ::std::string::String::new();
279                uri_base(input, &mut uri)?;
280                ::std::result::Result::Ok(builder.method("POST").uri(uri))
281            }
282            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
283            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
284            builder = _header_serialization_settings.set_default_header(
285                builder,
286                ::http_1x::header::HeaderName::from_static("x-amz-target"),
287                "secretsmanager.UpdateSecret",
288            );
289            builder
290        };
291        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_update_secret::ser_update_secret_input(&input)?);
292        if let Some(content_length) = body.content_length() {
293            let content_length = content_length.to_string();
294            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
295        }
296        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
297    }
298}
299#[derive(Debug)]
300struct UpdateSecretEndpointParamsInterceptor;
301
302#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
303impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateSecretEndpointParamsInterceptor {
304    fn name(&self) -> &'static str {
305        "UpdateSecretEndpointParamsInterceptor"
306    }
307
308    fn read_before_execution(
309        &self,
310        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
311            '_,
312            ::aws_smithy_runtime_api::client::interceptors::context::Input,
313            ::aws_smithy_runtime_api::client::interceptors::context::Output,
314            ::aws_smithy_runtime_api::client::interceptors::context::Error,
315        >,
316        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
317    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
318        let _input = context
319            .input()
320            .downcast_ref::<UpdateSecretInput>()
321            .ok_or("failed to downcast to UpdateSecretInput")?;
322
323        let params = crate::config::endpoint::Params::builder()
324            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
325            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
326            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
327            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
328            .build()
329            .map_err(|err| {
330                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
331            })?;
332        cfg.interceptor_state()
333            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
334        ::std::result::Result::Ok(())
335    }
336}
337
338// The get_* functions below are generated from JMESPath expressions in the
339// operationContextParams trait. They target the operation's input shape.
340
341/// Error type for the `UpdateSecretError` operation.
342#[non_exhaustive]
343#[derive(::std::fmt::Debug)]
344pub enum UpdateSecretError {
345    /// <p>Secrets Manager can't decrypt the protected secret text using the provided KMS key.</p>
346    DecryptionFailure(crate::types::error::DecryptionFailure),
347    /// <p>Secrets Manager can't encrypt the protected secret text using the provided KMS key. Check that the KMS key is available, enabled, and not in an invalid state. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html">Key state: Effect on your KMS key</a>.</p>
348    EncryptionFailure(crate::types::error::EncryptionFailure),
349    /// <p>An error occurred on the server side.</p>
350    InternalServiceError(crate::types::error::InternalServiceError),
351    /// <p>The parameter name or value is invalid.</p>
352    InvalidParameterException(crate::types::error::InvalidParameterException),
353    /// <p>A parameter value is not valid for the current state of the resource.</p>
354    /// <p>Possible causes:</p>
355    /// <ul>
356    /// <li>
357    /// <p>The secret is scheduled for deletion.</p></li>
358    /// <li>
359    /// <p>You tried to enable rotation on a secret that doesn't already have a Lambda function ARN configured and you didn't include such an ARN as a parameter in this call.</p></li>
360    /// <li>
361    /// <p>The secret is managed by another service, and you must use that service to update it. For more information, see <a href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/service-linked-secrets.html">Secrets managed by other Amazon Web Services services</a>.</p></li>
362    /// </ul>
363    InvalidRequestException(crate::types::error::InvalidRequestException),
364    /// <p>The request failed because it would exceed one of the Secrets Manager quotas.</p>
365    LimitExceededException(crate::types::error::LimitExceededException),
366    /// <p>The resource policy has syntax errors.</p>
367    MalformedPolicyDocumentException(crate::types::error::MalformedPolicyDocumentException),
368    /// <p>The request failed because you did not complete all the prerequisite steps.</p>
369    PreconditionNotMetException(crate::types::error::PreconditionNotMetException),
370    /// <p>A resource with the ID you requested already exists.</p>
371    ResourceExistsException(crate::types::error::ResourceExistsException),
372    /// <p>Secrets Manager can't find the resource that you asked for.</p>
373    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
374    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
375    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
376    variable wildcard pattern and check `.code()`:
377     \
378    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
379     \
380    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UpdateSecretError) for what information is available for the error.")]
381    Unhandled(crate::error::sealed_unhandled::Unhandled),
382}
383impl UpdateSecretError {
384    /// Creates the `UpdateSecretError::Unhandled` variant from any error type.
385    pub fn unhandled(
386        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
387    ) -> Self {
388        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
389            source: err.into(),
390            meta: ::std::default::Default::default(),
391        })
392    }
393
394    /// Creates the `UpdateSecretError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
395    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
396        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
397            source: err.clone().into(),
398            meta: err,
399        })
400    }
401    ///
402    /// Returns error metadata, which includes the error code, message,
403    /// request ID, and potentially additional information.
404    ///
405    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
406        match self {
407            Self::DecryptionFailure(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
408            Self::EncryptionFailure(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
409            Self::InternalServiceError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
410            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
411            Self::InvalidRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
412            Self::LimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
413            Self::MalformedPolicyDocumentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
414            Self::PreconditionNotMetException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
415            Self::ResourceExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
416            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
417            Self::Unhandled(e) => &e.meta,
418        }
419    }
420    /// Returns `true` if the error kind is `UpdateSecretError::DecryptionFailure`.
421    pub fn is_decryption_failure(&self) -> bool {
422        matches!(self, Self::DecryptionFailure(_))
423    }
424    /// Returns `true` if the error kind is `UpdateSecretError::EncryptionFailure`.
425    pub fn is_encryption_failure(&self) -> bool {
426        matches!(self, Self::EncryptionFailure(_))
427    }
428    /// Returns `true` if the error kind is `UpdateSecretError::InternalServiceError`.
429    pub fn is_internal_service_error(&self) -> bool {
430        matches!(self, Self::InternalServiceError(_))
431    }
432    /// Returns `true` if the error kind is `UpdateSecretError::InvalidParameterException`.
433    pub fn is_invalid_parameter_exception(&self) -> bool {
434        matches!(self, Self::InvalidParameterException(_))
435    }
436    /// Returns `true` if the error kind is `UpdateSecretError::InvalidRequestException`.
437    pub fn is_invalid_request_exception(&self) -> bool {
438        matches!(self, Self::InvalidRequestException(_))
439    }
440    /// Returns `true` if the error kind is `UpdateSecretError::LimitExceededException`.
441    pub fn is_limit_exceeded_exception(&self) -> bool {
442        matches!(self, Self::LimitExceededException(_))
443    }
444    /// Returns `true` if the error kind is `UpdateSecretError::MalformedPolicyDocumentException`.
445    pub fn is_malformed_policy_document_exception(&self) -> bool {
446        matches!(self, Self::MalformedPolicyDocumentException(_))
447    }
448    /// Returns `true` if the error kind is `UpdateSecretError::PreconditionNotMetException`.
449    pub fn is_precondition_not_met_exception(&self) -> bool {
450        matches!(self, Self::PreconditionNotMetException(_))
451    }
452    /// Returns `true` if the error kind is `UpdateSecretError::ResourceExistsException`.
453    pub fn is_resource_exists_exception(&self) -> bool {
454        matches!(self, Self::ResourceExistsException(_))
455    }
456    /// Returns `true` if the error kind is `UpdateSecretError::ResourceNotFoundException`.
457    pub fn is_resource_not_found_exception(&self) -> bool {
458        matches!(self, Self::ResourceNotFoundException(_))
459    }
460}
461impl ::std::error::Error for UpdateSecretError {
462    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
463        match self {
464            Self::DecryptionFailure(_inner) => ::std::option::Option::Some(_inner),
465            Self::EncryptionFailure(_inner) => ::std::option::Option::Some(_inner),
466            Self::InternalServiceError(_inner) => ::std::option::Option::Some(_inner),
467            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
468            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
469            Self::LimitExceededException(_inner) => ::std::option::Option::Some(_inner),
470            Self::MalformedPolicyDocumentException(_inner) => ::std::option::Option::Some(_inner),
471            Self::PreconditionNotMetException(_inner) => ::std::option::Option::Some(_inner),
472            Self::ResourceExistsException(_inner) => ::std::option::Option::Some(_inner),
473            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
474            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
475        }
476    }
477}
478impl ::std::fmt::Display for UpdateSecretError {
479    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
480        match self {
481            Self::DecryptionFailure(_inner) => _inner.fmt(f),
482            Self::EncryptionFailure(_inner) => _inner.fmt(f),
483            Self::InternalServiceError(_inner) => _inner.fmt(f),
484            Self::InvalidParameterException(_inner) => _inner.fmt(f),
485            Self::InvalidRequestException(_inner) => _inner.fmt(f),
486            Self::LimitExceededException(_inner) => _inner.fmt(f),
487            Self::MalformedPolicyDocumentException(_inner) => _inner.fmt(f),
488            Self::PreconditionNotMetException(_inner) => _inner.fmt(f),
489            Self::ResourceExistsException(_inner) => _inner.fmt(f),
490            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
491            Self::Unhandled(_inner) => {
492                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
493                    write!(f, "unhandled error ({code})")
494                } else {
495                    f.write_str("unhandled error")
496                }
497            }
498        }
499    }
500}
501impl ::aws_smithy_types::retry::ProvideErrorKind for UpdateSecretError {
502    fn code(&self) -> ::std::option::Option<&str> {
503        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
504    }
505    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
506        ::std::option::Option::None
507    }
508}
509impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UpdateSecretError {
510    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
511        match self {
512            Self::DecryptionFailure(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
513            Self::EncryptionFailure(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
514            Self::InternalServiceError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
515            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
516            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
517            Self::LimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
518            Self::MalformedPolicyDocumentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
519            Self::PreconditionNotMetException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
520            Self::ResourceExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
521            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
522            Self::Unhandled(_inner) => &_inner.meta,
523        }
524    }
525}
526impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for UpdateSecretError {
527    fn create_unhandled_error(
528        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
529        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
530    ) -> Self {
531        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
532            source,
533            meta: meta.unwrap_or_default(),
534        })
535    }
536}
537impl ::aws_types::request_id::RequestId for crate::operation::update_secret::UpdateSecretError {
538    fn request_id(&self) -> Option<&str> {
539        self.meta().request_id()
540    }
541}
542
543pub use crate::operation::update_secret::_update_secret_input::UpdateSecretInput;
544
545pub use crate::operation::update_secret::_update_secret_output::UpdateSecretOutput;
546
547mod _update_secret_input;
548
549mod _update_secret_output;
550
551/// Builders
552pub mod builders;