Skip to main content

aws_sdk_secretsmanager/operation/
put_secret_value.rs

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