Skip to main content

aws_sdk_dynamodb/operation/
batch_get_item.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `BatchGetItem`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct BatchGetItem;
6impl BatchGetItem {
7    /// Creates a new `BatchGetItem`
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::batch_get_item::BatchGetItemInput,
14                    ) -> ::std::result::Result<crate::operation::batch_get_item::BatchGetItemOutput, ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::batch_get_item::BatchGetItemError, ::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::batch_get_item::BatchGetItemError>().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::batch_get_item::BatchGetItemOutput>().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::batch_get_item::BatchGetItemInput,
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                            "BatchGetItem",
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.BatchGetItem",
45                                "rpc.service" = "DynamoDB",
46                                "rpc.method" = "BatchGetItem",
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 BatchGetItem {
72                fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
73                    let mut cfg = ::aws_smithy_types::config_bag::Layer::new("BatchGetItem");
74
75                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(BatchGetItemRequestSerializer));
76                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(BatchGetItemResponseDeserializer));
77
78                    cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
79                        crate::config::auth::Params::builder()
80                            .operation_name("BatchGetItem")
81                            .build()
82                            .expect("required fields set")
83                    ));
84
85                    cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
86                            "BatchGetItem",
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("BatchGetItem")
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(BatchGetItemEndpointParamsInterceptor))
108                            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<crate::operation::batch_get_item::BatchGetItemError>::new())
109.with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<crate::operation::batch_get_item::BatchGetItemError>::new())
110.with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<crate::operation::batch_get_item::BatchGetItemError>::new())
111.with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<crate::operation::batch_get_item::BatchGetItemError>::new());
112
113                    ::std::borrow::Cow::Owned(rcb)
114                }
115            }
116
117
118#[derive(Debug)]
119            struct BatchGetItemResponseDeserializer;
120            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for BatchGetItemResponseDeserializer {
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_batch_get_item::de_batch_get_item_http_error(status, headers, body, _cfg)
132            } else {
133                crate::protocol_serde::shape_batch_get_item::de_batch_get_item_http_response(status, headers, body, _cfg)
134            };
135            crate::protocol_serde::type_erase_result(parse_result)
136                }
137            }
138#[derive(Debug)]
139            struct BatchGetItemRequestSerializer;
140            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for BatchGetItemRequestSerializer {
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::batch_get_item::BatchGetItemInput>().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::batch_get_item::BatchGetItemInput, 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::batch_get_item::BatchGetItemInput,
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.BatchGetItem"
167                    );
168builder
169                    };
170                    let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_batch_get_item::ser_batch_get_item_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 BatchGetItemEndpointParamsInterceptor;
180
181            #[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
182            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for BatchGetItemEndpointParamsInterceptor {
183                fn name(&self) -> &'static str {
184                    "BatchGetItemEndpointParamsInterceptor"
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::<BatchGetItemInput>()
194                        .ok_or("failed to downcast to BatchGetItemInput")?;
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))
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: keys(RequestItems)
216fn get_resource_arn_list(input: &crate::operation::batch_get_item::BatchGetItemInput) -> Option<::std::vec::Vec::<::std::string::String>> {
217    let _fld_2 = input.request_items.as_ref()?;
218    let _ret_1 = _fld_2.keys().map(Clone::clone).collect::<Vec<String>>();
219    Some(_ret_1)
220}
221
222/// Error type for the `BatchGetItemError` operation.
223#[non_exhaustive]
224#[derive(::std::fmt::Debug)]
225pub enum BatchGetItemError {
226    /// <p>An error occurred on the server side.</p>
227    InternalServerError(crate::types::error::InternalServerError),
228    #[allow(missing_docs)] // documentation missing in model
229    InvalidEndpointException(crate::types::error::InvalidEndpointException),
230    /// <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>
231    ProvisionedThroughputExceededException(crate::types::error::ProvisionedThroughputExceededException),
232    /// <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>
233    RequestLimitExceeded(crate::types::error::RequestLimitExceeded),
234    /// <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>
235    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
236    /// <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>
237    ThrottlingException(crate::types::error::ThrottlingException),
238    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
239                    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
240    variable wildcard pattern and check `.code()`:
241     \
242    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
243     \
244    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-BatchGetItemError) for what information is available for the error.")]
245                    Unhandled(crate::error::sealed_unhandled::Unhandled),
246}
247impl BatchGetItemError {
248    /// Creates the `BatchGetItemError::Unhandled` variant from any error type.
249                    pub fn unhandled(err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>) -> Self {
250                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.into(), meta: ::std::default::Default::default() })
251                    }
252
253                    /// Creates the `BatchGetItemError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
254                    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
255                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.clone().into(), meta: err })
256                    }
257    ///
258    /// Returns error metadata, which includes the error code, message,
259    /// request ID, and potentially additional information.
260    ///
261    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
262        match self {
263            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
264            Self::InvalidEndpointException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
265            Self::ProvisionedThroughputExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
266            Self::RequestLimitExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
267            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
268            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
269            Self::Unhandled(e) => &e.meta,
270        }
271    }
272    /// Returns `true` if the error kind is `BatchGetItemError::InternalServerError`.
273    pub fn is_internal_server_error(&self) -> bool {
274        matches!(self, Self::InternalServerError(_))
275    }
276    /// Returns `true` if the error kind is `BatchGetItemError::InvalidEndpointException`.
277    pub fn is_invalid_endpoint_exception(&self) -> bool {
278        matches!(self, Self::InvalidEndpointException(_))
279    }
280    /// Returns `true` if the error kind is `BatchGetItemError::ProvisionedThroughputExceededException`.
281    pub fn is_provisioned_throughput_exceeded_exception(&self) -> bool {
282        matches!(self, Self::ProvisionedThroughputExceededException(_))
283    }
284    /// Returns `true` if the error kind is `BatchGetItemError::RequestLimitExceeded`.
285    pub fn is_request_limit_exceeded(&self) -> bool {
286        matches!(self, Self::RequestLimitExceeded(_))
287    }
288    /// Returns `true` if the error kind is `BatchGetItemError::ResourceNotFoundException`.
289    pub fn is_resource_not_found_exception(&self) -> bool {
290        matches!(self, Self::ResourceNotFoundException(_))
291    }
292    /// Returns `true` if the error kind is `BatchGetItemError::ThrottlingException`.
293    pub fn is_throttling_exception(&self) -> bool {
294        matches!(self, Self::ThrottlingException(_))
295    }
296}
297impl ::std::error::Error for BatchGetItemError {
298    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
299        match self {
300            Self::InternalServerError(_inner) =>
301            ::std::option::Option::Some(_inner)
302            ,
303            Self::InvalidEndpointException(_inner) =>
304            ::std::option::Option::Some(_inner)
305            ,
306            Self::ProvisionedThroughputExceededException(_inner) =>
307            ::std::option::Option::Some(_inner)
308            ,
309            Self::RequestLimitExceeded(_inner) =>
310            ::std::option::Option::Some(_inner)
311            ,
312            Self::ResourceNotFoundException(_inner) =>
313            ::std::option::Option::Some(_inner)
314            ,
315            Self::ThrottlingException(_inner) =>
316            ::std::option::Option::Some(_inner)
317            ,
318            Self::Unhandled(_inner) => {
319                ::std::option::Option::Some(&*_inner.source)
320            }
321        }
322    }
323}
324impl ::std::fmt::Display for BatchGetItemError {
325    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
326        match self {
327            Self::InternalServerError(_inner) =>
328            _inner.fmt(f)
329            ,
330            Self::InvalidEndpointException(_inner) =>
331            _inner.fmt(f)
332            ,
333            Self::ProvisionedThroughputExceededException(_inner) =>
334            _inner.fmt(f)
335            ,
336            Self::RequestLimitExceeded(_inner) =>
337            _inner.fmt(f)
338            ,
339            Self::ResourceNotFoundException(_inner) =>
340            _inner.fmt(f)
341            ,
342            Self::ThrottlingException(_inner) =>
343            _inner.fmt(f)
344            ,
345            Self::Unhandled(_inner) => {
346                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
347                                                        write!(f, "unhandled error ({code})")
348                                                    } else {
349                                                        f.write_str("unhandled error")
350                                                    }
351            }
352        }
353    }
354}
355impl ::aws_smithy_types::retry::ProvideErrorKind for BatchGetItemError {
356    fn code(&self) -> ::std::option::Option<&str> {
357        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
358    }
359    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
360        ::std::option::Option::None
361    }
362}
363impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for BatchGetItemError {
364    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
365        match self {
366            Self::InternalServerError(_inner) =>
367            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
368            ,
369            Self::InvalidEndpointException(_inner) =>
370            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
371            ,
372            Self::ProvisionedThroughputExceededException(_inner) =>
373            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
374            ,
375            Self::RequestLimitExceeded(_inner) =>
376            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
377            ,
378            Self::ResourceNotFoundException(_inner) =>
379            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
380            ,
381            Self::ThrottlingException(_inner) =>
382            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
383            ,
384            Self::Unhandled(_inner) => {
385                &_inner.meta
386            }
387        }
388    }
389}
390impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for BatchGetItemError {
391    fn create_unhandled_error(
392                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
393                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
394                    ) -> Self {
395        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
396    }
397}
398impl ::aws_types::request_id::RequestId for crate::operation::batch_get_item::BatchGetItemError {
399                                fn request_id(&self) -> Option<&str> {
400                                    self.meta().request_id()
401                                }
402                            }
403
404pub use crate::operation::batch_get_item::_batch_get_item_input::BatchGetItemInput;
405
406pub use crate::operation::batch_get_item::_batch_get_item_output::BatchGetItemOutput;
407
408mod _batch_get_item_input;
409
410mod _batch_get_item_output;
411
412/// Builders
413pub mod builders;
414