Skip to main content

aws_sdk_dynamodb/operation/
transact_get_items.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `TransactGetItems`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct TransactGetItems;
6impl TransactGetItems {
7    /// Creates a new `TransactGetItems`
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::transact_get_items::TransactGetItemsInput,
14                    ) -> ::std::result::Result<crate::operation::transact_get_items::TransactGetItemsOutput, ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::transact_get_items::TransactGetItemsError, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>> {
15                        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<::aws_smithy_runtime_api::client::interceptors::context::Error, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>| {
16                            err.map_service_error(|err| {
17                                err.downcast::<crate::operation::transact_get_items::TransactGetItemsError>().expect("correct error type")
18                            })
19                        };
20                        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
21                            .await
22                            .map_err(map_err)?;
23                        let output = context.finalize().map_err(map_err)?;
24                        ::std::result::Result::Ok(output.downcast::<crate::operation::transact_get_items::TransactGetItemsOutput>().expect("correct output type"))
25                    }
26
27                    pub(crate) async fn orchestrate_with_stop_point(
28                        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
29                        input: crate::operation::transact_get_items::TransactGetItemsInput,
30                        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
31                    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext, ::aws_smithy_runtime_api::client::result::SdkError<::aws_smithy_runtime_api::client::interceptors::context::Error, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>> {
32                        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
33                        use ::tracing::Instrument;
34                        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
35                            "DynamoDB",
36                            "TransactGetItems",
37                            input,
38                            runtime_plugins,
39                            stop_point
40                        )
41                        // Create a parent span for the entire operation. Includes a random, internal-only,
42                        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
43                        .instrument(::tracing::debug_span!(
44                                "DynamoDB.TransactGetItems",
45                                "rpc.service" = "DynamoDB",
46                                "rpc.method" = "TransactGetItems",
47                                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
48                                "rpc.system" = "aws-api",
49                            ))
50                        .await
51                    }
52
53                    pub(crate) fn operation_runtime_plugins(
54                        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
55                        client_config: &crate::config::Config,
56                        config_override: ::std::option::Option<crate::config::Builder>,
57                    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
58                        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
59
60                        if let ::std::option::Option::Some(config_override) = config_override {
61                            for plugin in config_override.runtime_plugins.iter().cloned() {
62                                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
63                            }
64                            runtime_plugins = runtime_plugins.with_operation_plugin(
65                                crate::config::ConfigOverrideRuntimePlugin::new(config_override, client_config.config.clone(), &client_config.runtime_components)
66                            );
67                        }
68                        runtime_plugins
69                    }
70}
71impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for TransactGetItems {
72                fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
73                    let mut cfg = ::aws_smithy_types::config_bag::Layer::new("TransactGetItems");
74
75                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(TransactGetItemsRequestSerializer));
76                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(TransactGetItemsResponseDeserializer));
77
78                    cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
79                        crate::config::auth::Params::builder()
80                            .operation_name("TransactGetItems")
81                            .build()
82                            .expect("required fields set")
83                    ));
84
85                    cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
86                            "TransactGetItems",
87                            "DynamoDB",
88                        ));
89let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
90                            signing_options.double_uri_encode = true;
91                            signing_options.content_sha256_header = false;
92                            signing_options.normalize_uri_path = true;
93                            signing_options.payload_override = None;
94
95                            cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
96                                signing_options,
97                                ..::std::default::Default::default()
98                            });
99
100                    ::std::option::Option::Some(cfg.freeze())
101                }
102
103                fn runtime_components(&self, _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
104                    #[allow(unused_mut)]
105                    let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("TransactGetItems")
106                            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default()))
107.with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(TransactGetItemsEndpointParamsInterceptor))
108                            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<crate::operation::transact_get_items::TransactGetItemsError>::new())
109.with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<crate::operation::transact_get_items::TransactGetItemsError>::new())
110.with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<crate::operation::transact_get_items::TransactGetItemsError>::new())
111.with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<crate::operation::transact_get_items::TransactGetItemsError>::new());
112
113                    ::std::borrow::Cow::Owned(rcb)
114                }
115            }
116
117
118#[derive(Debug)]
119            struct TransactGetItemsResponseDeserializer;
120            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for TransactGetItemsResponseDeserializer {
121
122
123                fn deserialize_nonstreaming_with_config(&self, response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse, _cfg: &::aws_smithy_types::config_bag::ConfigBag) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
124                    let (success, status) = (response.status().is_success(), response.status().as_u16());
125            let headers = response.headers();
126            let body = response.body().bytes().expect("body loaded");
127            #[allow(unused_mut)]
128            let mut force_error = false;
129            ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
130            let parse_result = if !success && status != 200 || force_error {
131                crate::protocol_serde::shape_transact_get_items::de_transact_get_items_http_error(status, headers, body, _cfg)
132            } else {
133                crate::protocol_serde::shape_transact_get_items::de_transact_get_items_http_response(status, headers, body, _cfg)
134            };
135            crate::protocol_serde::type_erase_result(parse_result)
136                }
137            }
138#[derive(Debug)]
139            struct TransactGetItemsRequestSerializer;
140            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for TransactGetItemsRequestSerializer {
141                #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
142                fn serialize_input(&self, input: ::aws_smithy_runtime_api::client::interceptors::context::Input, _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
143                    let input = input.downcast::<crate::operation::transact_get_items::TransactGetItemsInput>().expect("correct type");
144                    let _header_serialization_settings = _cfg.load::<crate::serialization_settings::HeaderSerializationSettings>().cloned().unwrap_or_default();
145                    let mut request_builder = {
146                        #[allow(clippy::uninlined_format_args)]
147fn uri_base(_input: &crate::operation::transact_get_items::TransactGetItemsInput, output: &mut ::std::string::String) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
148    use ::std::fmt::Write as _;
149    ::std::write!(output, "/").expect("formatting should succeed");
150    ::std::result::Result::Ok(())
151}
152#[allow(clippy::unnecessary_wraps)]
153fn update_http_builder(
154                input: &crate::operation::transact_get_items::TransactGetItemsInput,
155                builder: ::http_1x::request::Builder
156            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
157    let mut uri = ::std::string::String::new();
158    uri_base(input, &mut uri)?;
159    ::std::result::Result::Ok(builder.method("POST").uri(uri))
160}
161let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
162builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.0");
163builder = _header_serialization_settings.set_default_header(
164                        builder,
165                        ::http_1x::header::HeaderName::from_static("x-amz-target"),
166                        "DynamoDB_20120810.TransactGetItems"
167                    );
168builder
169                    };
170                    let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_transact_get_items::ser_transact_get_items_input(&input)?);
171                    if let Some(content_length) = body.content_length() {
172                                let content_length = content_length.to_string();
173                                request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
174                            }
175                    ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
176                }
177            }
178#[derive(Debug)]
179            struct TransactGetItemsEndpointParamsInterceptor;
180
181            #[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
182            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for TransactGetItemsEndpointParamsInterceptor {
183                fn name(&self) -> &'static str {
184                    "TransactGetItemsEndpointParamsInterceptor"
185                }
186
187                fn read_before_execution(
188                    &self,
189                    context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_, ::aws_smithy_runtime_api::client::interceptors::context::Input, ::aws_smithy_runtime_api::client::interceptors::context::Output, ::aws_smithy_runtime_api::client::interceptors::context::Error>,
190                    cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
191                ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
192                    let _input = context.input()
193                        .downcast_ref::<TransactGetItemsInput>()
194                        .ok_or("failed to downcast to TransactGetItemsInput")?;
195
196
197
198                    let params = crate::config::endpoint::Params::builder()
199                        .set_region(cfg.load::<::aws_types::region::Region>().map(|r|r.as_ref().to_owned()))
200.set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
201.set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
202.set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
203.set_account_id_endpoint_mode(::std::option::Option::Some(cfg.load::<::aws_types::endpoint_config::AccountIdEndpointMode>().cloned().unwrap_or_default().to_string()))
204.set_resource_arn_list(get_resource_arn_list(_input).map(|v| v.into_iter().cloned().collect::<Vec<_>>()))
205                        .build()
206                        .map_err(|err| ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err))?;
207                    cfg.interceptor_state().store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
208                    ::std::result::Result::Ok(())
209                }
210            }
211
212            // The get_* functions below are generated from JMESPath expressions in the
213            // operationContextParams trait. They target the operation's input shape.
214
215            // Generated from JMESPath Expression: TransactItems[*].Get.TableName
216fn get_resource_arn_list(input: &crate::operation::transact_get_items::TransactGetItemsInput) -> Option<::std::vec::Vec::<&::std::string::String>> {
217    let _fld_1 = input.transact_items.as_ref()?;
218    let _prj_4 = _fld_1.iter()
219    .flat_map(|v| {
220        #[allow(clippy::let_and_return)]
221        fn map(_v: &crate::types::TransactGetItem) -> ::std::option::Option<&::std::string::String> {
222            let _fld_2 = _v.get.as_ref();
223            let _fld_3 = _fld_2.map(|v| &v.table_name);
224            _fld_3
225        }
226        map(v)
227    })
228    .collect::<::std::vec::Vec<_>>();
229    Some(_prj_4)
230}
231
232/// Error type for the `TransactGetItemsError` operation.
233#[non_exhaustive]
234#[derive(::std::fmt::Debug)]
235pub enum TransactGetItemsError {
236    /// <p>An error occurred on the server side.</p>
237    InternalServerError(crate::types::error::InternalServerError),
238    #[allow(missing_docs)] // documentation missing in model
239    InvalidEndpointException(crate::types::error::InvalidEndpointException),
240    /// <p>The request was denied due to request throttling. For detailed information about why the request was throttled and the ARN of the impacted resource, find the <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ThrottlingReason.html">ThrottlingReason</a> field in the returned exception. The Amazon Web Services SDKs for DynamoDB automatically retry requests that receive this exception. Your request is eventually successful, unless your retry queue is too large to finish. Reduce the frequency of requests and use exponential backoff. For more information, go to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff">Error Retries and Exponential Backoff</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
241    ProvisionedThroughputExceededException(crate::types::error::ProvisionedThroughputExceededException),
242    /// <p>Throughput exceeds the current throughput quota for your account. For detailed information about why the request was throttled and the ARN of the impacted resource, find the <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ThrottlingReason.html">ThrottlingReason</a> field in the returned exception. Contact <a href="https://aws.amazon.com/support">Amazon Web Services Support</a> to request a quota increase.</p>
243    RequestLimitExceeded(crate::types::error::RequestLimitExceeded),
244    /// <p>The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be <code>ACTIVE</code>.</p>
245    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
246    /// <p>The request was denied due to request throttling. For detailed information about why the request was throttled and the ARN of the impacted resource, find the <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ThrottlingReason.html">ThrottlingReason</a> field in the returned exception.</p>
247    ThrottlingException(crate::types::error::ThrottlingException),
248    /// <p>The entire transaction request was canceled.</p>
249    /// <p>DynamoDB cancels a <code>TransactWriteItems</code> request under the following circumstances:</p>
250    /// <ul>
251    /// <li>
252    /// <p>A condition in one of the condition expressions is not met.</p></li>
253    /// <li>
254    /// <p>A table in the <code>TransactWriteItems</code> request is in a different account or region.</p></li>
255    /// <li>
256    /// <p>More than one action in the <code>TransactWriteItems</code> operation targets the same item.</p></li>
257    /// <li>
258    /// <p>There is insufficient provisioned capacity for the transaction to be completed.</p></li>
259    /// <li>
260    /// <p>An item size becomes too large (larger than 400 KB), or a local secondary index (LSI) becomes too large, or a similar validation error occurs because of changes made by the transaction.</p></li>
261    /// <li>
262    /// <p>There is a user error, such as an invalid data format.</p></li>
263    /// <li>
264    /// <p>There is an ongoing <code>TransactWriteItems</code> operation that conflicts with a concurrent <code>TransactWriteItems</code> request. In this case the <code>TransactWriteItems</code> operation fails with a <code>TransactionCanceledException</code>.</p></li>
265    /// </ul>
266    /// <p>DynamoDB cancels a <code>TransactGetItems</code> request under the following circumstances:</p>
267    /// <ul>
268    /// <li>
269    /// <p>There is an ongoing <code>TransactGetItems</code> operation that conflicts with a concurrent <code>PutItem</code>, <code>UpdateItem</code>, <code>DeleteItem</code> or <code>TransactWriteItems</code> request. In this case the <code>TransactGetItems</code> operation fails with a <code>TransactionCanceledException</code>.</p></li>
270    /// <li>
271    /// <p>A table in the <code>TransactGetItems</code> request is in a different account or region.</p></li>
272    /// <li>
273    /// <p>There is insufficient provisioned capacity for the transaction to be completed.</p></li>
274    /// <li>
275    /// <p>There is a user error, such as an invalid data format.</p></li>
276    /// </ul><note>
277    /// <p>DynamoDB lists the cancellation reasons on the <code>CancellationReasons</code> property. Transaction cancellation reasons are ordered in the order of requested items, if an item has no error it will have <code>None</code> code and <code>Null</code> message.</p>
278    /// </note>
279    /// <p>Cancellation reason codes and possible error messages:</p>
280    /// <ul>
281    /// <li>
282    /// <p>No Errors:</p>
283    /// <ul>
284    /// <li>
285    /// <p>Code: <code>None</code></p></li>
286    /// <li>
287    /// <p>Message: <code>null</code></p></li>
288    /// </ul></li>
289    /// <li>
290    /// <p>Conditional Check Failed:</p>
291    /// <ul>
292    /// <li>
293    /// <p>Code: <code>ConditionalCheckFailed</code></p></li>
294    /// <li>
295    /// <p>Message: The conditional request failed.</p></li>
296    /// </ul></li>
297    /// <li>
298    /// <p>Item Collection Size Limit Exceeded:</p>
299    /// <ul>
300    /// <li>
301    /// <p>Code: <code>ItemCollectionSizeLimitExceeded</code></p></li>
302    /// <li>
303    /// <p>Message: Collection size exceeded.</p></li>
304    /// </ul></li>
305    /// <li>
306    /// <p>Transaction Conflict:</p>
307    /// <ul>
308    /// <li>
309    /// <p>Code: <code>TransactionConflict</code></p></li>
310    /// <li>
311    /// <p>Message: Transaction is ongoing for the item.</p></li>
312    /// </ul></li>
313    /// <li>
314    /// <p>Provisioned Throughput Exceeded:</p>
315    /// <ul>
316    /// <li>
317    /// <p>Code: <code>ProvisionedThroughputExceeded</code></p></li>
318    /// <li>
319    /// <p>Messages:</p>
320    /// <ul>
321    /// <li>
322    /// <p>The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API.</p><note>
323    /// <p>This Message is received when provisioned throughput is exceeded is on a provisioned DynamoDB table.</p>
324    /// </note></li>
325    /// <li>
326    /// <p>The level of configured provisioned throughput for one or more global secondary indexes of the table was exceeded. Consider increasing your provisioning level for the under-provisioned global secondary indexes with the UpdateTable API.</p><note>
327    /// <p>This message is returned when provisioned throughput is exceeded is on a provisioned GSI.</p>
328    /// </note></li>
329    /// </ul></li>
330    /// </ul></li>
331    /// <li>
332    /// <p>Throttling Error:</p>
333    /// <ul>
334    /// <li>
335    /// <p>Code: <code>ThrottlingError</code></p></li>
336    /// <li>
337    /// <p>Messages:</p>
338    /// <ul>
339    /// <li>
340    /// <p>Throughput exceeds the current capacity of your table or index. DynamoDB is automatically scaling your table or index so please try again shortly. If exceptions persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.</p><note>
341    /// <p>This message is returned when writes get throttled on an On-Demand table as DynamoDB is automatically scaling the table.</p>
342    /// </note></li>
343    /// <li>
344    /// <p>Throughput exceeds the current capacity for one or more global secondary indexes. DynamoDB is automatically scaling your index so please try again shortly.</p><note>
345    /// <p>This message is returned when writes get throttled on an On-Demand GSI as DynamoDB is automatically scaling the GSI.</p>
346    /// </note></li>
347    /// </ul></li>
348    /// </ul></li>
349    /// <li>
350    /// <p>Validation Error:</p>
351    /// <ul>
352    /// <li>
353    /// <p>Code: <code>ValidationError</code></p></li>
354    /// <li>
355    /// <p>Messages:</p>
356    /// <ul>
357    /// <li>
358    /// <p>One or more parameter values were invalid.</p></li>
359    /// <li>
360    /// <p>The update expression attempted to update the secondary index key beyond allowed size limits.</p></li>
361    /// <li>
362    /// <p>The update expression attempted to update the secondary index key to unsupported type.</p></li>
363    /// <li>
364    /// <p>An operand in the update expression has an incorrect data type.</p></li>
365    /// <li>
366    /// <p>Item size to update has exceeded the maximum allowed size.</p></li>
367    /// <li>
368    /// <p>Number overflow. Attempting to store a number with magnitude larger than supported range.</p></li>
369    /// <li>
370    /// <p>Type mismatch for attribute to update.</p></li>
371    /// <li>
372    /// <p>Nesting Levels have exceeded supported limits.</p></li>
373    /// <li>
374    /// <p>The document path provided in the update expression is invalid for update.</p></li>
375    /// <li>
376    /// <p>The provided expression refers to an attribute that does not exist in the item.</p></li>
377    /// </ul></li>
378    /// </ul></li>
379    /// </ul>
380    TransactionCanceledException(crate::types::error::TransactionCanceledException),
381    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
382                    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
383    variable wildcard pattern and check `.code()`:
384     \
385    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
386     \
387    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-TransactGetItemsError) for what information is available for the error.")]
388                    Unhandled(crate::error::sealed_unhandled::Unhandled),
389}
390impl TransactGetItemsError {
391    /// Creates the `TransactGetItemsError::Unhandled` variant from any error type.
392                    pub fn unhandled(err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>) -> Self {
393                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.into(), meta: ::std::default::Default::default() })
394                    }
395
396                    /// Creates the `TransactGetItemsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
397                    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
398                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.clone().into(), meta: err })
399                    }
400    ///
401    /// Returns error metadata, which includes the error code, message,
402    /// request ID, and potentially additional information.
403    ///
404    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
405        match self {
406            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
407            Self::InvalidEndpointException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
408            Self::ProvisionedThroughputExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
409            Self::RequestLimitExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
410            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
411            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
412            Self::TransactionCanceledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
413            Self::Unhandled(e) => &e.meta,
414        }
415    }
416    /// Returns `true` if the error kind is `TransactGetItemsError::InternalServerError`.
417    pub fn is_internal_server_error(&self) -> bool {
418        matches!(self, Self::InternalServerError(_))
419    }
420    /// Returns `true` if the error kind is `TransactGetItemsError::InvalidEndpointException`.
421    pub fn is_invalid_endpoint_exception(&self) -> bool {
422        matches!(self, Self::InvalidEndpointException(_))
423    }
424    /// Returns `true` if the error kind is `TransactGetItemsError::ProvisionedThroughputExceededException`.
425    pub fn is_provisioned_throughput_exceeded_exception(&self) -> bool {
426        matches!(self, Self::ProvisionedThroughputExceededException(_))
427    }
428    /// Returns `true` if the error kind is `TransactGetItemsError::RequestLimitExceeded`.
429    pub fn is_request_limit_exceeded(&self) -> bool {
430        matches!(self, Self::RequestLimitExceeded(_))
431    }
432    /// Returns `true` if the error kind is `TransactGetItemsError::ResourceNotFoundException`.
433    pub fn is_resource_not_found_exception(&self) -> bool {
434        matches!(self, Self::ResourceNotFoundException(_))
435    }
436    /// Returns `true` if the error kind is `TransactGetItemsError::ThrottlingException`.
437    pub fn is_throttling_exception(&self) -> bool {
438        matches!(self, Self::ThrottlingException(_))
439    }
440    /// Returns `true` if the error kind is `TransactGetItemsError::TransactionCanceledException`.
441    pub fn is_transaction_canceled_exception(&self) -> bool {
442        matches!(self, Self::TransactionCanceledException(_))
443    }
444}
445impl ::std::error::Error for TransactGetItemsError {
446    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
447        match self {
448            Self::InternalServerError(_inner) =>
449            ::std::option::Option::Some(_inner)
450            ,
451            Self::InvalidEndpointException(_inner) =>
452            ::std::option::Option::Some(_inner)
453            ,
454            Self::ProvisionedThroughputExceededException(_inner) =>
455            ::std::option::Option::Some(_inner)
456            ,
457            Self::RequestLimitExceeded(_inner) =>
458            ::std::option::Option::Some(_inner)
459            ,
460            Self::ResourceNotFoundException(_inner) =>
461            ::std::option::Option::Some(_inner)
462            ,
463            Self::ThrottlingException(_inner) =>
464            ::std::option::Option::Some(_inner)
465            ,
466            Self::TransactionCanceledException(_inner) =>
467            ::std::option::Option::Some(_inner)
468            ,
469            Self::Unhandled(_inner) => {
470                ::std::option::Option::Some(&*_inner.source)
471            }
472        }
473    }
474}
475impl ::std::fmt::Display for TransactGetItemsError {
476    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
477        match self {
478            Self::InternalServerError(_inner) =>
479            _inner.fmt(f)
480            ,
481            Self::InvalidEndpointException(_inner) =>
482            _inner.fmt(f)
483            ,
484            Self::ProvisionedThroughputExceededException(_inner) =>
485            _inner.fmt(f)
486            ,
487            Self::RequestLimitExceeded(_inner) =>
488            _inner.fmt(f)
489            ,
490            Self::ResourceNotFoundException(_inner) =>
491            _inner.fmt(f)
492            ,
493            Self::ThrottlingException(_inner) =>
494            _inner.fmt(f)
495            ,
496            Self::TransactionCanceledException(_inner) =>
497            _inner.fmt(f)
498            ,
499            Self::Unhandled(_inner) => {
500                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
501                                                        write!(f, "unhandled error ({code})")
502                                                    } else {
503                                                        f.write_str("unhandled error")
504                                                    }
505            }
506        }
507    }
508}
509impl ::aws_smithy_types::retry::ProvideErrorKind for TransactGetItemsError {
510    fn code(&self) -> ::std::option::Option<&str> {
511        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
512    }
513    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
514        ::std::option::Option::None
515    }
516}
517impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for TransactGetItemsError {
518    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
519        match self {
520            Self::InternalServerError(_inner) =>
521            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
522            ,
523            Self::InvalidEndpointException(_inner) =>
524            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
525            ,
526            Self::ProvisionedThroughputExceededException(_inner) =>
527            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
528            ,
529            Self::RequestLimitExceeded(_inner) =>
530            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
531            ,
532            Self::ResourceNotFoundException(_inner) =>
533            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
534            ,
535            Self::ThrottlingException(_inner) =>
536            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
537            ,
538            Self::TransactionCanceledException(_inner) =>
539            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
540            ,
541            Self::Unhandled(_inner) => {
542                &_inner.meta
543            }
544        }
545    }
546}
547impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for TransactGetItemsError {
548    fn create_unhandled_error(
549                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
550                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
551                    ) -> Self {
552        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
553    }
554}
555impl ::aws_types::request_id::RequestId for crate::operation::transact_get_items::TransactGetItemsError {
556                                fn request_id(&self) -> Option<&str> {
557                                    self.meta().request_id()
558                                }
559                            }
560
561pub use crate::operation::transact_get_items::_transact_get_items_input::TransactGetItemsInput;
562
563pub use crate::operation::transact_get_items::_transact_get_items_output::TransactGetItemsOutput;
564
565mod _transact_get_items_input;
566
567mod _transact_get_items_output;
568
569/// Builders
570pub mod builders;
571