AWS SDK

AWS SDK

rev. eb19c4c7998eaae1210cb747286b497c3425236c

Files changed:

tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/operation/send_command/builders.rs

@@ -0,1 +0,234 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub use crate::operation::send_command::_send_command_output::SendCommandOutputBuilder;
           3  +
           4  +
pub use crate::operation::send_command::_send_command_input::SendCommandInputBuilder;
           5  +
           6  +
impl crate::operation::send_command::builders::SendCommandInputBuilder {
           7  +
    /// Sends a request with this input using the given client.
           8  +
    pub async fn send_with(
           9  +
        self,
          10  +
        client: &crate::Client,
          11  +
    ) -> ::std::result::Result<
          12  +
        crate::operation::send_command::SendCommandOutput,
          13  +
        ::aws_smithy_runtime_api::client::result::SdkError<
          14  +
            crate::operation::send_command::SendCommandError,
          15  +
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
          16  +
        >,
          17  +
    > {
          18  +
        let mut fluent_builder = client.send_command();
          19  +
        fluent_builder.inner = self;
          20  +
        fluent_builder.send().await
          21  +
    }
          22  +
}
          23  +
/// Fluent builder constructing a request to `SendCommand`.
          24  +
///
          25  +
/// <p>Sends a command to an Amazon QLDB ledger.</p><note>
          26  +
/// <p>Instead of interacting directly with this API, we recommend using the QLDB driver or the QLDB shell to execute data transactions on a ledger.</p>
          27  +
/// <ul>
          28  +
/// <li>
          29  +
/// <p>If you are working with an AWS SDK, use the QLDB driver. The driver provides a high-level abstraction layer above this <i>QLDB Session</i> data plane and manages <code>SendCommand</code> API calls for you. For information and a list of supported programming languages, see <a href="https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started-driver.html">Getting started with the driver</a> in the <i>Amazon QLDB Developer Guide</i>.</p></li>
          30  +
/// <li>
          31  +
/// <p>If you are working with the AWS Command Line Interface (AWS CLI), use the QLDB shell. The shell is a command line interface that uses the QLDB driver to interact with a ledger. For information, see <a href="https://docs.aws.amazon.com/qldb/latest/developerguide/data-shell.html">Accessing Amazon QLDB using the QLDB shell</a>.</p></li>
          32  +
/// </ul>
          33  +
/// </note>
          34  +
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
          35  +
pub struct SendCommandFluentBuilder {
          36  +
    handle: ::std::sync::Arc<crate::client::Handle>,
          37  +
    inner: crate::operation::send_command::builders::SendCommandInputBuilder,
          38  +
    config_override: ::std::option::Option<crate::config::Builder>,
          39  +
}
          40  +
impl
          41  +
    crate::client::customize::internal::CustomizableSend<
          42  +
        crate::operation::send_command::SendCommandOutput,
          43  +
        crate::operation::send_command::SendCommandError,
          44  +
    > for SendCommandFluentBuilder
          45  +
{
          46  +
    fn send(
          47  +
        self,
          48  +
        config_override: crate::config::Builder,
          49  +
    ) -> crate::client::customize::internal::BoxFuture<
          50  +
        crate::client::customize::internal::SendResult<
          51  +
            crate::operation::send_command::SendCommandOutput,
          52  +
            crate::operation::send_command::SendCommandError,
          53  +
        >,
          54  +
    > {
          55  +
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
          56  +
    }
          57  +
}
          58  +
impl SendCommandFluentBuilder {
          59  +
    /// Creates a new `SendCommandFluentBuilder`.
          60  +
    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
          61  +
        Self {
          62  +
            handle,
          63  +
            inner: ::std::default::Default::default(),
          64  +
            config_override: ::std::option::Option::None,
          65  +
        }
          66  +
    }
          67  +
    /// Access the SendCommand as a reference.
          68  +
    pub fn as_input(&self) -> &crate::operation::send_command::builders::SendCommandInputBuilder {
          69  +
        &self.inner
          70  +
    }
          71  +
    /// Sends the request and returns the response.
          72  +
    ///
          73  +
    /// If an error occurs, an `SdkError` will be returned with additional details that
          74  +
    /// can be matched against.
          75  +
    ///
          76  +
    /// By default, any retryable failures will be retried twice. Retry behavior
          77  +
    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
          78  +
    /// set when configuring the client.
          79  +
    pub async fn send(
          80  +
        self,
          81  +
    ) -> ::std::result::Result<
          82  +
        crate::operation::send_command::SendCommandOutput,
          83  +
        ::aws_smithy_runtime_api::client::result::SdkError<
          84  +
            crate::operation::send_command::SendCommandError,
          85  +
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
          86  +
        >,
          87  +
    > {
          88  +
        let input = self
          89  +
            .inner
          90  +
            .build()
          91  +
            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
          92  +
        let runtime_plugins = crate::operation::send_command::SendCommand::operation_runtime_plugins(
          93  +
            self.handle.runtime_plugins.clone(),
          94  +
            &self.handle.conf,
          95  +
            self.config_override,
          96  +
        );
          97  +
        crate::operation::send_command::SendCommand::orchestrate(&runtime_plugins, input).await
          98  +
    }
          99  +
         100  +
    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
         101  +
    pub fn customize(
         102  +
        self,
         103  +
    ) -> crate::client::customize::CustomizableOperation<
         104  +
        crate::operation::send_command::SendCommandOutput,
         105  +
        crate::operation::send_command::SendCommandError,
         106  +
        Self,
         107  +
    > {
         108  +
        crate::client::customize::CustomizableOperation::new(self)
         109  +
    }
         110  +
    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
         111  +
        self.set_config_override(::std::option::Option::Some(config_override.into()));
         112  +
        self
         113  +
    }
         114  +
         115  +
    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
         116  +
        self.config_override = config_override;
         117  +
        self
         118  +
    }
         119  +
    /// <p>Specifies the session token for the current command. A session token is constant throughout the life of the session.</p>
         120  +
    /// <p>To obtain a session token, run the <code>StartSession</code> command. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
         121  +
    pub fn session_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
         122  +
        self.inner = self.inner.session_token(input.into());
         123  +
        self
         124  +
    }
         125  +
    /// <p>Specifies the session token for the current command. A session token is constant throughout the life of the session.</p>
         126  +
    /// <p>To obtain a session token, run the <code>StartSession</code> command. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
         127  +
    pub fn set_session_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
         128  +
        self.inner = self.inner.set_session_token(input);
         129  +
        self
         130  +
    }
         131  +
    /// <p>Specifies the session token for the current command. A session token is constant throughout the life of the session.</p>
         132  +
    /// <p>To obtain a session token, run the <code>StartSession</code> command. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
         133  +
    pub fn get_session_token(&self) -> &::std::option::Option<::std::string::String> {
         134  +
        self.inner.get_session_token()
         135  +
    }
         136  +
    /// <p>Command to start a new session. A session token is obtained as part of the response.</p>
         137  +
    pub fn start_session(mut self, input: crate::types::StartSessionRequest) -> Self {
         138  +
        self.inner = self.inner.start_session(input);
         139  +
        self
         140  +
    }
         141  +
    /// <p>Command to start a new session. A session token is obtained as part of the response.</p>
         142  +
    pub fn set_start_session(mut self, input: ::std::option::Option<crate::types::StartSessionRequest>) -> Self {
         143  +
        self.inner = self.inner.set_start_session(input);
         144  +
        self
         145  +
    }
         146  +
    /// <p>Command to start a new session. A session token is obtained as part of the response.</p>
         147  +
    pub fn get_start_session(&self) -> &::std::option::Option<crate::types::StartSessionRequest> {
         148  +
        self.inner.get_start_session()
         149  +
    }
         150  +
    /// <p>Command to start a new transaction.</p>
         151  +
    pub fn start_transaction(mut self, input: crate::types::StartTransactionRequest) -> Self {
         152  +
        self.inner = self.inner.start_transaction(input);
         153  +
        self
         154  +
    }
         155  +
    /// <p>Command to start a new transaction.</p>
         156  +
    pub fn set_start_transaction(mut self, input: ::std::option::Option<crate::types::StartTransactionRequest>) -> Self {
         157  +
        self.inner = self.inner.set_start_transaction(input);
         158  +
        self
         159  +
    }
         160  +
    /// <p>Command to start a new transaction.</p>
         161  +
    pub fn get_start_transaction(&self) -> &::std::option::Option<crate::types::StartTransactionRequest> {
         162  +
        self.inner.get_start_transaction()
         163  +
    }
         164  +
    /// <p>Command to end the current session.</p>
         165  +
    pub fn end_session(mut self, input: crate::types::EndSessionRequest) -> Self {
         166  +
        self.inner = self.inner.end_session(input);
         167  +
        self
         168  +
    }
         169  +
    /// <p>Command to end the current session.</p>
         170  +
    pub fn set_end_session(mut self, input: ::std::option::Option<crate::types::EndSessionRequest>) -> Self {
         171  +
        self.inner = self.inner.set_end_session(input);
         172  +
        self
         173  +
    }
         174  +
    /// <p>Command to end the current session.</p>
         175  +
    pub fn get_end_session(&self) -> &::std::option::Option<crate::types::EndSessionRequest> {
         176  +
        self.inner.get_end_session()
         177  +
    }
         178  +
    /// <p>Command to commit the specified transaction.</p>
         179  +
    pub fn commit_transaction(mut self, input: crate::types::CommitTransactionRequest) -> Self {
         180  +
        self.inner = self.inner.commit_transaction(input);
         181  +
        self
         182  +
    }
         183  +
    /// <p>Command to commit the specified transaction.</p>
         184  +
    pub fn set_commit_transaction(mut self, input: ::std::option::Option<crate::types::CommitTransactionRequest>) -> Self {
         185  +
        self.inner = self.inner.set_commit_transaction(input);
         186  +
        self
         187  +
    }
         188  +
    /// <p>Command to commit the specified transaction.</p>
         189  +
    pub fn get_commit_transaction(&self) -> &::std::option::Option<crate::types::CommitTransactionRequest> {
         190  +
        self.inner.get_commit_transaction()
         191  +
    }
         192  +
    /// <p>Command to abort the current transaction.</p>
         193  +
    pub fn abort_transaction(mut self, input: crate::types::AbortTransactionRequest) -> Self {
         194  +
        self.inner = self.inner.abort_transaction(input);
         195  +
        self
         196  +
    }
         197  +
    /// <p>Command to abort the current transaction.</p>
         198  +
    pub fn set_abort_transaction(mut self, input: ::std::option::Option<crate::types::AbortTransactionRequest>) -> Self {
         199  +
        self.inner = self.inner.set_abort_transaction(input);
         200  +
        self
         201  +
    }
         202  +
    /// <p>Command to abort the current transaction.</p>
         203  +
    pub fn get_abort_transaction(&self) -> &::std::option::Option<crate::types::AbortTransactionRequest> {
         204  +
        self.inner.get_abort_transaction()
         205  +
    }
         206  +
    /// <p>Command to execute a statement in the specified transaction.</p>
         207  +
    pub fn execute_statement(mut self, input: crate::types::ExecuteStatementRequest) -> Self {
         208  +
        self.inner = self.inner.execute_statement(input);
         209  +
        self
         210  +
    }
         211  +
    /// <p>Command to execute a statement in the specified transaction.</p>
         212  +
    pub fn set_execute_statement(mut self, input: ::std::option::Option<crate::types::ExecuteStatementRequest>) -> Self {
         213  +
        self.inner = self.inner.set_execute_statement(input);
         214  +
        self
         215  +
    }
         216  +
    /// <p>Command to execute a statement in the specified transaction.</p>
         217  +
    pub fn get_execute_statement(&self) -> &::std::option::Option<crate::types::ExecuteStatementRequest> {
         218  +
        self.inner.get_execute_statement()
         219  +
    }
         220  +
    /// <p>Command to fetch a page.</p>
         221  +
    pub fn fetch_page(mut self, input: crate::types::FetchPageRequest) -> Self {
         222  +
        self.inner = self.inner.fetch_page(input);
         223  +
        self
         224  +
    }
         225  +
    /// <p>Command to fetch a page.</p>
         226  +
    pub fn set_fetch_page(mut self, input: ::std::option::Option<crate::types::FetchPageRequest>) -> Self {
         227  +
        self.inner = self.inner.set_fetch_page(input);
         228  +
        self
         229  +
    }
         230  +
    /// <p>Command to fetch a page.</p>
         231  +
    pub fn get_fetch_page(&self) -> &::std::option::Option<crate::types::FetchPageRequest> {
         232  +
        self.inner.get_fetch_page()
         233  +
    }
         234  +
}

tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/primitives.rs

@@ -0,1 +0,5 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub use ::aws_smithy_types::Blob;
           3  +
           4  +
/// Event stream related primitives such as `Message` or `Header`.
           5  +
pub mod event_stream;

tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/primitives/event_stream.rs

@@ -0,1 +1924,5567 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    0      2   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde.rs
    1      3   
new file mode 100644
    2      4   
index 0000000..9ae5093
    3         -
-- /dev/null
           5  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde.rs
    4      6   
@@ -0,0 +1,86 @@
           7  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           8  +
pub(crate) fn type_erase_result<O, E>(
           9  +
    result: ::std::result::Result<O, E>,
          10  +
) -> ::std::result::Result<
          11  +
    ::aws_smithy_runtime_api::client::interceptors::context::Output,
          12  +
    ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError<::aws_smithy_runtime_api::client::interceptors::context::Error>,
          13  +
>
          14  +
where
          15  +
    O: ::std::fmt::Debug + ::std::marker::Send + ::std::marker::Sync + 'static,
          16  +
    E: ::std::error::Error + std::fmt::Debug + ::std::marker::Send + ::std::marker::Sync + 'static,
          17  +
{
          18  +
    result
          19  +
        .map(|output| ::aws_smithy_runtime_api::client::interceptors::context::Output::erase(output))
          20  +
        .map_err(|error| ::aws_smithy_runtime_api::client::interceptors::context::Error::erase(error))
          21  +
        .map_err(::std::convert::Into::into)
          22  +
}
          23  +
          24  +
pub fn parse_http_error_metadata(
          25  +
    _response_status: u16,
          26  +
    response_headers: &::aws_smithy_runtime_api::http::Headers,
          27  +
    response_body: &[u8],
          28  +
) -> ::std::result::Result<::aws_smithy_types::error::metadata::Builder, ::aws_smithy_json::deserialize::error::DeserializeError> {
          29  +
    crate::json_errors::parse_error_metadata(response_body, response_headers)
          30  +
}
          31  +
          32  +
pub(crate) mod shape_send_command;
          33  +
          34  +
pub(crate) fn or_empty_doc(data: &[u8]) -> &[u8] {
          35  +
    if data.is_empty() {
          36  +
        b"{}"
          37  +
    } else {
          38  +
        data
          39  +
    }
          40  +
}
          41  +
          42  +
pub(crate) mod shape_bad_request_exception;
          43  +
          44  +
pub(crate) mod shape_capacity_exceeded_exception;
          45  +
          46  +
pub(crate) mod shape_invalid_session_exception;
          47  +
          48  +
pub(crate) mod shape_limit_exceeded_exception;
          49  +
          50  +
pub(crate) mod shape_occ_conflict_exception;
          51  +
          52  +
pub(crate) mod shape_rate_exceeded_exception;
          53  +
          54  +
pub(crate) mod shape_send_command_input;
          55  +
          56  +
pub(crate) mod shape_abort_transaction_request;
          57  +
          58  +
pub(crate) mod shape_abort_transaction_result;
          59  +
          60  +
pub(crate) mod shape_commit_transaction_request;
          61  +
          62  +
pub(crate) mod shape_commit_transaction_result;
          63  +
          64  +
pub(crate) mod shape_end_session_request;
          65  +
          66  +
pub(crate) mod shape_end_session_result;
          67  +
          68  +
pub(crate) mod shape_execute_statement_request;
          69  +
          70  +
pub(crate) mod shape_execute_statement_result;
          71  +
          72  +
pub(crate) mod shape_fetch_page_request;
          73  +
          74  +
pub(crate) mod shape_fetch_page_result;
          75  +
          76  +
pub(crate) mod shape_start_session_request;
          77  +
          78  +
pub(crate) mod shape_start_session_result;
          79  +
          80  +
pub(crate) mod shape_start_transaction_request;
          81  +
          82  +
pub(crate) mod shape_start_transaction_result;
          83  +
          84  +
pub(crate) mod shape_io_usage;
          85  +
          86  +
pub(crate) mod shape_page;
          87  +
          88  +
pub(crate) mod shape_timing_information;
          89  +
          90  +
pub(crate) mod shape_value_holder;
          91  +
          92  +
pub(crate) mod shape_value_holders;
    5     93   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_abort_transaction_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_abort_transaction_request.rs
    6     94   
new file mode 100644
    7     95   
index 0000000..91172bf
    8         -
-- /dev/null
          96  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_abort_transaction_request.rs
    9     97   
@@ -0,0 +1,7 @@
          98  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
          99  +
pub fn ser_abort_transaction_request(
         100  +
    #[allow(unused_variables)] object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
         101  +
    #[allow(unused_variables)] input: &crate::types::AbortTransactionRequest,
         102  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
         103  +
    Ok(())
         104  +
}
   10    105   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_abort_transaction_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_abort_transaction_result.rs
   11    106   
new file mode 100644
   12    107   
index 0000000..9145366
   13         -
-- /dev/null
         108  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_abort_transaction_result.rs
   14    109   
@@ -0,0 +1,35 @@
         110  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         111  +
pub(crate) fn de_abort_transaction_result<'a, I>(
         112  +
    tokens: &mut ::std::iter::Peekable<I>,
         113  +
) -> ::std::result::Result<Option<crate::types::AbortTransactionResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
         114  +
where
         115  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         116  +
{
         117  +
    match tokens.next().transpose()? {
         118  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         119  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         120  +
            #[allow(unused_mut)]
         121  +
            let mut builder = crate::types::builders::AbortTransactionResultBuilder::default();
         122  +
            loop {
         123  +
                match tokens.next().transpose()? {
         124  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         125  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         126  +
                        "TimingInformation" => {
         127  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
         128  +
                        }
         129  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         130  +
                    },
         131  +
                    other => {
         132  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         133  +
                            "expected object key or end object, found: {other:?}"
         134  +
                        )))
         135  +
                    }
         136  +
                }
         137  +
            }
         138  +
            Ok(Some(builder.build()))
         139  +
        }
         140  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         141  +
            "expected start object or null",
         142  +
        )),
         143  +
    }
         144  +
}
   15    145   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_bad_request_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_bad_request_exception.rs
   16    146   
new file mode 100644
   17    147   
index 0000000..2a79e65
   18         -
-- /dev/null
         148  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_bad_request_exception.rs
   19    149   
@@ -0,0 +1,42 @@
         150  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         151  +
pub(crate) fn de_bad_request_exception_json_err(
         152  +
    value: &[u8],
         153  +
    mut builder: crate::types::error::builders::BadRequestExceptionBuilder,
         154  +
) -> ::std::result::Result<crate::types::error::builders::BadRequestExceptionBuilder, ::aws_smithy_json::deserialize::error::DeserializeError> {
         155  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         156  +
    let tokens = &mut tokens_owned;
         157  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         158  +
    loop {
         159  +
        match tokens.next().transpose()? {
         160  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         161  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         162  +
                "Message" => {
         163  +
                    builder = builder.set_message(
         164  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         165  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         166  +
                            .transpose()?,
         167  +
                    );
         168  +
                }
         169  +
                "Code" => {
         170  +
                    builder = builder.set_code(
         171  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         172  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         173  +
                            .transpose()?,
         174  +
                    );
         175  +
                }
         176  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         177  +
            },
         178  +
            other => {
         179  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         180  +
                    "expected object key or end object, found: {other:?}"
         181  +
                )))
         182  +
            }
         183  +
        }
         184  +
    }
         185  +
    if tokens.next().is_some() {
         186  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         187  +
            "found more JSON tokens after completing parsing",
         188  +
        ));
         189  +
    }
         190  +
    Ok(builder)
         191  +
}
   20    192   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_capacity_exceeded_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_capacity_exceeded_exception.rs
   21    193   
new file mode 100644
   22    194   
index 0000000..7a9c474
   23         -
-- /dev/null
         195  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_capacity_exceeded_exception.rs
   24    196   
@@ -0,0 +1,35 @@
         197  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         198  +
pub(crate) fn de_capacity_exceeded_exception_json_err(
         199  +
    value: &[u8],
         200  +
    mut builder: crate::types::error::builders::CapacityExceededExceptionBuilder,
         201  +
) -> ::std::result::Result<crate::types::error::builders::CapacityExceededExceptionBuilder, ::aws_smithy_json::deserialize::error::DeserializeError> {
         202  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         203  +
    let tokens = &mut tokens_owned;
         204  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         205  +
    loop {
         206  +
        match tokens.next().transpose()? {
         207  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         208  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         209  +
                "Message" => {
         210  +
                    builder = builder.set_message(
         211  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         212  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         213  +
                            .transpose()?,
         214  +
                    );
         215  +
                }
         216  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         217  +
            },
         218  +
            other => {
         219  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         220  +
                    "expected object key or end object, found: {other:?}"
         221  +
                )))
         222  +
            }
         223  +
        }
         224  +
    }
         225  +
    if tokens.next().is_some() {
         226  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         227  +
            "found more JSON tokens after completing parsing",
         228  +
        ));
         229  +
    }
         230  +
    Ok(builder)
         231  +
}
   25    232   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_commit_transaction_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_commit_transaction_request.rs
   26    233   
new file mode 100644
   27    234   
index 0000000..87e2e0e
   28         -
-- /dev/null
         235  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_commit_transaction_request.rs
   29    236   
@@ -0,0 +1,15 @@
         237  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         238  +
pub fn ser_commit_transaction_request(
         239  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
         240  +
    input: &crate::types::CommitTransactionRequest,
         241  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
         242  +
    {
         243  +
        object.key("TransactionId").string(input.transaction_id.as_str());
         244  +
    }
         245  +
    {
         246  +
        object
         247  +
            .key("CommitDigest")
         248  +
            .string_unchecked(&::aws_smithy_types::base64::encode(&input.commit_digest));
         249  +
    }
         250  +
    Ok(())
         251  +
}
   30    252   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_commit_transaction_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_commit_transaction_result.rs
   31    253   
new file mode 100644
   32    254   
index 0000000..d8ce8e1
   33         -
-- /dev/null
         255  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_commit_transaction_result.rs
   34    256   
@@ -0,0 +1,48 @@
         257  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         258  +
pub(crate) fn de_commit_transaction_result<'a, I>(
         259  +
    tokens: &mut ::std::iter::Peekable<I>,
         260  +
) -> ::std::result::Result<Option<crate::types::CommitTransactionResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
         261  +
where
         262  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         263  +
{
         264  +
    match tokens.next().transpose()? {
         265  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         266  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         267  +
            #[allow(unused_mut)]
         268  +
            let mut builder = crate::types::builders::CommitTransactionResultBuilder::default();
         269  +
            loop {
         270  +
                match tokens.next().transpose()? {
         271  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         272  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         273  +
                        "TransactionId" => {
         274  +
                            builder = builder.set_transaction_id(
         275  +
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         276  +
                                    .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         277  +
                                    .transpose()?,
         278  +
                            );
         279  +
                        }
         280  +
                        "CommitDigest" => {
         281  +
                            builder = builder.set_commit_digest(::aws_smithy_json::deserialize::token::expect_blob_or_null(tokens.next())?);
         282  +
                        }
         283  +
                        "TimingInformation" => {
         284  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
         285  +
                        }
         286  +
                        "ConsumedIOs" => {
         287  +
                            builder = builder.set_consumed_ios(crate::protocol_serde::shape_io_usage::de_io_usage(tokens)?);
         288  +
                        }
         289  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         290  +
                    },
         291  +
                    other => {
         292  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         293  +
                            "expected object key or end object, found: {other:?}"
         294  +
                        )))
         295  +
                    }
         296  +
                }
         297  +
            }
         298  +
            Ok(Some(builder.build()))
         299  +
        }
         300  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         301  +
            "expected start object or null",
         302  +
        )),
         303  +
    }
         304  +
}
   35    305   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_end_session_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_end_session_request.rs
   36    306   
new file mode 100644
   37    307   
index 0000000..479263b
   38         -
-- /dev/null
         308  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_end_session_request.rs
   39    309   
@@ -0,0 +1,7 @@
         310  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         311  +
pub fn ser_end_session_request(
         312  +
    #[allow(unused_variables)] object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
         313  +
    #[allow(unused_variables)] input: &crate::types::EndSessionRequest,
         314  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
         315  +
    Ok(())
         316  +
}
   40    317   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_end_session_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_end_session_result.rs
   41    318   
new file mode 100644
   42    319   
index 0000000..6bdaad9
   43         -
-- /dev/null
         320  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_end_session_result.rs
   44    321   
@@ -0,0 +1,35 @@
         322  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         323  +
pub(crate) fn de_end_session_result<'a, I>(
         324  +
    tokens: &mut ::std::iter::Peekable<I>,
         325  +
) -> ::std::result::Result<Option<crate::types::EndSessionResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
         326  +
where
         327  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         328  +
{
         329  +
    match tokens.next().transpose()? {
         330  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         331  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         332  +
            #[allow(unused_mut)]
         333  +
            let mut builder = crate::types::builders::EndSessionResultBuilder::default();
         334  +
            loop {
         335  +
                match tokens.next().transpose()? {
         336  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         337  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         338  +
                        "TimingInformation" => {
         339  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
         340  +
                        }
         341  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         342  +
                    },
         343  +
                    other => {
         344  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         345  +
                            "expected object key or end object, found: {other:?}"
         346  +
                        )))
         347  +
                    }
         348  +
                }
         349  +
            }
         350  +
            Ok(Some(builder.build()))
         351  +
        }
         352  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         353  +
            "expected start object or null",
         354  +
        )),
         355  +
    }
         356  +
}
   45    357   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_execute_statement_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_execute_statement_request.rs
   46    358   
new file mode 100644
   47    359   
index 0000000..de861c4
   48         -
-- /dev/null
         360  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_execute_statement_request.rs
   49    361   
@@ -0,0 +1,25 @@
         362  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         363  +
pub fn ser_execute_statement_request(
         364  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
         365  +
    input: &crate::types::ExecuteStatementRequest,
         366  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
         367  +
    {
         368  +
        object.key("TransactionId").string(input.transaction_id.as_str());
         369  +
    }
         370  +
    {
         371  +
        object.key("Statement").string(input.statement.as_str());
         372  +
    }
         373  +
    if let Some(var_1) = &input.parameters {
         374  +
        let mut array_2 = object.key("Parameters").start_array();
         375  +
        for item_3 in var_1 {
         376  +
            {
         377  +
                #[allow(unused_mut)]
         378  +
                let mut object_4 = array_2.value().start_object();
         379  +
                crate::protocol_serde::shape_value_holder::ser_value_holder(&mut object_4, item_3)?;
         380  +
                object_4.finish();
         381  +
            }
         382  +
        }
         383  +
        array_2.finish();
         384  +
    }
         385  +
    Ok(())
         386  +
}
   50    387   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_execute_statement_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_execute_statement_result.rs
   51    388   
new file mode 100644
   52    389   
index 0000000..26e377c
   53         -
-- /dev/null
         390  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_execute_statement_result.rs
   54    391   
@@ -0,0 +1,41 @@
         392  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         393  +
pub(crate) fn de_execute_statement_result<'a, I>(
         394  +
    tokens: &mut ::std::iter::Peekable<I>,
         395  +
) -> ::std::result::Result<Option<crate::types::ExecuteStatementResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
         396  +
where
         397  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         398  +
{
         399  +
    match tokens.next().transpose()? {
         400  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         401  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         402  +
            #[allow(unused_mut)]
         403  +
            let mut builder = crate::types::builders::ExecuteStatementResultBuilder::default();
         404  +
            loop {
         405  +
                match tokens.next().transpose()? {
         406  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         407  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         408  +
                        "FirstPage" => {
         409  +
                            builder = builder.set_first_page(crate::protocol_serde::shape_page::de_page(tokens)?);
         410  +
                        }
         411  +
                        "TimingInformation" => {
         412  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
         413  +
                        }
         414  +
                        "ConsumedIOs" => {
         415  +
                            builder = builder.set_consumed_ios(crate::protocol_serde::shape_io_usage::de_io_usage(tokens)?);
         416  +
                        }
         417  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         418  +
                    },
         419  +
                    other => {
         420  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         421  +
                            "expected object key or end object, found: {other:?}"
         422  +
                        )))
         423  +
                    }
         424  +
                }
         425  +
            }
         426  +
            Ok(Some(builder.build()))
         427  +
        }
         428  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         429  +
            "expected start object or null",
         430  +
        )),
         431  +
    }
         432  +
}
   55    433   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_fetch_page_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_fetch_page_request.rs
   56    434   
new file mode 100644
   57    435   
index 0000000..545f766
   58         -
-- /dev/null
         436  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_fetch_page_request.rs
   59    437   
@@ -0,0 +1,13 @@
         438  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         439  +
pub fn ser_fetch_page_request(
         440  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
         441  +
    input: &crate::types::FetchPageRequest,
         442  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
         443  +
    {
         444  +
        object.key("TransactionId").string(input.transaction_id.as_str());
         445  +
    }
         446  +
    {
         447  +
        object.key("NextPageToken").string(input.next_page_token.as_str());
         448  +
    }
         449  +
    Ok(())
         450  +
}
   60    451   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_fetch_page_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_fetch_page_result.rs
   61    452   
new file mode 100644
   62    453   
index 0000000..ac02b35
   63         -
-- /dev/null
         454  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_fetch_page_result.rs
   64    455   
@@ -0,0 +1,41 @@
         456  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         457  +
pub(crate) fn de_fetch_page_result<'a, I>(
         458  +
    tokens: &mut ::std::iter::Peekable<I>,
         459  +
) -> ::std::result::Result<Option<crate::types::FetchPageResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
         460  +
where
         461  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         462  +
{
         463  +
    match tokens.next().transpose()? {
         464  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         465  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         466  +
            #[allow(unused_mut)]
         467  +
            let mut builder = crate::types::builders::FetchPageResultBuilder::default();
         468  +
            loop {
         469  +
                match tokens.next().transpose()? {
         470  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         471  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         472  +
                        "Page" => {
         473  +
                            builder = builder.set_page(crate::protocol_serde::shape_page::de_page(tokens)?);
         474  +
                        }
         475  +
                        "TimingInformation" => {
         476  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
         477  +
                        }
         478  +
                        "ConsumedIOs" => {
         479  +
                            builder = builder.set_consumed_ios(crate::protocol_serde::shape_io_usage::de_io_usage(tokens)?);
         480  +
                        }
         481  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         482  +
                    },
         483  +
                    other => {
         484  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         485  +
                            "expected object key or end object, found: {other:?}"
         486  +
                        )))
         487  +
                    }
         488  +
                }
         489  +
            }
         490  +
            Ok(Some(builder.build()))
         491  +
        }
         492  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         493  +
            "expected start object or null",
         494  +
        )),
         495  +
    }
         496  +
}
   65    497   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_invalid_session_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_invalid_session_exception.rs
   66    498   
new file mode 100644
   67    499   
index 0000000..7e46a45
   68         -
-- /dev/null
         500  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_invalid_session_exception.rs
   69    501   
@@ -0,0 +1,42 @@
         502  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         503  +
pub(crate) fn de_invalid_session_exception_json_err(
         504  +
    value: &[u8],
         505  +
    mut builder: crate::types::error::builders::InvalidSessionExceptionBuilder,
         506  +
) -> ::std::result::Result<crate::types::error::builders::InvalidSessionExceptionBuilder, ::aws_smithy_json::deserialize::error::DeserializeError> {
         507  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         508  +
    let tokens = &mut tokens_owned;
         509  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         510  +
    loop {
         511  +
        match tokens.next().transpose()? {
         512  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         513  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         514  +
                "Message" => {
         515  +
                    builder = builder.set_message(
         516  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         517  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         518  +
                            .transpose()?,
         519  +
                    );
         520  +
                }
         521  +
                "Code" => {
         522  +
                    builder = builder.set_code(
         523  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         524  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         525  +
                            .transpose()?,
         526  +
                    );
         527  +
                }
         528  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         529  +
            },
         530  +
            other => {
         531  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         532  +
                    "expected object key or end object, found: {other:?}"
         533  +
                )))
         534  +
            }
         535  +
        }
         536  +
    }
         537  +
    if tokens.next().is_some() {
         538  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         539  +
            "found more JSON tokens after completing parsing",
         540  +
        ));
         541  +
    }
         542  +
    Ok(builder)
         543  +
}
   70    544   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_io_usage.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_io_usage.rs
   71    545   
new file mode 100644
   72    546   
index 0000000..8c0b664
   73         -
-- /dev/null
         547  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_io_usage.rs
   74    548   
@@ -0,0 +1,46 @@
         549  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         550  +
pub(crate) fn de_io_usage<'a, I>(
         551  +
    tokens: &mut ::std::iter::Peekable<I>,
         552  +
) -> ::std::result::Result<Option<crate::types::IoUsage>, ::aws_smithy_json::deserialize::error::DeserializeError>
         553  +
where
         554  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         555  +
{
         556  +
    match tokens.next().transpose()? {
         557  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         558  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         559  +
            #[allow(unused_mut)]
         560  +
            let mut builder = crate::types::builders::IoUsageBuilder::default();
         561  +
            loop {
         562  +
                match tokens.next().transpose()? {
         563  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         564  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         565  +
                        "ReadIOs" => {
         566  +
                            builder = builder.set_read_ios(
         567  +
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
         568  +
                                    .map(i64::try_from)
         569  +
                                    .transpose()?,
         570  +
                            );
         571  +
                        }
         572  +
                        "WriteIOs" => {
         573  +
                            builder = builder.set_write_ios(
         574  +
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
         575  +
                                    .map(i64::try_from)
         576  +
                                    .transpose()?,
         577  +
                            );
         578  +
                        }
         579  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         580  +
                    },
         581  +
                    other => {
         582  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         583  +
                            "expected object key or end object, found: {other:?}"
         584  +
                        )))
         585  +
                    }
         586  +
                }
         587  +
            }
         588  +
            Ok(Some(builder.build()))
         589  +
        }
         590  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         591  +
            "expected start object or null",
         592  +
        )),
         593  +
    }
         594  +
}
   75    595   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_limit_exceeded_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_limit_exceeded_exception.rs
   76    596   
new file mode 100644
   77    597   
index 0000000..ea4d76a
   78         -
-- /dev/null
         598  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_limit_exceeded_exception.rs
   79    599   
@@ -0,0 +1,35 @@
         600  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         601  +
pub(crate) fn de_limit_exceeded_exception_json_err(
         602  +
    value: &[u8],
         603  +
    mut builder: crate::types::error::builders::LimitExceededExceptionBuilder,
         604  +
) -> ::std::result::Result<crate::types::error::builders::LimitExceededExceptionBuilder, ::aws_smithy_json::deserialize::error::DeserializeError> {
         605  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         606  +
    let tokens = &mut tokens_owned;
         607  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         608  +
    loop {
         609  +
        match tokens.next().transpose()? {
         610  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         611  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         612  +
                "Message" => {
         613  +
                    builder = builder.set_message(
         614  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         615  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         616  +
                            .transpose()?,
         617  +
                    );
         618  +
                }
         619  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         620  +
            },
         621  +
            other => {
         622  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         623  +
                    "expected object key or end object, found: {other:?}"
         624  +
                )))
         625  +
            }
         626  +
        }
         627  +
    }
         628  +
    if tokens.next().is_some() {
         629  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         630  +
            "found more JSON tokens after completing parsing",
         631  +
        ));
         632  +
    }
         633  +
    Ok(builder)
         634  +
}
   80    635   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_occ_conflict_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_occ_conflict_exception.rs
   81    636   
new file mode 100644
   82    637   
index 0000000..c9c2ec3
   83         -
-- /dev/null
         638  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_occ_conflict_exception.rs
   84    639   
@@ -0,0 +1,35 @@
         640  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         641  +
pub(crate) fn de_occ_conflict_exception_json_err(
         642  +
    value: &[u8],
         643  +
    mut builder: crate::types::error::builders::OccConflictExceptionBuilder,
         644  +
) -> ::std::result::Result<crate::types::error::builders::OccConflictExceptionBuilder, ::aws_smithy_json::deserialize::error::DeserializeError> {
         645  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         646  +
    let tokens = &mut tokens_owned;
         647  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         648  +
    loop {
         649  +
        match tokens.next().transpose()? {
         650  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         651  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         652  +
                "Message" => {
         653  +
                    builder = builder.set_message(
         654  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         655  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         656  +
                            .transpose()?,
         657  +
                    );
         658  +
                }
         659  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         660  +
            },
         661  +
            other => {
         662  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         663  +
                    "expected object key or end object, found: {other:?}"
         664  +
                )))
         665  +
            }
         666  +
        }
         667  +
    }
         668  +
    if tokens.next().is_some() {
         669  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         670  +
            "found more JSON tokens after completing parsing",
         671  +
        ));
         672  +
    }
         673  +
    Ok(builder)
         674  +
}
   85    675   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_page.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_page.rs
   86    676   
new file mode 100644
   87    677   
index 0000000..9262d7d
   88         -
-- /dev/null
         678  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_page.rs
   89    679   
@@ -0,0 +1,42 @@
         680  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         681  +
pub(crate) fn de_page<'a, I>(
         682  +
    tokens: &mut ::std::iter::Peekable<I>,
         683  +
) -> ::std::result::Result<Option<crate::types::Page>, ::aws_smithy_json::deserialize::error::DeserializeError>
         684  +
where
         685  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
         686  +
{
         687  +
    match tokens.next().transpose()? {
         688  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
         689  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
         690  +
            #[allow(unused_mut)]
         691  +
            let mut builder = crate::types::builders::PageBuilder::default();
         692  +
            loop {
         693  +
                match tokens.next().transpose()? {
         694  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         695  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         696  +
                        "Values" => {
         697  +
                            builder = builder.set_values(crate::protocol_serde::shape_value_holders::de_value_holders(tokens)?);
         698  +
                        }
         699  +
                        "NextPageToken" => {
         700  +
                            builder = builder.set_next_page_token(
         701  +
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         702  +
                                    .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         703  +
                                    .transpose()?,
         704  +
                            );
         705  +
                        }
         706  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         707  +
                    },
         708  +
                    other => {
         709  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         710  +
                            "expected object key or end object, found: {other:?}"
         711  +
                        )))
         712  +
                    }
         713  +
                }
         714  +
            }
         715  +
            Ok(Some(builder.build()))
         716  +
        }
         717  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         718  +
            "expected start object or null",
         719  +
        )),
         720  +
    }
         721  +
}
   90    722   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_rate_exceeded_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_rate_exceeded_exception.rs
   91    723   
new file mode 100644
   92    724   
index 0000000..24d1b52
   93         -
-- /dev/null
         725  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_rate_exceeded_exception.rs
   94    726   
@@ -0,0 +1,35 @@
         727  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         728  +
pub(crate) fn de_rate_exceeded_exception_json_err(
         729  +
    value: &[u8],
         730  +
    mut builder: crate::types::error::builders::RateExceededExceptionBuilder,
         731  +
) -> ::std::result::Result<crate::types::error::builders::RateExceededExceptionBuilder, ::aws_smithy_json::deserialize::error::DeserializeError> {
         732  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         733  +
    let tokens = &mut tokens_owned;
         734  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         735  +
    loop {
         736  +
        match tokens.next().transpose()? {
         737  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         738  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         739  +
                "Message" => {
         740  +
                    builder = builder.set_message(
         741  +
                        ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
         742  +
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
         743  +
                            .transpose()?,
         744  +
                    );
         745  +
                }
         746  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         747  +
            },
         748  +
            other => {
         749  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         750  +
                    "expected object key or end object, found: {other:?}"
         751  +
                )))
         752  +
            }
         753  +
        }
         754  +
    }
         755  +
    if tokens.next().is_some() {
         756  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         757  +
            "found more JSON tokens after completing parsing",
         758  +
        ));
         759  +
    }
         760  +
    Ok(builder)
         761  +
}
   95    762   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_send_command.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_send_command.rs
   96    763   
new file mode 100644
   97    764   
index 0000000..76870fc
   98         -
-- /dev/null
         765  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_send_command.rs
   99    766   
@@ -0,0 +1,196 @@
         767  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         768  +
#[allow(clippy::unnecessary_wraps)]
         769  +
pub fn de_send_command_http_error(
         770  +
    _response_status: u16,
         771  +
    _response_headers: &::aws_smithy_runtime_api::http::Headers,
         772  +
    _response_body: &[u8],
         773  +
) -> std::result::Result<crate::operation::send_command::SendCommandOutput, crate::operation::send_command::SendCommandError> {
         774  +
    #[allow(unused_mut)]
         775  +
    let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
         776  +
        .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         777  +
    generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
         778  +
    let generic = generic_builder.build();
         779  +
    let error_code = match generic.code() {
         780  +
        Some(code) => code,
         781  +
        None => return Err(crate::operation::send_command::SendCommandError::unhandled(generic)),
         782  +
    };
         783  +
         784  +
    let _error_message = generic.message().map(|msg| msg.to_owned());
         785  +
    Err(match error_code {
         786  +
        "BadRequestException" => crate::operation::send_command::SendCommandError::BadRequestException({
         787  +
            #[allow(unused_mut)]
         788  +
            let mut tmp = {
         789  +
                #[allow(unused_mut)]
         790  +
                let mut output = crate::types::error::builders::BadRequestExceptionBuilder::default();
         791  +
                output = crate::protocol_serde::shape_bad_request_exception::de_bad_request_exception_json_err(_response_body, output)
         792  +
                    .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         793  +
                let output = output.meta(generic);
         794  +
                output.build()
         795  +
            };
         796  +
            if tmp.message.is_none() {
         797  +
                tmp.message = _error_message;
         798  +
            }
         799  +
            tmp
         800  +
        }),
         801  +
        "CapacityExceededException" => crate::operation::send_command::SendCommandError::CapacityExceededException({
         802  +
            #[allow(unused_mut)]
         803  +
            let mut tmp = {
         804  +
                #[allow(unused_mut)]
         805  +
                let mut output = crate::types::error::builders::CapacityExceededExceptionBuilder::default();
         806  +
                output = crate::protocol_serde::shape_capacity_exceeded_exception::de_capacity_exceeded_exception_json_err(_response_body, output)
         807  +
                    .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         808  +
                let output = output.meta(generic);
         809  +
                output.build()
         810  +
            };
         811  +
            if tmp.message.is_none() {
         812  +
                tmp.message = _error_message;
         813  +
            }
         814  +
            tmp
         815  +
        }),
         816  +
        "InvalidSessionException" => crate::operation::send_command::SendCommandError::InvalidSessionException({
         817  +
            #[allow(unused_mut)]
         818  +
            let mut tmp = {
         819  +
                #[allow(unused_mut)]
         820  +
                let mut output = crate::types::error::builders::InvalidSessionExceptionBuilder::default();
         821  +
                output = crate::protocol_serde::shape_invalid_session_exception::de_invalid_session_exception_json_err(_response_body, output)
         822  +
                    .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         823  +
                let output = output.meta(generic);
         824  +
                output.build()
         825  +
            };
         826  +
            if tmp.message.is_none() {
         827  +
                tmp.message = _error_message;
         828  +
            }
         829  +
            tmp
         830  +
        }),
         831  +
        "LimitExceededException" => crate::operation::send_command::SendCommandError::LimitExceededException({
         832  +
            #[allow(unused_mut)]
         833  +
            let mut tmp = {
         834  +
                #[allow(unused_mut)]
         835  +
                let mut output = crate::types::error::builders::LimitExceededExceptionBuilder::default();
         836  +
                output = crate::protocol_serde::shape_limit_exceeded_exception::de_limit_exceeded_exception_json_err(_response_body, output)
         837  +
                    .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         838  +
                let output = output.meta(generic);
         839  +
                output.build()
         840  +
            };
         841  +
            if tmp.message.is_none() {
         842  +
                tmp.message = _error_message;
         843  +
            }
         844  +
            tmp
         845  +
        }),
         846  +
        "OccConflictException" => crate::operation::send_command::SendCommandError::OccConflictException({
         847  +
            #[allow(unused_mut)]
         848  +
            let mut tmp = {
         849  +
                #[allow(unused_mut)]
         850  +
                let mut output = crate::types::error::builders::OccConflictExceptionBuilder::default();
         851  +
                output = crate::protocol_serde::shape_occ_conflict_exception::de_occ_conflict_exception_json_err(_response_body, output)
         852  +
                    .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         853  +
                let output = output.meta(generic);
         854  +
                output.build()
         855  +
            };
         856  +
            if tmp.message.is_none() {
         857  +
                tmp.message = _error_message;
         858  +
            }
         859  +
            tmp
         860  +
        }),
         861  +
        "RateExceededException" => crate::operation::send_command::SendCommandError::RateExceededException({
         862  +
            #[allow(unused_mut)]
         863  +
            let mut tmp = {
         864  +
                #[allow(unused_mut)]
         865  +
                let mut output = crate::types::error::builders::RateExceededExceptionBuilder::default();
         866  +
                output = crate::protocol_serde::shape_rate_exceeded_exception::de_rate_exceeded_exception_json_err(_response_body, output)
         867  +
                    .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         868  +
                let output = output.meta(generic);
         869  +
                output.build()
         870  +
            };
         871  +
            if tmp.message.is_none() {
         872  +
                tmp.message = _error_message;
         873  +
            }
         874  +
            tmp
         875  +
        }),
         876  +
        _ => crate::operation::send_command::SendCommandError::generic(generic),
         877  +
    })
         878  +
}
         879  +
         880  +
#[allow(clippy::unnecessary_wraps)]
         881  +
pub fn de_send_command_http_response(
         882  +
    _response_status: u16,
         883  +
    _response_headers: &::aws_smithy_runtime_api::http::Headers,
         884  +
    _response_body: &[u8],
         885  +
) -> std::result::Result<crate::operation::send_command::SendCommandOutput, crate::operation::send_command::SendCommandError> {
         886  +
    Ok({
         887  +
        #[allow(unused_mut)]
         888  +
        let mut output = crate::operation::send_command::builders::SendCommandOutputBuilder::default();
         889  +
        output = crate::protocol_serde::shape_send_command::de_send_command(_response_body, output)
         890  +
            .map_err(crate::operation::send_command::SendCommandError::unhandled)?;
         891  +
        output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
         892  +
        output.build()
         893  +
    })
         894  +
}
         895  +
         896  +
pub fn ser_send_command_input(
         897  +
    input: &crate::operation::send_command::SendCommandInput,
         898  +
) -> ::std::result::Result<::aws_smithy_types::body::SdkBody, ::aws_smithy_types::error::operation::SerializationError> {
         899  +
    let mut out = String::new();
         900  +
    let mut object = ::aws_smithy_json::serialize::JsonObjectWriter::new(&mut out);
         901  +
    crate::protocol_serde::shape_send_command_input::ser_send_command_input_input(&mut object, input)?;
         902  +
    object.finish();
         903  +
    Ok(::aws_smithy_types::body::SdkBody::from(out))
         904  +
}
         905  +
         906  +
pub(crate) fn de_send_command(
         907  +
    value: &[u8],
         908  +
    mut builder: crate::operation::send_command::builders::SendCommandOutputBuilder,
         909  +
) -> ::std::result::Result<crate::operation::send_command::builders::SendCommandOutputBuilder, ::aws_smithy_json::deserialize::error::DeserializeError>
         910  +
{
         911  +
    let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
         912  +
    let tokens = &mut tokens_owned;
         913  +
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
         914  +
    loop {
         915  +
        match tokens.next().transpose()? {
         916  +
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
         917  +
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
         918  +
                "StartSession" => {
         919  +
                    builder = builder.set_start_session(crate::protocol_serde::shape_start_session_result::de_start_session_result(tokens)?);
         920  +
                }
         921  +
                "StartTransaction" => {
         922  +
                    builder = builder.set_start_transaction(crate::protocol_serde::shape_start_transaction_result::de_start_transaction_result(
         923  +
                        tokens,
         924  +
                    )?);
         925  +
                }
         926  +
                "EndSession" => {
         927  +
                    builder = builder.set_end_session(crate::protocol_serde::shape_end_session_result::de_end_session_result(tokens)?);
         928  +
                }
         929  +
                "CommitTransaction" => {
         930  +
                    builder = builder.set_commit_transaction(crate::protocol_serde::shape_commit_transaction_result::de_commit_transaction_result(
         931  +
                        tokens,
         932  +
                    )?);
         933  +
                }
         934  +
                "AbortTransaction" => {
         935  +
                    builder = builder.set_abort_transaction(crate::protocol_serde::shape_abort_transaction_result::de_abort_transaction_result(
         936  +
                        tokens,
         937  +
                    )?);
         938  +
                }
         939  +
                "ExecuteStatement" => {
         940  +
                    builder = builder.set_execute_statement(crate::protocol_serde::shape_execute_statement_result::de_execute_statement_result(
         941  +
                        tokens,
         942  +
                    )?);
         943  +
                }
         944  +
                "FetchPage" => {
         945  +
                    builder = builder.set_fetch_page(crate::protocol_serde::shape_fetch_page_result::de_fetch_page_result(tokens)?);
         946  +
                }
         947  +
                _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
         948  +
            },
         949  +
            other => {
         950  +
                return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
         951  +
                    "expected object key or end object, found: {other:?}"
         952  +
                )))
         953  +
            }
         954  +
        }
         955  +
    }
         956  +
    if tokens.next().is_some() {
         957  +
        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
         958  +
            "found more JSON tokens after completing parsing",
         959  +
        ));
         960  +
    }
         961  +
    Ok(builder)
         962  +
}
  100    963   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_send_command_input.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_send_command_input.rs
  101    964   
new file mode 100644
  102    965   
index 0000000..21acf82
  103         -
-- /dev/null
         966  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_send_command_input.rs
  104    967   
@@ -0,0 +1,52 @@
         968  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
         969  +
pub fn ser_send_command_input_input(
         970  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
         971  +
    input: &crate::operation::send_command::SendCommandInput,
         972  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
         973  +
    if let Some(var_1) = &input.session_token {
         974  +
        object.key("SessionToken").string(var_1.as_str());
         975  +
    }
         976  +
    if let Some(var_2) = &input.start_session {
         977  +
        #[allow(unused_mut)]
         978  +
        let mut object_3 = object.key("StartSession").start_object();
         979  +
        crate::protocol_serde::shape_start_session_request::ser_start_session_request(&mut object_3, var_2)?;
         980  +
        object_3.finish();
         981  +
    }
         982  +
    if let Some(var_4) = &input.start_transaction {
         983  +
        #[allow(unused_mut)]
         984  +
        let mut object_5 = object.key("StartTransaction").start_object();
         985  +
        crate::protocol_serde::shape_start_transaction_request::ser_start_transaction_request(&mut object_5, var_4)?;
         986  +
        object_5.finish();
         987  +
    }
         988  +
    if let Some(var_6) = &input.end_session {
         989  +
        #[allow(unused_mut)]
         990  +
        let mut object_7 = object.key("EndSession").start_object();
         991  +
        crate::protocol_serde::shape_end_session_request::ser_end_session_request(&mut object_7, var_6)?;
         992  +
        object_7.finish();
         993  +
    }
         994  +
    if let Some(var_8) = &input.commit_transaction {
         995  +
        #[allow(unused_mut)]
         996  +
        let mut object_9 = object.key("CommitTransaction").start_object();
         997  +
        crate::protocol_serde::shape_commit_transaction_request::ser_commit_transaction_request(&mut object_9, var_8)?;
         998  +
        object_9.finish();
         999  +
    }
        1000  +
    if let Some(var_10) = &input.abort_transaction {
        1001  +
        #[allow(unused_mut)]
        1002  +
        let mut object_11 = object.key("AbortTransaction").start_object();
        1003  +
        crate::protocol_serde::shape_abort_transaction_request::ser_abort_transaction_request(&mut object_11, var_10)?;
        1004  +
        object_11.finish();
        1005  +
    }
        1006  +
    if let Some(var_12) = &input.execute_statement {
        1007  +
        #[allow(unused_mut)]
        1008  +
        let mut object_13 = object.key("ExecuteStatement").start_object();
        1009  +
        crate::protocol_serde::shape_execute_statement_request::ser_execute_statement_request(&mut object_13, var_12)?;
        1010  +
        object_13.finish();
        1011  +
    }
        1012  +
    if let Some(var_14) = &input.fetch_page {
        1013  +
        #[allow(unused_mut)]
        1014  +
        let mut object_15 = object.key("FetchPage").start_object();
        1015  +
        crate::protocol_serde::shape_fetch_page_request::ser_fetch_page_request(&mut object_15, var_14)?;
        1016  +
        object_15.finish();
        1017  +
    }
        1018  +
    Ok(())
        1019  +
}
  105   1020   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_session_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_session_request.rs
  106   1021   
new file mode 100644
  107   1022   
index 0000000..0eb77e4
  108         -
-- /dev/null
        1023  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_session_request.rs
  109   1024   
@@ -0,0 +1,10 @@
        1025  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1026  +
pub fn ser_start_session_request(
        1027  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
        1028  +
    input: &crate::types::StartSessionRequest,
        1029  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
        1030  +
    {
        1031  +
        object.key("LedgerName").string(input.ledger_name.as_str());
        1032  +
    }
        1033  +
    Ok(())
        1034  +
}
  110   1035   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_session_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_session_result.rs
  111   1036   
new file mode 100644
  112   1037   
index 0000000..757d743
  113         -
-- /dev/null
        1038  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_session_result.rs
  114   1039   
@@ -0,0 +1,42 @@
        1040  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1041  +
pub(crate) fn de_start_session_result<'a, I>(
        1042  +
    tokens: &mut ::std::iter::Peekable<I>,
        1043  +
) -> ::std::result::Result<Option<crate::types::StartSessionResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
        1044  +
where
        1045  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
        1046  +
{
        1047  +
    match tokens.next().transpose()? {
        1048  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        1049  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
        1050  +
            #[allow(unused_mut)]
        1051  +
            let mut builder = crate::types::builders::StartSessionResultBuilder::default();
        1052  +
            loop {
        1053  +
                match tokens.next().transpose()? {
        1054  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
        1055  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
        1056  +
                        "SessionToken" => {
        1057  +
                            builder = builder.set_session_token(
        1058  +
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
        1059  +
                                    .map(|s| s.to_unescaped().map(|u| u.into_owned()))
        1060  +
                                    .transpose()?,
        1061  +
                            );
        1062  +
                        }
        1063  +
                        "TimingInformation" => {
        1064  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
        1065  +
                        }
        1066  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
        1067  +
                    },
        1068  +
                    other => {
        1069  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
        1070  +
                            "expected object key or end object, found: {other:?}"
        1071  +
                        )))
        1072  +
                    }
        1073  +
                }
        1074  +
            }
        1075  +
            Ok(Some(builder.build()))
        1076  +
        }
        1077  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
        1078  +
            "expected start object or null",
        1079  +
        )),
        1080  +
    }
        1081  +
}
  115   1082   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_transaction_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_transaction_request.rs
  116   1083   
new file mode 100644
  117   1084   
index 0000000..7931b04
  118         -
-- /dev/null
        1085  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_transaction_request.rs
  119   1086   
@@ -0,0 +1,7 @@
        1087  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1088  +
pub fn ser_start_transaction_request(
        1089  +
    #[allow(unused_variables)] object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
        1090  +
    #[allow(unused_variables)] input: &crate::types::StartTransactionRequest,
        1091  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
        1092  +
    Ok(())
        1093  +
}
  120   1094   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_transaction_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_transaction_result.rs
  121   1095   
new file mode 100644
  122   1096   
index 0000000..cf16283
  123         -
-- /dev/null
        1097  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_start_transaction_result.rs
  124   1098   
@@ -0,0 +1,42 @@
        1099  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1100  +
pub(crate) fn de_start_transaction_result<'a, I>(
        1101  +
    tokens: &mut ::std::iter::Peekable<I>,
        1102  +
) -> ::std::result::Result<Option<crate::types::StartTransactionResult>, ::aws_smithy_json::deserialize::error::DeserializeError>
        1103  +
where
        1104  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
        1105  +
{
        1106  +
    match tokens.next().transpose()? {
        1107  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        1108  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
        1109  +
            #[allow(unused_mut)]
        1110  +
            let mut builder = crate::types::builders::StartTransactionResultBuilder::default();
        1111  +
            loop {
        1112  +
                match tokens.next().transpose()? {
        1113  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
        1114  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
        1115  +
                        "TransactionId" => {
        1116  +
                            builder = builder.set_transaction_id(
        1117  +
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
        1118  +
                                    .map(|s| s.to_unescaped().map(|u| u.into_owned()))
        1119  +
                                    .transpose()?,
        1120  +
                            );
        1121  +
                        }
        1122  +
                        "TimingInformation" => {
        1123  +
                            builder = builder.set_timing_information(crate::protocol_serde::shape_timing_information::de_timing_information(tokens)?);
        1124  +
                        }
        1125  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
        1126  +
                    },
        1127  +
                    other => {
        1128  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
        1129  +
                            "expected object key or end object, found: {other:?}"
        1130  +
                        )))
        1131  +
                    }
        1132  +
                }
        1133  +
            }
        1134  +
            Ok(Some(builder.build()))
        1135  +
        }
        1136  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
        1137  +
            "expected start object or null",
        1138  +
        )),
        1139  +
    }
        1140  +
}
  125   1141   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_timing_information.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_timing_information.rs
  126   1142   
new file mode 100644
  127   1143   
index 0000000..e65c34c
  128         -
-- /dev/null
        1144  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_timing_information.rs
  129   1145   
@@ -0,0 +1,39 @@
        1146  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1147  +
pub(crate) fn de_timing_information<'a, I>(
        1148  +
    tokens: &mut ::std::iter::Peekable<I>,
        1149  +
) -> ::std::result::Result<Option<crate::types::TimingInformation>, ::aws_smithy_json::deserialize::error::DeserializeError>
        1150  +
where
        1151  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
        1152  +
{
        1153  +
    match tokens.next().transpose()? {
        1154  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        1155  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
        1156  +
            #[allow(unused_mut)]
        1157  +
            let mut builder = crate::types::builders::TimingInformationBuilder::default();
        1158  +
            loop {
        1159  +
                match tokens.next().transpose()? {
        1160  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
        1161  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
        1162  +
                        "ProcessingTimeMilliseconds" => {
        1163  +
                            builder = builder.set_processing_time_milliseconds(
        1164  +
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
        1165  +
                                    .map(i64::try_from)
        1166  +
                                    .transpose()?,
        1167  +
                            );
        1168  +
                        }
        1169  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
        1170  +
                    },
        1171  +
                    other => {
        1172  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
        1173  +
                            "expected object key or end object, found: {other:?}"
        1174  +
                        )))
        1175  +
                    }
        1176  +
                }
        1177  +
            }
        1178  +
            Ok(Some(builder.build()))
        1179  +
        }
        1180  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
        1181  +
            "expected start object or null",
        1182  +
        )),
        1183  +
    }
        1184  +
}
  130   1185   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_value_holder.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_value_holder.rs
  131   1186   
new file mode 100644
  132   1187   
index 0000000..ca006e6
  133         -
-- /dev/null
        1188  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_value_holder.rs
  134   1189   
@@ -0,0 +1,55 @@
        1190  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1191  +
pub fn ser_value_holder(
        1192  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
        1193  +
    input: &crate::types::ValueHolder,
        1194  +
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
        1195  +
    if let Some(var_1) = &input.ion_binary {
        1196  +
        object.key("IonBinary").string_unchecked(&::aws_smithy_types::base64::encode(var_1));
        1197  +
    }
        1198  +
    if let Some(var_2) = &input.ion_text {
        1199  +
        object.key("IonText").string(var_2.as_str());
        1200  +
    }
        1201  +
    Ok(())
        1202  +
}
        1203  +
        1204  +
pub(crate) fn de_value_holder<'a, I>(
        1205  +
    tokens: &mut ::std::iter::Peekable<I>,
        1206  +
) -> ::std::result::Result<Option<crate::types::ValueHolder>, ::aws_smithy_json::deserialize::error::DeserializeError>
        1207  +
where
        1208  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
        1209  +
{
        1210  +
    match tokens.next().transpose()? {
        1211  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        1212  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
        1213  +
            #[allow(unused_mut)]
        1214  +
            let mut builder = crate::types::builders::ValueHolderBuilder::default();
        1215  +
            loop {
        1216  +
                match tokens.next().transpose()? {
        1217  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
        1218  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
        1219  +
                        "IonBinary" => {
        1220  +
                            builder = builder.set_ion_binary(::aws_smithy_json::deserialize::token::expect_blob_or_null(tokens.next())?);
        1221  +
                        }
        1222  +
                        "IonText" => {
        1223  +
                            builder = builder.set_ion_text(
        1224  +
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
        1225  +
                                    .map(|s| s.to_unescaped().map(|u| u.into_owned()))
        1226  +
                                    .transpose()?,
        1227  +
                            );
        1228  +
                        }
        1229  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
        1230  +
                    },
        1231  +
                    other => {
        1232  +
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
        1233  +
                            "expected object key or end object, found: {other:?}"
        1234  +
                        )))
        1235  +
                    }
        1236  +
                }
        1237  +
            }
        1238  +
            Ok(Some(builder.build()))
        1239  +
        }
        1240  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
        1241  +
            "expected start object or null",
        1242  +
        )),
        1243  +
    }
        1244  +
}
  135   1245   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_value_holders.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_value_holders.rs
  136   1246   
new file mode 100644
  137   1247   
index 0000000..393e199
  138         -
-- /dev/null
        1248  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/protocol_serde/shape_value_holders.rs
  139   1249   
@@ -0,0 +1,32 @@
        1250  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1251  +
pub(crate) fn de_value_holders<'a, I>(
        1252  +
    tokens: &mut ::std::iter::Peekable<I>,
        1253  +
) -> ::std::result::Result<Option<::std::vec::Vec<crate::types::ValueHolder>>, ::aws_smithy_json::deserialize::error::DeserializeError>
        1254  +
where
        1255  +
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
        1256  +
{
        1257  +
    match tokens.next().transpose()? {
        1258  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        1259  +
        Some(::aws_smithy_json::deserialize::Token::StartArray { .. }) => {
        1260  +
            let mut items = Vec::new();
        1261  +
            loop {
        1262  +
                match tokens.peek() {
        1263  +
                    Some(Ok(::aws_smithy_json::deserialize::Token::EndArray { .. })) => {
        1264  +
                        tokens.next().transpose().unwrap();
        1265  +
                        break;
        1266  +
                    }
        1267  +
                    _ => {
        1268  +
                        let value = crate::protocol_serde::shape_value_holder::de_value_holder(tokens)?;
        1269  +
                        if let Some(value) = value {
        1270  +
                            items.push(value);
        1271  +
                        }
        1272  +
                    }
        1273  +
                }
        1274  +
            }
        1275  +
            Ok(Some(items))
        1276  +
        }
        1277  +
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
        1278  +
            "expected start array or null",
        1279  +
        )),
        1280  +
    }
        1281  +
}
  140   1282   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/sdk_feature_tracker.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/sdk_feature_tracker.rs
  141   1283   
new file mode 100644
  142   1284   
index 0000000..a8f4197
  143         -
-- /dev/null
        1285  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/sdk_feature_tracker.rs
  144   1286   
@@ -0,0 +1,198 @@
        1287  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1288  +
/*
        1289  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
        1290  +
 * SPDX-License-Identifier: Apache-2.0
        1291  +
 */
        1292  +
        1293  +
#[allow(dead_code)]
        1294  +
pub(crate) mod rpc_v2_cbor {
        1295  +
    use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
        1296  +
    use aws_smithy_runtime_api::box_error::BoxError;
        1297  +
    use aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextMut;
        1298  +
    use aws_smithy_runtime_api::client::interceptors::Intercept;
        1299  +
    use aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
        1300  +
    use aws_smithy_types::config_bag::ConfigBag;
        1301  +
        1302  +
    #[derive(Debug)]
        1303  +
    pub(crate) struct RpcV2CborFeatureTrackerInterceptor;
        1304  +
        1305  +
    impl RpcV2CborFeatureTrackerInterceptor {
        1306  +
        pub(crate) fn new() -> Self {
        1307  +
            Self
        1308  +
        }
        1309  +
    }
        1310  +
        1311  +
    impl Intercept for RpcV2CborFeatureTrackerInterceptor {
        1312  +
        fn name(&self) -> &'static str {
        1313  +
            "RpcV2CborFeatureTrackerInterceptor"
        1314  +
        }
        1315  +
        1316  +
        fn modify_before_serialization(
        1317  +
            &self,
        1318  +
            _context: &mut BeforeSerializationInterceptorContextMut<'_>,
        1319  +
            _runtime_components: &RuntimeComponents,
        1320  +
            cfg: &mut ConfigBag,
        1321  +
        ) -> Result<(), BoxError> {
        1322  +
            cfg.interceptor_state()
        1323  +
                .store_append::<SmithySdkFeature>(SmithySdkFeature::ProtocolRpcV2Cbor);
        1324  +
            Ok(())
        1325  +
        }
        1326  +
    }
        1327  +
}
        1328  +
        1329  +
#[allow(dead_code)]
        1330  +
pub(crate) mod paginator {
        1331  +
    use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
        1332  +
    use aws_smithy_runtime_api::box_error::BoxError;
        1333  +
    use aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextMut;
        1334  +
    use aws_smithy_runtime_api::client::interceptors::{Intercept, SharedInterceptor};
        1335  +
    use aws_smithy_runtime_api::client::runtime_components::{RuntimeComponents, RuntimeComponentsBuilder};
        1336  +
    use aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
        1337  +
    use aws_smithy_types::config_bag::ConfigBag;
        1338  +
    use std::borrow::Cow;
        1339  +
        1340  +
    #[derive(Debug)]
        1341  +
    struct PaginatorFeatureTrackerInterceptor;
        1342  +
        1343  +
    impl PaginatorFeatureTrackerInterceptor {
        1344  +
        pub(crate) fn new() -> Self {
        1345  +
            Self
        1346  +
        }
        1347  +
    }
        1348  +
        1349  +
    impl Intercept for PaginatorFeatureTrackerInterceptor {
        1350  +
        fn name(&self) -> &'static str {
        1351  +
            "PaginatorFeatureTrackerInterceptor"
        1352  +
        }
        1353  +
        1354  +
        fn modify_before_serialization(
        1355  +
            &self,
        1356  +
            _context: &mut BeforeSerializationInterceptorContextMut<'_>,
        1357  +
            _runtime_components: &RuntimeComponents,
        1358  +
            cfg: &mut ConfigBag,
        1359  +
        ) -> Result<(), BoxError> {
        1360  +
            cfg.interceptor_state().store_append::<SmithySdkFeature>(SmithySdkFeature::Paginator);
        1361  +
            Ok(())
        1362  +
        }
        1363  +
    }
        1364  +
        1365  +
    #[derive(Debug)]
        1366  +
    pub(crate) struct PaginatorFeatureTrackerRuntimePlugin {
        1367  +
        runtime_components: RuntimeComponentsBuilder,
        1368  +
    }
        1369  +
        1370  +
    impl PaginatorFeatureTrackerRuntimePlugin {
        1371  +
        pub(crate) fn new() -> Self {
        1372  +
            Self {
        1373  +
                runtime_components: RuntimeComponentsBuilder::new("PaginatorFeatureTrackerRuntimePlugin")
        1374  +
                    .with_interceptor(SharedInterceptor::new(PaginatorFeatureTrackerInterceptor::new())),
        1375  +
            }
        1376  +
        }
        1377  +
    }
        1378  +
        1379  +
    impl RuntimePlugin for PaginatorFeatureTrackerRuntimePlugin {
        1380  +
        fn runtime_components(&self, _: &RuntimeComponentsBuilder) -> Cow<'_, RuntimeComponentsBuilder> {
        1381  +
            Cow::Borrowed(&self.runtime_components)
        1382  +
        }
        1383  +
    }
        1384  +
}
        1385  +
        1386  +
#[allow(dead_code)]
        1387  +
pub(crate) mod waiter {
        1388  +
    use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
        1389  +
    use aws_smithy_runtime_api::box_error::BoxError;
        1390  +
    use aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextMut;
        1391  +
    use aws_smithy_runtime_api::client::interceptors::{Intercept, SharedInterceptor};
        1392  +
    use aws_smithy_runtime_api::client::runtime_components::{RuntimeComponents, RuntimeComponentsBuilder};
        1393  +
    use aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
        1394  +
    use aws_smithy_types::config_bag::ConfigBag;
        1395  +
    use std::borrow::Cow;
        1396  +
        1397  +
    #[derive(Debug)]
        1398  +
    struct WaiterFeatureTrackerInterceptor;
        1399  +
        1400  +
    impl WaiterFeatureTrackerInterceptor {
        1401  +
        pub(crate) fn new() -> Self {
        1402  +
            Self
        1403  +
        }
        1404  +
    }
        1405  +
        1406  +
    impl Intercept for WaiterFeatureTrackerInterceptor {
        1407  +
        fn name(&self) -> &'static str {
        1408  +
            "WaiterFeatureTrackerInterceptor"
        1409  +
        }
        1410  +
        1411  +
        fn modify_before_serialization(
        1412  +
            &self,
        1413  +
            _context: &mut BeforeSerializationInterceptorContextMut<'_>,
        1414  +
            _runtime_components: &RuntimeComponents,
        1415  +
            cfg: &mut ConfigBag,
        1416  +
        ) -> Result<(), BoxError> {
        1417  +
            cfg.interceptor_state().store_append::<SmithySdkFeature>(SmithySdkFeature::Waiter);
        1418  +
            Ok(())
        1419  +
        }
        1420  +
    }
        1421  +
        1422  +
    #[derive(Debug)]
        1423  +
    pub(crate) struct WaiterFeatureTrackerRuntimePlugin {
        1424  +
        runtime_components: RuntimeComponentsBuilder,
        1425  +
    }
        1426  +
        1427  +
    impl WaiterFeatureTrackerRuntimePlugin {
        1428  +
        pub(crate) fn new() -> Self {
        1429  +
            Self {
        1430  +
                runtime_components: RuntimeComponentsBuilder::new("WaiterFeatureTrackerRuntimePlugin")
        1431  +
                    .with_interceptor(SharedInterceptor::new(WaiterFeatureTrackerInterceptor::new())),
        1432  +
            }
        1433  +
        }
        1434  +
    }
        1435  +
        1436  +
    impl RuntimePlugin for WaiterFeatureTrackerRuntimePlugin {
        1437  +
        fn runtime_components(&self, _: &RuntimeComponentsBuilder) -> Cow<'_, RuntimeComponentsBuilder> {
        1438  +
            Cow::Borrowed(&self.runtime_components)
        1439  +
        }
        1440  +
    }
        1441  +
}
        1442  +
        1443  +
#[allow(dead_code)]
        1444  +
pub(crate) mod retry_mode {
        1445  +
    use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
        1446  +
    use aws_smithy_runtime_api::box_error::BoxError;
        1447  +
    use aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef;
        1448  +
    use aws_smithy_runtime_api::client::interceptors::Intercept;
        1449  +
    use aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
        1450  +
    use aws_smithy_types::config_bag::ConfigBag;
        1451  +
    use aws_smithy_types::retry::{RetryConfig, RetryMode};
        1452  +
        1453  +
    #[derive(Debug)]
        1454  +
    pub(crate) struct RetryModeFeatureTrackerInterceptor;
        1455  +
        1456  +
    impl RetryModeFeatureTrackerInterceptor {
        1457  +
        pub(crate) fn new() -> Self {
        1458  +
            Self
        1459  +
        }
        1460  +
    }
        1461  +
        1462  +
    impl Intercept for RetryModeFeatureTrackerInterceptor {
        1463  +
        fn name(&self) -> &'static str {
        1464  +
            "RetryModeFeatureTrackerInterceptor"
        1465  +
        }
        1466  +
        1467  +
        fn read_before_serialization(
        1468  +
            &self,
        1469  +
            _context: &BeforeSerializationInterceptorContextRef<'_>,
        1470  +
            _runtime_components: &RuntimeComponents,
        1471  +
            cfg: &mut ConfigBag,
        1472  +
        ) -> Result<(), BoxError> {
        1473  +
            cfg.load::<RetryConfig>()
        1474  +
                .map(|retry_config| match retry_config.mode() {
        1475  +
                    RetryMode::Standard => SmithySdkFeature::RetryModeStandard,
        1476  +
                    RetryMode::Adaptive => SmithySdkFeature::RetryModeAdaptive,
        1477  +
                    _ => unreachable!("retry mode must be standard or adaptive"),
        1478  +
                })
        1479  +
                .map(|feature| cfg.interceptor_state().store_append::<SmithySdkFeature>(feature));
        1480  +
        1481  +
            Ok(())
        1482  +
        }
        1483  +
    }
        1484  +
}
  145   1485   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/serialization_settings.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/serialization_settings.rs
  146   1486   
new file mode 100644
  147   1487   
index 0000000..b543b8a
  148         -
-- /dev/null
        1488  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/serialization_settings.rs
  149   1489   
@@ -0,0 +1,84 @@
        1490  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1491  +
/*
        1492  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
        1493  +
 * SPDX-License-Identifier: Apache-2.0
        1494  +
 */
        1495  +
        1496  +
#![allow(dead_code)]
        1497  +
        1498  +
use aws_smithy_http::header::set_request_header_if_absent;
        1499  +
use aws_smithy_types::config_bag::{Storable, StoreReplace};
        1500  +
use http::header::{HeaderName, CONTENT_LENGTH, CONTENT_TYPE};
        1501  +
        1502  +
/// Configuration for how default protocol headers are serialized
        1503  +
#[derive(Clone, Debug, Default)]
        1504  +
pub(crate) struct HeaderSerializationSettings {
        1505  +
    omit_default_content_length: bool,
        1506  +
    omit_default_content_type: bool,
        1507  +
}
        1508  +
        1509  +
impl HeaderSerializationSettings {
        1510  +
    /// Creates new [`HeaderSerializationSettings`]
        1511  +
    pub(crate) fn new() -> Self {
        1512  +
        Default::default()
        1513  +
    }
        1514  +
        1515  +
    /// Omit the default `Content-Length` header during serialization
        1516  +
    pub(crate) fn omit_default_content_length(self) -> Self {
        1517  +
        Self {
        1518  +
            omit_default_content_length: true,
        1519  +
            ..self
        1520  +
        }
        1521  +
    }
        1522  +
        1523  +
    /// Omit the default `Content-Type` header during serialization
        1524  +
    pub(crate) fn omit_default_content_type(self) -> Self {
        1525  +
        Self {
        1526  +
            omit_default_content_type: true,
        1527  +
            ..self
        1528  +
        }
        1529  +
    }
        1530  +
        1531  +
    /// Returns true if the given default header name should be serialized
        1532  +
    fn include_header(&self, header: &HeaderName) -> bool {
        1533  +
        (!self.omit_default_content_length || header != CONTENT_LENGTH) && (!self.omit_default_content_type || header != CONTENT_TYPE)
        1534  +
    }
        1535  +
        1536  +
    /// Sets a default header on the given request builder if it should be serialized
        1537  +
    pub(crate) fn set_default_header(&self, mut request: http::request::Builder, header_name: HeaderName, value: &str) -> http::request::Builder {
        1538  +
        if self.include_header(&header_name) {
        1539  +
            request = set_request_header_if_absent(request, header_name, value);
        1540  +
        }
        1541  +
        request
        1542  +
    }
        1543  +
}
        1544  +
        1545  +
impl Storable for HeaderSerializationSettings {
        1546  +
    type Storer = StoreReplace<Self>;
        1547  +
}
        1548  +
        1549  +
#[cfg(test)]
        1550  +
mod tests {
        1551  +
    use super::*;
        1552  +
        1553  +
    #[test]
        1554  +
    fn test_include_header() {
        1555  +
        let settings = HeaderSerializationSettings::default();
        1556  +
        assert!(settings.include_header(&CONTENT_LENGTH));
        1557  +
        assert!(settings.include_header(&CONTENT_TYPE));
        1558  +
        1559  +
        let settings = HeaderSerializationSettings::default().omit_default_content_length();
        1560  +
        assert!(!settings.include_header(&CONTENT_LENGTH));
        1561  +
        assert!(settings.include_header(&CONTENT_TYPE));
        1562  +
        1563  +
        let settings = HeaderSerializationSettings::default().omit_default_content_type();
        1564  +
        assert!(settings.include_header(&CONTENT_LENGTH));
        1565  +
        assert!(!settings.include_header(&CONTENT_TYPE));
        1566  +
        1567  +
        let settings = HeaderSerializationSettings::default()
        1568  +
            .omit_default_content_type()
        1569  +
            .omit_default_content_length();
        1570  +
        assert!(!settings.include_header(&CONTENT_LENGTH));
        1571  +
        assert!(!settings.include_header(&CONTENT_TYPE));
        1572  +
    }
        1573  +
}
  150   1574   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types.rs
  151   1575   
new file mode 100644
  152   1576   
index 0000000..bfcc638
  153         -
-- /dev/null
        1577  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types.rs
  154   1578   
@@ -0,0 +1,78 @@
        1579  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1580  +
pub use crate::types::_fetch_page_result::FetchPageResult;
        1581  +
        1582  +
pub use crate::types::_io_usage::IoUsage;
        1583  +
        1584  +
pub use crate::types::_timing_information::TimingInformation;
        1585  +
        1586  +
pub use crate::types::_page::Page;
        1587  +
        1588  +
pub use crate::types::_value_holder::ValueHolder;
        1589  +
        1590  +
pub use crate::types::_execute_statement_result::ExecuteStatementResult;
        1591  +
        1592  +
pub use crate::types::_abort_transaction_result::AbortTransactionResult;
        1593  +
        1594  +
pub use crate::types::_commit_transaction_result::CommitTransactionResult;
        1595  +
        1596  +
pub use crate::types::_end_session_result::EndSessionResult;
        1597  +
        1598  +
pub use crate::types::_start_transaction_result::StartTransactionResult;
        1599  +
        1600  +
pub use crate::types::_start_session_result::StartSessionResult;
        1601  +
        1602  +
pub use crate::types::_fetch_page_request::FetchPageRequest;
        1603  +
        1604  +
pub use crate::types::_execute_statement_request::ExecuteStatementRequest;
        1605  +
        1606  +
pub use crate::types::_abort_transaction_request::AbortTransactionRequest;
        1607  +
        1608  +
pub use crate::types::_commit_transaction_request::CommitTransactionRequest;
        1609  +
        1610  +
pub use crate::types::_end_session_request::EndSessionRequest;
        1611  +
        1612  +
pub use crate::types::_start_transaction_request::StartTransactionRequest;
        1613  +
        1614  +
pub use crate::types::_start_session_request::StartSessionRequest;
        1615  +
        1616  +
mod _abort_transaction_request;
        1617  +
        1618  +
mod _abort_transaction_result;
        1619  +
        1620  +
mod _commit_transaction_request;
        1621  +
        1622  +
mod _commit_transaction_result;
        1623  +
        1624  +
mod _end_session_request;
        1625  +
        1626  +
mod _end_session_result;
        1627  +
        1628  +
mod _execute_statement_request;
        1629  +
        1630  +
mod _execute_statement_result;
        1631  +
        1632  +
mod _fetch_page_request;
        1633  +
        1634  +
mod _fetch_page_result;
        1635  +
        1636  +
mod _io_usage;
        1637  +
        1638  +
mod _page;
        1639  +
        1640  +
mod _start_session_request;
        1641  +
        1642  +
mod _start_session_result;
        1643  +
        1644  +
mod _start_transaction_request;
        1645  +
        1646  +
mod _start_transaction_result;
        1647  +
        1648  +
mod _timing_information;
        1649  +
        1650  +
mod _value_holder;
        1651  +
        1652  +
/// Builders
        1653  +
pub mod builders;
        1654  +
        1655  +
/// Error types that Amazon QLDB Session can respond with.
        1656  +
pub mod error;
  155   1657   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_abort_transaction_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_abort_transaction_request.rs
  156   1658   
new file mode 100644
  157   1659   
index 0000000..ac5eefd
  158         -
-- /dev/null
        1660  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_abort_transaction_request.rs
  159   1661   
@@ -0,0 +1,23 @@
        1662  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1663  +
        1664  +
/// <p>Contains the details of the transaction to abort.</p>
        1665  +
#[non_exhaustive]
        1666  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        1667  +
pub struct AbortTransactionRequest {}
        1668  +
impl AbortTransactionRequest {
        1669  +
    /// Creates a new builder-style object to manufacture [`AbortTransactionRequest`](crate::types::AbortTransactionRequest).
        1670  +
    pub fn builder() -> crate::types::builders::AbortTransactionRequestBuilder {
        1671  +
        crate::types::builders::AbortTransactionRequestBuilder::default()
        1672  +
    }
        1673  +
}
        1674  +
        1675  +
/// A builder for [`AbortTransactionRequest`](crate::types::AbortTransactionRequest).
        1676  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        1677  +
#[non_exhaustive]
        1678  +
pub struct AbortTransactionRequestBuilder {}
        1679  +
impl AbortTransactionRequestBuilder {
        1680  +
    /// Consumes the builder and constructs a [`AbortTransactionRequest`](crate::types::AbortTransactionRequest).
        1681  +
    pub fn build(self) -> crate::types::AbortTransactionRequest {
        1682  +
        crate::types::AbortTransactionRequest {}
        1683  +
    }
        1684  +
}
  160   1685   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_abort_transaction_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_abort_transaction_result.rs
  161   1686   
new file mode 100644
  162   1687   
index 0000000..a51fc33
  163         -
-- /dev/null
        1688  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_abort_transaction_result.rs
  164   1689   
@@ -0,0 +1,50 @@
        1690  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1691  +
        1692  +
/// <p>Contains the details of the aborted transaction.</p>
        1693  +
#[non_exhaustive]
        1694  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        1695  +
pub struct AbortTransactionResult {
        1696  +
    /// <p>Contains server-side performance information for the command.</p>
        1697  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        1698  +
}
        1699  +
impl AbortTransactionResult {
        1700  +
    /// <p>Contains server-side performance information for the command.</p>
        1701  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        1702  +
        self.timing_information.as_ref()
        1703  +
    }
        1704  +
}
        1705  +
impl AbortTransactionResult {
        1706  +
    /// Creates a new builder-style object to manufacture [`AbortTransactionResult`](crate::types::AbortTransactionResult).
        1707  +
    pub fn builder() -> crate::types::builders::AbortTransactionResultBuilder {
        1708  +
        crate::types::builders::AbortTransactionResultBuilder::default()
        1709  +
    }
        1710  +
}
        1711  +
        1712  +
/// A builder for [`AbortTransactionResult`](crate::types::AbortTransactionResult).
        1713  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        1714  +
#[non_exhaustive]
        1715  +
pub struct AbortTransactionResultBuilder {
        1716  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        1717  +
}
        1718  +
impl AbortTransactionResultBuilder {
        1719  +
    /// <p>Contains server-side performance information for the command.</p>
        1720  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        1721  +
        self.timing_information = ::std::option::Option::Some(input);
        1722  +
        self
        1723  +
    }
        1724  +
    /// <p>Contains server-side performance information for the command.</p>
        1725  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        1726  +
        self.timing_information = input;
        1727  +
        self
        1728  +
    }
        1729  +
    /// <p>Contains server-side performance information for the command.</p>
        1730  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        1731  +
        &self.timing_information
        1732  +
    }
        1733  +
    /// Consumes the builder and constructs a [`AbortTransactionResult`](crate::types::AbortTransactionResult).
        1734  +
    pub fn build(self) -> crate::types::AbortTransactionResult {
        1735  +
        crate::types::AbortTransactionResult {
        1736  +
            timing_information: self.timing_information,
        1737  +
        }
        1738  +
    }
        1739  +
}
  165   1740   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_commit_transaction_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_commit_transaction_request.rs
  166   1741   
new file mode 100644
  167   1742   
index 0000000..645aeb9
  168         -
-- /dev/null
        1743  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_commit_transaction_request.rs
  169   1744   
@@ -0,0 +1,93 @@
        1745  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1746  +
        1747  +
/// <p>Contains the details of the transaction to commit.</p>
        1748  +
#[non_exhaustive]
        1749  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        1750  +
pub struct CommitTransactionRequest {
        1751  +
    /// <p>Specifies the transaction ID of the transaction to commit.</p>
        1752  +
    pub transaction_id: ::std::string::String,
        1753  +
    /// <p>Specifies the commit digest for the transaction to commit. For every active transaction, the commit digest must be passed. QLDB validates <code>CommitDigest</code> and rejects the commit with an error if the digest computed on the client does not match the digest computed by QLDB.</p>
        1754  +
    /// <p>The purpose of the <code>CommitDigest</code> parameter is to ensure that QLDB commits a transaction if and only if the server has processed the exact set of statements sent by the client, in the same order that client sent them, and with no duplicates.</p>
        1755  +
    pub commit_digest: ::aws_smithy_types::Blob,
        1756  +
}
        1757  +
impl CommitTransactionRequest {
        1758  +
    /// <p>Specifies the transaction ID of the transaction to commit.</p>
        1759  +
    pub fn transaction_id(&self) -> &str {
        1760  +
        use std::ops::Deref;
        1761  +
        self.transaction_id.deref()
        1762  +
    }
        1763  +
    /// <p>Specifies the commit digest for the transaction to commit. For every active transaction, the commit digest must be passed. QLDB validates <code>CommitDigest</code> and rejects the commit with an error if the digest computed on the client does not match the digest computed by QLDB.</p>
        1764  +
    /// <p>The purpose of the <code>CommitDigest</code> parameter is to ensure that QLDB commits a transaction if and only if the server has processed the exact set of statements sent by the client, in the same order that client sent them, and with no duplicates.</p>
        1765  +
    pub fn commit_digest(&self) -> &::aws_smithy_types::Blob {
        1766  +
        &self.commit_digest
        1767  +
    }
        1768  +
}
        1769  +
impl CommitTransactionRequest {
        1770  +
    /// Creates a new builder-style object to manufacture [`CommitTransactionRequest`](crate::types::CommitTransactionRequest).
        1771  +
    pub fn builder() -> crate::types::builders::CommitTransactionRequestBuilder {
        1772  +
        crate::types::builders::CommitTransactionRequestBuilder::default()
        1773  +
    }
        1774  +
}
        1775  +
        1776  +
/// A builder for [`CommitTransactionRequest`](crate::types::CommitTransactionRequest).
        1777  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        1778  +
#[non_exhaustive]
        1779  +
pub struct CommitTransactionRequestBuilder {
        1780  +
    pub(crate) transaction_id: ::std::option::Option<::std::string::String>,
        1781  +
    pub(crate) commit_digest: ::std::option::Option<::aws_smithy_types::Blob>,
        1782  +
}
        1783  +
impl CommitTransactionRequestBuilder {
        1784  +
    /// <p>Specifies the transaction ID of the transaction to commit.</p>
        1785  +
    /// This field is required.
        1786  +
    pub fn transaction_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        1787  +
        self.transaction_id = ::std::option::Option::Some(input.into());
        1788  +
        self
        1789  +
    }
        1790  +
    /// <p>Specifies the transaction ID of the transaction to commit.</p>
        1791  +
    pub fn set_transaction_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        1792  +
        self.transaction_id = input;
        1793  +
        self
        1794  +
    }
        1795  +
    /// <p>Specifies the transaction ID of the transaction to commit.</p>
        1796  +
    pub fn get_transaction_id(&self) -> &::std::option::Option<::std::string::String> {
        1797  +
        &self.transaction_id
        1798  +
    }
        1799  +
    /// <p>Specifies the commit digest for the transaction to commit. For every active transaction, the commit digest must be passed. QLDB validates <code>CommitDigest</code> and rejects the commit with an error if the digest computed on the client does not match the digest computed by QLDB.</p>
        1800  +
    /// <p>The purpose of the <code>CommitDigest</code> parameter is to ensure that QLDB commits a transaction if and only if the server has processed the exact set of statements sent by the client, in the same order that client sent them, and with no duplicates.</p>
        1801  +
    /// This field is required.
        1802  +
    pub fn commit_digest(mut self, input: ::aws_smithy_types::Blob) -> Self {
        1803  +
        self.commit_digest = ::std::option::Option::Some(input);
        1804  +
        self
        1805  +
    }
        1806  +
    /// <p>Specifies the commit digest for the transaction to commit. For every active transaction, the commit digest must be passed. QLDB validates <code>CommitDigest</code> and rejects the commit with an error if the digest computed on the client does not match the digest computed by QLDB.</p>
        1807  +
    /// <p>The purpose of the <code>CommitDigest</code> parameter is to ensure that QLDB commits a transaction if and only if the server has processed the exact set of statements sent by the client, in the same order that client sent them, and with no duplicates.</p>
        1808  +
    pub fn set_commit_digest(mut self, input: ::std::option::Option<::aws_smithy_types::Blob>) -> Self {
        1809  +
        self.commit_digest = input;
        1810  +
        self
        1811  +
    }
        1812  +
    /// <p>Specifies the commit digest for the transaction to commit. For every active transaction, the commit digest must be passed. QLDB validates <code>CommitDigest</code> and rejects the commit with an error if the digest computed on the client does not match the digest computed by QLDB.</p>
        1813  +
    /// <p>The purpose of the <code>CommitDigest</code> parameter is to ensure that QLDB commits a transaction if and only if the server has processed the exact set of statements sent by the client, in the same order that client sent them, and with no duplicates.</p>
        1814  +
    pub fn get_commit_digest(&self) -> &::std::option::Option<::aws_smithy_types::Blob> {
        1815  +
        &self.commit_digest
        1816  +
    }
        1817  +
    /// Consumes the builder and constructs a [`CommitTransactionRequest`](crate::types::CommitTransactionRequest).
        1818  +
    /// This method will fail if any of the following fields are not set:
        1819  +
    /// - [`transaction_id`](crate::types::builders::CommitTransactionRequestBuilder::transaction_id)
        1820  +
    /// - [`commit_digest`](crate::types::builders::CommitTransactionRequestBuilder::commit_digest)
        1821  +
    pub fn build(self) -> ::std::result::Result<crate::types::CommitTransactionRequest, ::aws_smithy_types::error::operation::BuildError> {
        1822  +
        ::std::result::Result::Ok(crate::types::CommitTransactionRequest {
        1823  +
            transaction_id: self.transaction_id.ok_or_else(|| {
        1824  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        1825  +
                    "transaction_id",
        1826  +
                    "transaction_id was not specified but it is required when building CommitTransactionRequest",
        1827  +
                )
        1828  +
            })?,
        1829  +
            commit_digest: self.commit_digest.ok_or_else(|| {
        1830  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        1831  +
                    "commit_digest",
        1832  +
                    "commit_digest was not specified but it is required when building CommitTransactionRequest",
        1833  +
                )
        1834  +
            })?,
        1835  +
        })
        1836  +
    }
        1837  +
}
  170   1838   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_commit_transaction_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_commit_transaction_result.rs
  171   1839   
new file mode 100644
  172   1840   
index 0000000..d8cddff
  173         -
-- /dev/null
        1841  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_commit_transaction_result.rs
  174   1842   
@@ -0,0 +1,116 @@
        1843  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1844  +
        1845  +
/// <p>Contains the details of the committed transaction.</p>
        1846  +
#[non_exhaustive]
        1847  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        1848  +
pub struct CommitTransactionResult {
        1849  +
    /// <p>The transaction ID of the committed transaction.</p>
        1850  +
    pub transaction_id: ::std::option::Option<::std::string::String>,
        1851  +
    /// <p>The commit digest of the committed transaction.</p>
        1852  +
    pub commit_digest: ::std::option::Option<::aws_smithy_types::Blob>,
        1853  +
    /// <p>Contains server-side performance information for the command.</p>
        1854  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        1855  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        1856  +
    pub consumed_ios: ::std::option::Option<crate::types::IoUsage>,
        1857  +
}
        1858  +
impl CommitTransactionResult {
        1859  +
    /// <p>The transaction ID of the committed transaction.</p>
        1860  +
    pub fn transaction_id(&self) -> ::std::option::Option<&str> {
        1861  +
        self.transaction_id.as_deref()
        1862  +
    }
        1863  +
    /// <p>The commit digest of the committed transaction.</p>
        1864  +
    pub fn commit_digest(&self) -> ::std::option::Option<&::aws_smithy_types::Blob> {
        1865  +
        self.commit_digest.as_ref()
        1866  +
    }
        1867  +
    /// <p>Contains server-side performance information for the command.</p>
        1868  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        1869  +
        self.timing_information.as_ref()
        1870  +
    }
        1871  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        1872  +
    pub fn consumed_ios(&self) -> ::std::option::Option<&crate::types::IoUsage> {
        1873  +
        self.consumed_ios.as_ref()
        1874  +
    }
        1875  +
}
        1876  +
impl CommitTransactionResult {
        1877  +
    /// Creates a new builder-style object to manufacture [`CommitTransactionResult`](crate::types::CommitTransactionResult).
        1878  +
    pub fn builder() -> crate::types::builders::CommitTransactionResultBuilder {
        1879  +
        crate::types::builders::CommitTransactionResultBuilder::default()
        1880  +
    }
        1881  +
}
        1882  +
        1883  +
/// A builder for [`CommitTransactionResult`](crate::types::CommitTransactionResult).
        1884  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        1885  +
#[non_exhaustive]
        1886  +
pub struct CommitTransactionResultBuilder {
        1887  +
    pub(crate) transaction_id: ::std::option::Option<::std::string::String>,
        1888  +
    pub(crate) commit_digest: ::std::option::Option<::aws_smithy_types::Blob>,
        1889  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        1890  +
    pub(crate) consumed_ios: ::std::option::Option<crate::types::IoUsage>,
        1891  +
}
        1892  +
impl CommitTransactionResultBuilder {
        1893  +
    /// <p>The transaction ID of the committed transaction.</p>
        1894  +
    pub fn transaction_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        1895  +
        self.transaction_id = ::std::option::Option::Some(input.into());
        1896  +
        self
        1897  +
    }
        1898  +
    /// <p>The transaction ID of the committed transaction.</p>
        1899  +
    pub fn set_transaction_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        1900  +
        self.transaction_id = input;
        1901  +
        self
        1902  +
    }
        1903  +
    /// <p>The transaction ID of the committed transaction.</p>
        1904  +
    pub fn get_transaction_id(&self) -> &::std::option::Option<::std::string::String> {
        1905  +
        &self.transaction_id
        1906  +
    }
        1907  +
    /// <p>The commit digest of the committed transaction.</p>
        1908  +
    pub fn commit_digest(mut self, input: ::aws_smithy_types::Blob) -> Self {
        1909  +
        self.commit_digest = ::std::option::Option::Some(input);
        1910  +
        self
        1911  +
    }
        1912  +
    /// <p>The commit digest of the committed transaction.</p>
        1913  +
    pub fn set_commit_digest(mut self, input: ::std::option::Option<::aws_smithy_types::Blob>) -> Self {
        1914  +
        self.commit_digest = input;
        1915  +
        self
        1916  +
    }
        1917  +
    /// <p>The commit digest of the committed transaction.</p>
        1918  +
    pub fn get_commit_digest(&self) -> &::std::option::Option<::aws_smithy_types::Blob> {
        1919  +
        &self.commit_digest
        1920  +
    }
        1921  +
    /// <p>Contains server-side performance information for the command.</p>
        1922  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        1923  +
        self.timing_information = ::std::option::Option::Some(input);
        1924  +
        self
        1925  +
    }
        1926  +
    /// <p>Contains server-side performance information for the command.</p>
        1927  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        1928  +
        self.timing_information = input;
        1929  +
        self
        1930  +
    }
        1931  +
    /// <p>Contains server-side performance information for the command.</p>
        1932  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        1933  +
        &self.timing_information
        1934  +
    }
        1935  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        1936  +
    pub fn consumed_ios(mut self, input: crate::types::IoUsage) -> Self {
        1937  +
        self.consumed_ios = ::std::option::Option::Some(input);
        1938  +
        self
        1939  +
    }
        1940  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        1941  +
    pub fn set_consumed_ios(mut self, input: ::std::option::Option<crate::types::IoUsage>) -> Self {
        1942  +
        self.consumed_ios = input;
        1943  +
        self
        1944  +
    }
        1945  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        1946  +
    pub fn get_consumed_ios(&self) -> &::std::option::Option<crate::types::IoUsage> {
        1947  +
        &self.consumed_ios
        1948  +
    }
        1949  +
    /// Consumes the builder and constructs a [`CommitTransactionResult`](crate::types::CommitTransactionResult).
        1950  +
    pub fn build(self) -> crate::types::CommitTransactionResult {
        1951  +
        crate::types::CommitTransactionResult {
        1952  +
            transaction_id: self.transaction_id,
        1953  +
            commit_digest: self.commit_digest,
        1954  +
            timing_information: self.timing_information,
        1955  +
            consumed_ios: self.consumed_ios,
        1956  +
        }
        1957  +
    }
        1958  +
}
  175   1959   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_end_session_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_end_session_request.rs
  176   1960   
new file mode 100644
  177   1961   
index 0000000..9b5441c
  178         -
-- /dev/null
        1962  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_end_session_request.rs
  179   1963   
@@ -0,0 +1,23 @@
        1964  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1965  +
        1966  +
/// <p>Specifies a request to end the session.</p>
        1967  +
#[non_exhaustive]
        1968  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        1969  +
pub struct EndSessionRequest {}
        1970  +
impl EndSessionRequest {
        1971  +
    /// Creates a new builder-style object to manufacture [`EndSessionRequest`](crate::types::EndSessionRequest).
        1972  +
    pub fn builder() -> crate::types::builders::EndSessionRequestBuilder {
        1973  +
        crate::types::builders::EndSessionRequestBuilder::default()
        1974  +
    }
        1975  +
}
        1976  +
        1977  +
/// A builder for [`EndSessionRequest`](crate::types::EndSessionRequest).
        1978  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        1979  +
#[non_exhaustive]
        1980  +
pub struct EndSessionRequestBuilder {}
        1981  +
impl EndSessionRequestBuilder {
        1982  +
    /// Consumes the builder and constructs a [`EndSessionRequest`](crate::types::EndSessionRequest).
        1983  +
    pub fn build(self) -> crate::types::EndSessionRequest {
        1984  +
        crate::types::EndSessionRequest {}
        1985  +
    }
        1986  +
}
  180   1987   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_end_session_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_end_session_result.rs
  181   1988   
new file mode 100644
  182   1989   
index 0000000..a6fd197
  183         -
-- /dev/null
        1990  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_end_session_result.rs
  184   1991   
@@ -0,0 +1,50 @@
        1992  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        1993  +
        1994  +
/// <p>Contains the details of the ended session.</p>
        1995  +
#[non_exhaustive]
        1996  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        1997  +
pub struct EndSessionResult {
        1998  +
    /// <p>Contains server-side performance information for the command.</p>
        1999  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2000  +
}
        2001  +
impl EndSessionResult {
        2002  +
    /// <p>Contains server-side performance information for the command.</p>
        2003  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        2004  +
        self.timing_information.as_ref()
        2005  +
    }
        2006  +
}
        2007  +
impl EndSessionResult {
        2008  +
    /// Creates a new builder-style object to manufacture [`EndSessionResult`](crate::types::EndSessionResult).
        2009  +
    pub fn builder() -> crate::types::builders::EndSessionResultBuilder {
        2010  +
        crate::types::builders::EndSessionResultBuilder::default()
        2011  +
    }
        2012  +
}
        2013  +
        2014  +
/// A builder for [`EndSessionResult`](crate::types::EndSessionResult).
        2015  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2016  +
#[non_exhaustive]
        2017  +
pub struct EndSessionResultBuilder {
        2018  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2019  +
}
        2020  +
impl EndSessionResultBuilder {
        2021  +
    /// <p>Contains server-side performance information for the command.</p>
        2022  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        2023  +
        self.timing_information = ::std::option::Option::Some(input);
        2024  +
        self
        2025  +
    }
        2026  +
    /// <p>Contains server-side performance information for the command.</p>
        2027  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        2028  +
        self.timing_information = input;
        2029  +
        self
        2030  +
    }
        2031  +
    /// <p>Contains server-side performance information for the command.</p>
        2032  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        2033  +
        &self.timing_information
        2034  +
    }
        2035  +
    /// Consumes the builder and constructs a [`EndSessionResult`](crate::types::EndSessionResult).
        2036  +
    pub fn build(self) -> crate::types::EndSessionResult {
        2037  +
        crate::types::EndSessionResult {
        2038  +
            timing_information: self.timing_information,
        2039  +
        }
        2040  +
    }
        2041  +
}
  185   2042   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_execute_statement_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_execute_statement_request.rs
  186   2043   
new file mode 100644
  187   2044   
index 0000000..e29fa82
  188         -
-- /dev/null
        2045  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_execute_statement_request.rs
  189   2046   
@@ -0,0 +1,119 @@
        2047  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2048  +
        2049  +
/// <p>Specifies a request to execute a statement.</p>
        2050  +
#[non_exhaustive]
        2051  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2052  +
pub struct ExecuteStatementRequest {
        2053  +
    /// <p>Specifies the transaction ID of the request.</p>
        2054  +
    pub transaction_id: ::std::string::String,
        2055  +
    /// <p>Specifies the statement of the request.</p>
        2056  +
    pub statement: ::std::string::String,
        2057  +
    /// <p>Specifies the parameters for the parameterized statement in the request.</p>
        2058  +
    pub parameters: ::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>>,
        2059  +
}
        2060  +
impl ExecuteStatementRequest {
        2061  +
    /// <p>Specifies the transaction ID of the request.</p>
        2062  +
    pub fn transaction_id(&self) -> &str {
        2063  +
        use std::ops::Deref;
        2064  +
        self.transaction_id.deref()
        2065  +
    }
        2066  +
    /// <p>Specifies the statement of the request.</p>
        2067  +
    pub fn statement(&self) -> &str {
        2068  +
        use std::ops::Deref;
        2069  +
        self.statement.deref()
        2070  +
    }
        2071  +
    /// <p>Specifies the parameters for the parameterized statement in the request.</p>
        2072  +
    ///
        2073  +
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.parameters.is_none()`.
        2074  +
    pub fn parameters(&self) -> &[crate::types::ValueHolder] {
        2075  +
        self.parameters.as_deref().unwrap_or_default()
        2076  +
    }
        2077  +
}
        2078  +
impl ExecuteStatementRequest {
        2079  +
    /// Creates a new builder-style object to manufacture [`ExecuteStatementRequest`](crate::types::ExecuteStatementRequest).
        2080  +
    pub fn builder() -> crate::types::builders::ExecuteStatementRequestBuilder {
        2081  +
        crate::types::builders::ExecuteStatementRequestBuilder::default()
        2082  +
    }
        2083  +
}
        2084  +
        2085  +
/// A builder for [`ExecuteStatementRequest`](crate::types::ExecuteStatementRequest).
        2086  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2087  +
#[non_exhaustive]
        2088  +
pub struct ExecuteStatementRequestBuilder {
        2089  +
    pub(crate) transaction_id: ::std::option::Option<::std::string::String>,
        2090  +
    pub(crate) statement: ::std::option::Option<::std::string::String>,
        2091  +
    pub(crate) parameters: ::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>>,
        2092  +
}
        2093  +
impl ExecuteStatementRequestBuilder {
        2094  +
    /// <p>Specifies the transaction ID of the request.</p>
        2095  +
    /// This field is required.
        2096  +
    pub fn transaction_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2097  +
        self.transaction_id = ::std::option::Option::Some(input.into());
        2098  +
        self
        2099  +
    }
        2100  +
    /// <p>Specifies the transaction ID of the request.</p>
        2101  +
    pub fn set_transaction_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2102  +
        self.transaction_id = input;
        2103  +
        self
        2104  +
    }
        2105  +
    /// <p>Specifies the transaction ID of the request.</p>
        2106  +
    pub fn get_transaction_id(&self) -> &::std::option::Option<::std::string::String> {
        2107  +
        &self.transaction_id
        2108  +
    }
        2109  +
    /// <p>Specifies the statement of the request.</p>
        2110  +
    /// This field is required.
        2111  +
    pub fn statement(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2112  +
        self.statement = ::std::option::Option::Some(input.into());
        2113  +
        self
        2114  +
    }
        2115  +
    /// <p>Specifies the statement of the request.</p>
        2116  +
    pub fn set_statement(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2117  +
        self.statement = input;
        2118  +
        self
        2119  +
    }
        2120  +
    /// <p>Specifies the statement of the request.</p>
        2121  +
    pub fn get_statement(&self) -> &::std::option::Option<::std::string::String> {
        2122  +
        &self.statement
        2123  +
    }
        2124  +
    /// Appends an item to `parameters`.
        2125  +
    ///
        2126  +
    /// To override the contents of this collection use [`set_parameters`](Self::set_parameters).
        2127  +
    ///
        2128  +
    /// <p>Specifies the parameters for the parameterized statement in the request.</p>
        2129  +
    pub fn parameters(mut self, input: crate::types::ValueHolder) -> Self {
        2130  +
        let mut v = self.parameters.unwrap_or_default();
        2131  +
        v.push(input);
        2132  +
        self.parameters = ::std::option::Option::Some(v);
        2133  +
        self
        2134  +
    }
        2135  +
    /// <p>Specifies the parameters for the parameterized statement in the request.</p>
        2136  +
    pub fn set_parameters(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>>) -> Self {
        2137  +
        self.parameters = input;
        2138  +
        self
        2139  +
    }
        2140  +
    /// <p>Specifies the parameters for the parameterized statement in the request.</p>
        2141  +
    pub fn get_parameters(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>> {
        2142  +
        &self.parameters
        2143  +
    }
        2144  +
    /// Consumes the builder and constructs a [`ExecuteStatementRequest`](crate::types::ExecuteStatementRequest).
        2145  +
    /// This method will fail if any of the following fields are not set:
        2146  +
    /// - [`transaction_id`](crate::types::builders::ExecuteStatementRequestBuilder::transaction_id)
        2147  +
    /// - [`statement`](crate::types::builders::ExecuteStatementRequestBuilder::statement)
        2148  +
    pub fn build(self) -> ::std::result::Result<crate::types::ExecuteStatementRequest, ::aws_smithy_types::error::operation::BuildError> {
        2149  +
        ::std::result::Result::Ok(crate::types::ExecuteStatementRequest {
        2150  +
            transaction_id: self.transaction_id.ok_or_else(|| {
        2151  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        2152  +
                    "transaction_id",
        2153  +
                    "transaction_id was not specified but it is required when building ExecuteStatementRequest",
        2154  +
                )
        2155  +
            })?,
        2156  +
            statement: self.statement.ok_or_else(|| {
        2157  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        2158  +
                    "statement",
        2159  +
                    "statement was not specified but it is required when building ExecuteStatementRequest",
        2160  +
                )
        2161  +
            })?,
        2162  +
            parameters: self.parameters,
        2163  +
        })
        2164  +
    }
        2165  +
}
  190   2166   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_execute_statement_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_execute_statement_result.rs
  191   2167   
new file mode 100644
  192   2168   
index 0000000..c790ed3
  193         -
-- /dev/null
        2169  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_execute_statement_result.rs
  194   2170   
@@ -0,0 +1,94 @@
        2171  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2172  +
        2173  +
/// <p>Contains the details of the executed statement.</p>
        2174  +
#[non_exhaustive]
        2175  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2176  +
pub struct ExecuteStatementResult {
        2177  +
    /// <p>Contains the details of the first fetched page.</p>
        2178  +
    pub first_page: ::std::option::Option<crate::types::Page>,
        2179  +
    /// <p>Contains server-side performance information for the command.</p>
        2180  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2181  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2182  +
    pub consumed_ios: ::std::option::Option<crate::types::IoUsage>,
        2183  +
}
        2184  +
impl ExecuteStatementResult {
        2185  +
    /// <p>Contains the details of the first fetched page.</p>
        2186  +
    pub fn first_page(&self) -> ::std::option::Option<&crate::types::Page> {
        2187  +
        self.first_page.as_ref()
        2188  +
    }
        2189  +
    /// <p>Contains server-side performance information for the command.</p>
        2190  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        2191  +
        self.timing_information.as_ref()
        2192  +
    }
        2193  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2194  +
    pub fn consumed_ios(&self) -> ::std::option::Option<&crate::types::IoUsage> {
        2195  +
        self.consumed_ios.as_ref()
        2196  +
    }
        2197  +
}
        2198  +
impl ExecuteStatementResult {
        2199  +
    /// Creates a new builder-style object to manufacture [`ExecuteStatementResult`](crate::types::ExecuteStatementResult).
        2200  +
    pub fn builder() -> crate::types::builders::ExecuteStatementResultBuilder {
        2201  +
        crate::types::builders::ExecuteStatementResultBuilder::default()
        2202  +
    }
        2203  +
}
        2204  +
        2205  +
/// A builder for [`ExecuteStatementResult`](crate::types::ExecuteStatementResult).
        2206  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2207  +
#[non_exhaustive]
        2208  +
pub struct ExecuteStatementResultBuilder {
        2209  +
    pub(crate) first_page: ::std::option::Option<crate::types::Page>,
        2210  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2211  +
    pub(crate) consumed_ios: ::std::option::Option<crate::types::IoUsage>,
        2212  +
}
        2213  +
impl ExecuteStatementResultBuilder {
        2214  +
    /// <p>Contains the details of the first fetched page.</p>
        2215  +
    pub fn first_page(mut self, input: crate::types::Page) -> Self {
        2216  +
        self.first_page = ::std::option::Option::Some(input);
        2217  +
        self
        2218  +
    }
        2219  +
    /// <p>Contains the details of the first fetched page.</p>
        2220  +
    pub fn set_first_page(mut self, input: ::std::option::Option<crate::types::Page>) -> Self {
        2221  +
        self.first_page = input;
        2222  +
        self
        2223  +
    }
        2224  +
    /// <p>Contains the details of the first fetched page.</p>
        2225  +
    pub fn get_first_page(&self) -> &::std::option::Option<crate::types::Page> {
        2226  +
        &self.first_page
        2227  +
    }
        2228  +
    /// <p>Contains server-side performance information for the command.</p>
        2229  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        2230  +
        self.timing_information = ::std::option::Option::Some(input);
        2231  +
        self
        2232  +
    }
        2233  +
    /// <p>Contains server-side performance information for the command.</p>
        2234  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        2235  +
        self.timing_information = input;
        2236  +
        self
        2237  +
    }
        2238  +
    /// <p>Contains server-side performance information for the command.</p>
        2239  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        2240  +
        &self.timing_information
        2241  +
    }
        2242  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2243  +
    pub fn consumed_ios(mut self, input: crate::types::IoUsage) -> Self {
        2244  +
        self.consumed_ios = ::std::option::Option::Some(input);
        2245  +
        self
        2246  +
    }
        2247  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2248  +
    pub fn set_consumed_ios(mut self, input: ::std::option::Option<crate::types::IoUsage>) -> Self {
        2249  +
        self.consumed_ios = input;
        2250  +
        self
        2251  +
    }
        2252  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2253  +
    pub fn get_consumed_ios(&self) -> &::std::option::Option<crate::types::IoUsage> {
        2254  +
        &self.consumed_ios
        2255  +
    }
        2256  +
    /// Consumes the builder and constructs a [`ExecuteStatementResult`](crate::types::ExecuteStatementResult).
        2257  +
    pub fn build(self) -> crate::types::ExecuteStatementResult {
        2258  +
        crate::types::ExecuteStatementResult {
        2259  +
            first_page: self.first_page,
        2260  +
            timing_information: self.timing_information,
        2261  +
            consumed_ios: self.consumed_ios,
        2262  +
        }
        2263  +
    }
        2264  +
}
  195   2265   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_fetch_page_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_fetch_page_request.rs
  196   2266   
new file mode 100644
  197   2267   
index 0000000..1a6e256
  198         -
-- /dev/null
        2268  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_fetch_page_request.rs
  199   2269   
@@ -0,0 +1,89 @@
        2270  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2271  +
        2272  +
/// <p>Specifies the details of the page to be fetched.</p>
        2273  +
#[non_exhaustive]
        2274  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2275  +
pub struct FetchPageRequest {
        2276  +
    /// <p>Specifies the transaction ID of the page to be fetched.</p>
        2277  +
    pub transaction_id: ::std::string::String,
        2278  +
    /// <p>Specifies the next page token of the page to be fetched.</p>
        2279  +
    pub next_page_token: ::std::string::String,
        2280  +
}
        2281  +
impl FetchPageRequest {
        2282  +
    /// <p>Specifies the transaction ID of the page to be fetched.</p>
        2283  +
    pub fn transaction_id(&self) -> &str {
        2284  +
        use std::ops::Deref;
        2285  +
        self.transaction_id.deref()
        2286  +
    }
        2287  +
    /// <p>Specifies the next page token of the page to be fetched.</p>
        2288  +
    pub fn next_page_token(&self) -> &str {
        2289  +
        use std::ops::Deref;
        2290  +
        self.next_page_token.deref()
        2291  +
    }
        2292  +
}
        2293  +
impl FetchPageRequest {
        2294  +
    /// Creates a new builder-style object to manufacture [`FetchPageRequest`](crate::types::FetchPageRequest).
        2295  +
    pub fn builder() -> crate::types::builders::FetchPageRequestBuilder {
        2296  +
        crate::types::builders::FetchPageRequestBuilder::default()
        2297  +
    }
        2298  +
}
        2299  +
        2300  +
/// A builder for [`FetchPageRequest`](crate::types::FetchPageRequest).
        2301  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2302  +
#[non_exhaustive]
        2303  +
pub struct FetchPageRequestBuilder {
        2304  +
    pub(crate) transaction_id: ::std::option::Option<::std::string::String>,
        2305  +
    pub(crate) next_page_token: ::std::option::Option<::std::string::String>,
        2306  +
}
        2307  +
impl FetchPageRequestBuilder {
        2308  +
    /// <p>Specifies the transaction ID of the page to be fetched.</p>
        2309  +
    /// This field is required.
        2310  +
    pub fn transaction_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2311  +
        self.transaction_id = ::std::option::Option::Some(input.into());
        2312  +
        self
        2313  +
    }
        2314  +
    /// <p>Specifies the transaction ID of the page to be fetched.</p>
        2315  +
    pub fn set_transaction_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2316  +
        self.transaction_id = input;
        2317  +
        self
        2318  +
    }
        2319  +
    /// <p>Specifies the transaction ID of the page to be fetched.</p>
        2320  +
    pub fn get_transaction_id(&self) -> &::std::option::Option<::std::string::String> {
        2321  +
        &self.transaction_id
        2322  +
    }
        2323  +
    /// <p>Specifies the next page token of the page to be fetched.</p>
        2324  +
    /// This field is required.
        2325  +
    pub fn next_page_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2326  +
        self.next_page_token = ::std::option::Option::Some(input.into());
        2327  +
        self
        2328  +
    }
        2329  +
    /// <p>Specifies the next page token of the page to be fetched.</p>
        2330  +
    pub fn set_next_page_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2331  +
        self.next_page_token = input;
        2332  +
        self
        2333  +
    }
        2334  +
    /// <p>Specifies the next page token of the page to be fetched.</p>
        2335  +
    pub fn get_next_page_token(&self) -> &::std::option::Option<::std::string::String> {
        2336  +
        &self.next_page_token
        2337  +
    }
        2338  +
    /// Consumes the builder and constructs a [`FetchPageRequest`](crate::types::FetchPageRequest).
        2339  +
    /// This method will fail if any of the following fields are not set:
        2340  +
    /// - [`transaction_id`](crate::types::builders::FetchPageRequestBuilder::transaction_id)
        2341  +
    /// - [`next_page_token`](crate::types::builders::FetchPageRequestBuilder::next_page_token)
        2342  +
    pub fn build(self) -> ::std::result::Result<crate::types::FetchPageRequest, ::aws_smithy_types::error::operation::BuildError> {
        2343  +
        ::std::result::Result::Ok(crate::types::FetchPageRequest {
        2344  +
            transaction_id: self.transaction_id.ok_or_else(|| {
        2345  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        2346  +
                    "transaction_id",
        2347  +
                    "transaction_id was not specified but it is required when building FetchPageRequest",
        2348  +
                )
        2349  +
            })?,
        2350  +
            next_page_token: self.next_page_token.ok_or_else(|| {
        2351  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        2352  +
                    "next_page_token",
        2353  +
                    "next_page_token was not specified but it is required when building FetchPageRequest",
        2354  +
                )
        2355  +
            })?,
        2356  +
        })
        2357  +
    }
        2358  +
}
  200   2359   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_fetch_page_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_fetch_page_result.rs
  201   2360   
new file mode 100644
  202   2361   
index 0000000..78d077a
  203         -
-- /dev/null
        2362  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_fetch_page_result.rs
  204   2363   
@@ -0,0 +1,94 @@
        2364  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2365  +
        2366  +
/// <p>Contains the page that was fetched.</p>
        2367  +
#[non_exhaustive]
        2368  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2369  +
pub struct FetchPageResult {
        2370  +
    /// <p>Contains details of the fetched page.</p>
        2371  +
    pub page: ::std::option::Option<crate::types::Page>,
        2372  +
    /// <p>Contains server-side performance information for the command.</p>
        2373  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2374  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2375  +
    pub consumed_ios: ::std::option::Option<crate::types::IoUsage>,
        2376  +
}
        2377  +
impl FetchPageResult {
        2378  +
    /// <p>Contains details of the fetched page.</p>
        2379  +
    pub fn page(&self) -> ::std::option::Option<&crate::types::Page> {
        2380  +
        self.page.as_ref()
        2381  +
    }
        2382  +
    /// <p>Contains server-side performance information for the command.</p>
        2383  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        2384  +
        self.timing_information.as_ref()
        2385  +
    }
        2386  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2387  +
    pub fn consumed_ios(&self) -> ::std::option::Option<&crate::types::IoUsage> {
        2388  +
        self.consumed_ios.as_ref()
        2389  +
    }
        2390  +
}
        2391  +
impl FetchPageResult {
        2392  +
    /// Creates a new builder-style object to manufacture [`FetchPageResult`](crate::types::FetchPageResult).
        2393  +
    pub fn builder() -> crate::types::builders::FetchPageResultBuilder {
        2394  +
        crate::types::builders::FetchPageResultBuilder::default()
        2395  +
    }
        2396  +
}
        2397  +
        2398  +
/// A builder for [`FetchPageResult`](crate::types::FetchPageResult).
        2399  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2400  +
#[non_exhaustive]
        2401  +
pub struct FetchPageResultBuilder {
        2402  +
    pub(crate) page: ::std::option::Option<crate::types::Page>,
        2403  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2404  +
    pub(crate) consumed_ios: ::std::option::Option<crate::types::IoUsage>,
        2405  +
}
        2406  +
impl FetchPageResultBuilder {
        2407  +
    /// <p>Contains details of the fetched page.</p>
        2408  +
    pub fn page(mut self, input: crate::types::Page) -> Self {
        2409  +
        self.page = ::std::option::Option::Some(input);
        2410  +
        self
        2411  +
    }
        2412  +
    /// <p>Contains details of the fetched page.</p>
        2413  +
    pub fn set_page(mut self, input: ::std::option::Option<crate::types::Page>) -> Self {
        2414  +
        self.page = input;
        2415  +
        self
        2416  +
    }
        2417  +
    /// <p>Contains details of the fetched page.</p>
        2418  +
    pub fn get_page(&self) -> &::std::option::Option<crate::types::Page> {
        2419  +
        &self.page
        2420  +
    }
        2421  +
    /// <p>Contains server-side performance information for the command.</p>
        2422  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        2423  +
        self.timing_information = ::std::option::Option::Some(input);
        2424  +
        self
        2425  +
    }
        2426  +
    /// <p>Contains server-side performance information for the command.</p>
        2427  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        2428  +
        self.timing_information = input;
        2429  +
        self
        2430  +
    }
        2431  +
    /// <p>Contains server-side performance information for the command.</p>
        2432  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        2433  +
        &self.timing_information
        2434  +
    }
        2435  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2436  +
    pub fn consumed_ios(mut self, input: crate::types::IoUsage) -> Self {
        2437  +
        self.consumed_ios = ::std::option::Option::Some(input);
        2438  +
        self
        2439  +
    }
        2440  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2441  +
    pub fn set_consumed_ios(mut self, input: ::std::option::Option<crate::types::IoUsage>) -> Self {
        2442  +
        self.consumed_ios = input;
        2443  +
        self
        2444  +
    }
        2445  +
    /// <p>Contains metrics about the number of I/O requests that were consumed.</p>
        2446  +
    pub fn get_consumed_ios(&self) -> &::std::option::Option<crate::types::IoUsage> {
        2447  +
        &self.consumed_ios
        2448  +
    }
        2449  +
    /// Consumes the builder and constructs a [`FetchPageResult`](crate::types::FetchPageResult).
        2450  +
    pub fn build(self) -> crate::types::FetchPageResult {
        2451  +
        crate::types::FetchPageResult {
        2452  +
            page: self.page,
        2453  +
            timing_information: self.timing_information,
        2454  +
            consumed_ios: self.consumed_ios,
        2455  +
        }
        2456  +
    }
        2457  +
}
  205   2458   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_io_usage.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_io_usage.rs
  206   2459   
new file mode 100644
  207   2460   
index 0000000..af10bec
  208         -
-- /dev/null
        2461  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_io_usage.rs
  209   2462   
@@ -0,0 +1,72 @@
        2463  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2464  +
        2465  +
/// <p>Contains I/O usage metrics for a command that was invoked.</p>
        2466  +
#[non_exhaustive]
        2467  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2468  +
pub struct IoUsage {
        2469  +
    /// <p>The number of read I/O requests that the command made.</p>
        2470  +
    pub read_ios: i64,
        2471  +
    /// <p>The number of write I/O requests that the command made.</p>
        2472  +
    pub write_ios: i64,
        2473  +
}
        2474  +
impl IoUsage {
        2475  +
    /// <p>The number of read I/O requests that the command made.</p>
        2476  +
    pub fn read_ios(&self) -> i64 {
        2477  +
        self.read_ios
        2478  +
    }
        2479  +
    /// <p>The number of write I/O requests that the command made.</p>
        2480  +
    pub fn write_ios(&self) -> i64 {
        2481  +
        self.write_ios
        2482  +
    }
        2483  +
}
        2484  +
impl IoUsage {
        2485  +
    /// Creates a new builder-style object to manufacture [`IoUsage`](crate::types::IoUsage).
        2486  +
    pub fn builder() -> crate::types::builders::IoUsageBuilder {
        2487  +
        crate::types::builders::IoUsageBuilder::default()
        2488  +
    }
        2489  +
}
        2490  +
        2491  +
/// A builder for [`IoUsage`](crate::types::IoUsage).
        2492  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2493  +
#[non_exhaustive]
        2494  +
pub struct IoUsageBuilder {
        2495  +
    pub(crate) read_ios: ::std::option::Option<i64>,
        2496  +
    pub(crate) write_ios: ::std::option::Option<i64>,
        2497  +
}
        2498  +
impl IoUsageBuilder {
        2499  +
    /// <p>The number of read I/O requests that the command made.</p>
        2500  +
    pub fn read_ios(mut self, input: i64) -> Self {
        2501  +
        self.read_ios = ::std::option::Option::Some(input);
        2502  +
        self
        2503  +
    }
        2504  +
    /// <p>The number of read I/O requests that the command made.</p>
        2505  +
    pub fn set_read_ios(mut self, input: ::std::option::Option<i64>) -> Self {
        2506  +
        self.read_ios = input;
        2507  +
        self
        2508  +
    }
        2509  +
    /// <p>The number of read I/O requests that the command made.</p>
        2510  +
    pub fn get_read_ios(&self) -> &::std::option::Option<i64> {
        2511  +
        &self.read_ios
        2512  +
    }
        2513  +
    /// <p>The number of write I/O requests that the command made.</p>
        2514  +
    pub fn write_ios(mut self, input: i64) -> Self {
        2515  +
        self.write_ios = ::std::option::Option::Some(input);
        2516  +
        self
        2517  +
    }
        2518  +
    /// <p>The number of write I/O requests that the command made.</p>
        2519  +
    pub fn set_write_ios(mut self, input: ::std::option::Option<i64>) -> Self {
        2520  +
        self.write_ios = input;
        2521  +
        self
        2522  +
    }
        2523  +
    /// <p>The number of write I/O requests that the command made.</p>
        2524  +
    pub fn get_write_ios(&self) -> &::std::option::Option<i64> {
        2525  +
        &self.write_ios
        2526  +
    }
        2527  +
    /// Consumes the builder and constructs a [`IoUsage`](crate::types::IoUsage).
        2528  +
    pub fn build(self) -> crate::types::IoUsage {
        2529  +
        crate::types::IoUsage {
        2530  +
            read_ios: self.read_ios.unwrap_or_default(),
        2531  +
            write_ios: self.write_ios.unwrap_or_default(),
        2532  +
        }
        2533  +
    }
        2534  +
}
  210   2535   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_page.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_page.rs
  211   2536   
new file mode 100644
  212   2537   
index 0000000..c5df342
  213         -
-- /dev/null
        2538  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_page.rs
  214   2539   
@@ -0,0 +1,80 @@
        2540  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2541  +
        2542  +
/// <p>Contains details of the fetched page.</p>
        2543  +
#[non_exhaustive]
        2544  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2545  +
pub struct Page {
        2546  +
    /// <p>A structure that contains values in multiple encoding formats.</p>
        2547  +
    pub values: ::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>>,
        2548  +
    /// <p>The token of the next page.</p>
        2549  +
    pub next_page_token: ::std::option::Option<::std::string::String>,
        2550  +
}
        2551  +
impl Page {
        2552  +
    /// <p>A structure that contains values in multiple encoding formats.</p>
        2553  +
    ///
        2554  +
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.values.is_none()`.
        2555  +
    pub fn values(&self) -> &[crate::types::ValueHolder] {
        2556  +
        self.values.as_deref().unwrap_or_default()
        2557  +
    }
        2558  +
    /// <p>The token of the next page.</p>
        2559  +
    pub fn next_page_token(&self) -> ::std::option::Option<&str> {
        2560  +
        self.next_page_token.as_deref()
        2561  +
    }
        2562  +
}
        2563  +
impl Page {
        2564  +
    /// Creates a new builder-style object to manufacture [`Page`](crate::types::Page).
        2565  +
    pub fn builder() -> crate::types::builders::PageBuilder {
        2566  +
        crate::types::builders::PageBuilder::default()
        2567  +
    }
        2568  +
}
        2569  +
        2570  +
/// A builder for [`Page`](crate::types::Page).
        2571  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2572  +
#[non_exhaustive]
        2573  +
pub struct PageBuilder {
        2574  +
    pub(crate) values: ::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>>,
        2575  +
    pub(crate) next_page_token: ::std::option::Option<::std::string::String>,
        2576  +
}
        2577  +
impl PageBuilder {
        2578  +
    /// Appends an item to `values`.
        2579  +
    ///
        2580  +
    /// To override the contents of this collection use [`set_values`](Self::set_values).
        2581  +
    ///
        2582  +
    /// <p>A structure that contains values in multiple encoding formats.</p>
        2583  +
    pub fn values(mut self, input: crate::types::ValueHolder) -> Self {
        2584  +
        let mut v = self.values.unwrap_or_default();
        2585  +
        v.push(input);
        2586  +
        self.values = ::std::option::Option::Some(v);
        2587  +
        self
        2588  +
    }
        2589  +
    /// <p>A structure that contains values in multiple encoding formats.</p>
        2590  +
    pub fn set_values(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>>) -> Self {
        2591  +
        self.values = input;
        2592  +
        self
        2593  +
    }
        2594  +
    /// <p>A structure that contains values in multiple encoding formats.</p>
        2595  +
    pub fn get_values(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ValueHolder>> {
        2596  +
        &self.values
        2597  +
    }
        2598  +
    /// <p>The token of the next page.</p>
        2599  +
    pub fn next_page_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2600  +
        self.next_page_token = ::std::option::Option::Some(input.into());
        2601  +
        self
        2602  +
    }
        2603  +
    /// <p>The token of the next page.</p>
        2604  +
    pub fn set_next_page_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2605  +
        self.next_page_token = input;
        2606  +
        self
        2607  +
    }
        2608  +
    /// <p>The token of the next page.</p>
        2609  +
    pub fn get_next_page_token(&self) -> &::std::option::Option<::std::string::String> {
        2610  +
        &self.next_page_token
        2611  +
    }
        2612  +
    /// Consumes the builder and constructs a [`Page`](crate::types::Page).
        2613  +
    pub fn build(self) -> crate::types::Page {
        2614  +
        crate::types::Page {
        2615  +
            values: self.values,
        2616  +
            next_page_token: self.next_page_token,
        2617  +
        }
        2618  +
    }
        2619  +
}
  215   2620   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_session_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_session_request.rs
  216   2621   
new file mode 100644
  217   2622   
index 0000000..a7ff244
  218         -
-- /dev/null
        2623  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_session_request.rs
  219   2624   
@@ -0,0 +1,59 @@
        2625  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2626  +
        2627  +
/// <p>Specifies a request to start a new session.</p>
        2628  +
#[non_exhaustive]
        2629  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2630  +
pub struct StartSessionRequest {
        2631  +
    /// <p>The name of the ledger to start a new session against.</p>
        2632  +
    pub ledger_name: ::std::string::String,
        2633  +
}
        2634  +
impl StartSessionRequest {
        2635  +
    /// <p>The name of the ledger to start a new session against.</p>
        2636  +
    pub fn ledger_name(&self) -> &str {
        2637  +
        use std::ops::Deref;
        2638  +
        self.ledger_name.deref()
        2639  +
    }
        2640  +
}
        2641  +
impl StartSessionRequest {
        2642  +
    /// Creates a new builder-style object to manufacture [`StartSessionRequest`](crate::types::StartSessionRequest).
        2643  +
    pub fn builder() -> crate::types::builders::StartSessionRequestBuilder {
        2644  +
        crate::types::builders::StartSessionRequestBuilder::default()
        2645  +
    }
        2646  +
}
        2647  +
        2648  +
/// A builder for [`StartSessionRequest`](crate::types::StartSessionRequest).
        2649  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2650  +
#[non_exhaustive]
        2651  +
pub struct StartSessionRequestBuilder {
        2652  +
    pub(crate) ledger_name: ::std::option::Option<::std::string::String>,
        2653  +
}
        2654  +
impl StartSessionRequestBuilder {
        2655  +
    /// <p>The name of the ledger to start a new session against.</p>
        2656  +
    /// This field is required.
        2657  +
    pub fn ledger_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2658  +
        self.ledger_name = ::std::option::Option::Some(input.into());
        2659  +
        self
        2660  +
    }
        2661  +
    /// <p>The name of the ledger to start a new session against.</p>
        2662  +
    pub fn set_ledger_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2663  +
        self.ledger_name = input;
        2664  +
        self
        2665  +
    }
        2666  +
    /// <p>The name of the ledger to start a new session against.</p>
        2667  +
    pub fn get_ledger_name(&self) -> &::std::option::Option<::std::string::String> {
        2668  +
        &self.ledger_name
        2669  +
    }
        2670  +
    /// Consumes the builder and constructs a [`StartSessionRequest`](crate::types::StartSessionRequest).
        2671  +
    /// This method will fail if any of the following fields are not set:
        2672  +
    /// - [`ledger_name`](crate::types::builders::StartSessionRequestBuilder::ledger_name)
        2673  +
    pub fn build(self) -> ::std::result::Result<crate::types::StartSessionRequest, ::aws_smithy_types::error::operation::BuildError> {
        2674  +
        ::std::result::Result::Ok(crate::types::StartSessionRequest {
        2675  +
            ledger_name: self.ledger_name.ok_or_else(|| {
        2676  +
                ::aws_smithy_types::error::operation::BuildError::missing_field(
        2677  +
                    "ledger_name",
        2678  +
                    "ledger_name was not specified but it is required when building StartSessionRequest",
        2679  +
                )
        2680  +
            })?,
        2681  +
        })
        2682  +
    }
        2683  +
}
  220   2684   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_session_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_session_result.rs
  221   2685   
new file mode 100644
  222   2686   
index 0000000..e0598d3
  223         -
-- /dev/null
        2687  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_session_result.rs
  224   2688   
@@ -0,0 +1,72 @@
        2689  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2690  +
        2691  +
/// <p>Contains the details of the started session.</p>
        2692  +
#[non_exhaustive]
        2693  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2694  +
pub struct StartSessionResult {
        2695  +
    /// <p>Session token of the started session. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
        2696  +
    pub session_token: ::std::option::Option<::std::string::String>,
        2697  +
    /// <p>Contains server-side performance information for the command.</p>
        2698  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2699  +
}
        2700  +
impl StartSessionResult {
        2701  +
    /// <p>Session token of the started session. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
        2702  +
    pub fn session_token(&self) -> ::std::option::Option<&str> {
        2703  +
        self.session_token.as_deref()
        2704  +
    }
        2705  +
    /// <p>Contains server-side performance information for the command.</p>
        2706  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        2707  +
        self.timing_information.as_ref()
        2708  +
    }
        2709  +
}
        2710  +
impl StartSessionResult {
        2711  +
    /// Creates a new builder-style object to manufacture [`StartSessionResult`](crate::types::StartSessionResult).
        2712  +
    pub fn builder() -> crate::types::builders::StartSessionResultBuilder {
        2713  +
        crate::types::builders::StartSessionResultBuilder::default()
        2714  +
    }
        2715  +
}
        2716  +
        2717  +
/// A builder for [`StartSessionResult`](crate::types::StartSessionResult).
        2718  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2719  +
#[non_exhaustive]
        2720  +
pub struct StartSessionResultBuilder {
        2721  +
    pub(crate) session_token: ::std::option::Option<::std::string::String>,
        2722  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2723  +
}
        2724  +
impl StartSessionResultBuilder {
        2725  +
    /// <p>Session token of the started session. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
        2726  +
    pub fn session_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2727  +
        self.session_token = ::std::option::Option::Some(input.into());
        2728  +
        self
        2729  +
    }
        2730  +
    /// <p>Session token of the started session. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
        2731  +
    pub fn set_session_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2732  +
        self.session_token = input;
        2733  +
        self
        2734  +
    }
        2735  +
    /// <p>Session token of the started session. This <code>SessionToken</code> is required for every subsequent command that is issued during the current session.</p>
        2736  +
    pub fn get_session_token(&self) -> &::std::option::Option<::std::string::String> {
        2737  +
        &self.session_token
        2738  +
    }
        2739  +
    /// <p>Contains server-side performance information for the command.</p>
        2740  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        2741  +
        self.timing_information = ::std::option::Option::Some(input);
        2742  +
        self
        2743  +
    }
        2744  +
    /// <p>Contains server-side performance information for the command.</p>
        2745  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        2746  +
        self.timing_information = input;
        2747  +
        self
        2748  +
    }
        2749  +
    /// <p>Contains server-side performance information for the command.</p>
        2750  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        2751  +
        &self.timing_information
        2752  +
    }
        2753  +
    /// Consumes the builder and constructs a [`StartSessionResult`](crate::types::StartSessionResult).
        2754  +
    pub fn build(self) -> crate::types::StartSessionResult {
        2755  +
        crate::types::StartSessionResult {
        2756  +
            session_token: self.session_token,
        2757  +
            timing_information: self.timing_information,
        2758  +
        }
        2759  +
    }
        2760  +
}
  225   2761   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_transaction_request.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_transaction_request.rs
  226   2762   
new file mode 100644
  227   2763   
index 0000000..1e1e9fc
  228         -
-- /dev/null
        2764  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_transaction_request.rs
  229   2765   
@@ -0,0 +1,23 @@
        2766  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2767  +
        2768  +
/// <p>Specifies a request to start a transaction.</p>
        2769  +
#[non_exhaustive]
        2770  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2771  +
pub struct StartTransactionRequest {}
        2772  +
impl StartTransactionRequest {
        2773  +
    /// Creates a new builder-style object to manufacture [`StartTransactionRequest`](crate::types::StartTransactionRequest).
        2774  +
    pub fn builder() -> crate::types::builders::StartTransactionRequestBuilder {
        2775  +
        crate::types::builders::StartTransactionRequestBuilder::default()
        2776  +
    }
        2777  +
}
        2778  +
        2779  +
/// A builder for [`StartTransactionRequest`](crate::types::StartTransactionRequest).
        2780  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2781  +
#[non_exhaustive]
        2782  +
pub struct StartTransactionRequestBuilder {}
        2783  +
impl StartTransactionRequestBuilder {
        2784  +
    /// Consumes the builder and constructs a [`StartTransactionRequest`](crate::types::StartTransactionRequest).
        2785  +
    pub fn build(self) -> crate::types::StartTransactionRequest {
        2786  +
        crate::types::StartTransactionRequest {}
        2787  +
    }
        2788  +
}
  230   2789   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_transaction_result.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_transaction_result.rs
  231   2790   
new file mode 100644
  232   2791   
index 0000000..9f19d73
  233         -
-- /dev/null
        2792  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_start_transaction_result.rs
  234   2793   
@@ -0,0 +1,72 @@
        2794  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2795  +
        2796  +
/// <p>Contains the details of the started transaction.</p>
        2797  +
#[non_exhaustive]
        2798  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2799  +
pub struct StartTransactionResult {
        2800  +
    /// <p>The transaction ID of the started transaction.</p>
        2801  +
    pub transaction_id: ::std::option::Option<::std::string::String>,
        2802  +
    /// <p>Contains server-side performance information for the command.</p>
        2803  +
    pub timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2804  +
}
        2805  +
impl StartTransactionResult {
        2806  +
    /// <p>The transaction ID of the started transaction.</p>
        2807  +
    pub fn transaction_id(&self) -> ::std::option::Option<&str> {
        2808  +
        self.transaction_id.as_deref()
        2809  +
    }
        2810  +
    /// <p>Contains server-side performance information for the command.</p>
        2811  +
    pub fn timing_information(&self) -> ::std::option::Option<&crate::types::TimingInformation> {
        2812  +
        self.timing_information.as_ref()
        2813  +
    }
        2814  +
}
        2815  +
impl StartTransactionResult {
        2816  +
    /// Creates a new builder-style object to manufacture [`StartTransactionResult`](crate::types::StartTransactionResult).
        2817  +
    pub fn builder() -> crate::types::builders::StartTransactionResultBuilder {
        2818  +
        crate::types::builders::StartTransactionResultBuilder::default()
        2819  +
    }
        2820  +
}
        2821  +
        2822  +
/// A builder for [`StartTransactionResult`](crate::types::StartTransactionResult).
        2823  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2824  +
#[non_exhaustive]
        2825  +
pub struct StartTransactionResultBuilder {
        2826  +
    pub(crate) transaction_id: ::std::option::Option<::std::string::String>,
        2827  +
    pub(crate) timing_information: ::std::option::Option<crate::types::TimingInformation>,
        2828  +
}
        2829  +
impl StartTransactionResultBuilder {
        2830  +
    /// <p>The transaction ID of the started transaction.</p>
        2831  +
    pub fn transaction_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2832  +
        self.transaction_id = ::std::option::Option::Some(input.into());
        2833  +
        self
        2834  +
    }
        2835  +
    /// <p>The transaction ID of the started transaction.</p>
        2836  +
    pub fn set_transaction_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2837  +
        self.transaction_id = input;
        2838  +
        self
        2839  +
    }
        2840  +
    /// <p>The transaction ID of the started transaction.</p>
        2841  +
    pub fn get_transaction_id(&self) -> &::std::option::Option<::std::string::String> {
        2842  +
        &self.transaction_id
        2843  +
    }
        2844  +
    /// <p>Contains server-side performance information for the command.</p>
        2845  +
    pub fn timing_information(mut self, input: crate::types::TimingInformation) -> Self {
        2846  +
        self.timing_information = ::std::option::Option::Some(input);
        2847  +
        self
        2848  +
    }
        2849  +
    /// <p>Contains server-side performance information for the command.</p>
        2850  +
    pub fn set_timing_information(mut self, input: ::std::option::Option<crate::types::TimingInformation>) -> Self {
        2851  +
        self.timing_information = input;
        2852  +
        self
        2853  +
    }
        2854  +
    /// <p>Contains server-side performance information for the command.</p>
        2855  +
    pub fn get_timing_information(&self) -> &::std::option::Option<crate::types::TimingInformation> {
        2856  +
        &self.timing_information
        2857  +
    }
        2858  +
    /// Consumes the builder and constructs a [`StartTransactionResult`](crate::types::StartTransactionResult).
        2859  +
    pub fn build(self) -> crate::types::StartTransactionResult {
        2860  +
        crate::types::StartTransactionResult {
        2861  +
            transaction_id: self.transaction_id,
        2862  +
            timing_information: self.timing_information,
        2863  +
        }
        2864  +
    }
        2865  +
}
  235   2866   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_timing_information.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_timing_information.rs
  236   2867   
new file mode 100644
  237   2868   
index 0000000..1f2681b
  238         -
-- /dev/null
        2869  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_timing_information.rs
  239   2870   
@@ -0,0 +1,50 @@
        2871  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2872  +
        2873  +
/// <p>Contains server-side performance information for a command. Amazon QLDB captures timing information between the times when it receives the request and when it sends the corresponding response.</p>
        2874  +
#[non_exhaustive]
        2875  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2876  +
pub struct TimingInformation {
        2877  +
    /// <p>The amount of time that QLDB spent on processing the command, measured in milliseconds.</p>
        2878  +
    pub processing_time_milliseconds: i64,
        2879  +
}
        2880  +
impl TimingInformation {
        2881  +
    /// <p>The amount of time that QLDB spent on processing the command, measured in milliseconds.</p>
        2882  +
    pub fn processing_time_milliseconds(&self) -> i64 {
        2883  +
        self.processing_time_milliseconds
        2884  +
    }
        2885  +
}
        2886  +
impl TimingInformation {
        2887  +
    /// Creates a new builder-style object to manufacture [`TimingInformation`](crate::types::TimingInformation).
        2888  +
    pub fn builder() -> crate::types::builders::TimingInformationBuilder {
        2889  +
        crate::types::builders::TimingInformationBuilder::default()
        2890  +
    }
        2891  +
}
        2892  +
        2893  +
/// A builder for [`TimingInformation`](crate::types::TimingInformation).
        2894  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2895  +
#[non_exhaustive]
        2896  +
pub struct TimingInformationBuilder {
        2897  +
    pub(crate) processing_time_milliseconds: ::std::option::Option<i64>,
        2898  +
}
        2899  +
impl TimingInformationBuilder {
        2900  +
    /// <p>The amount of time that QLDB spent on processing the command, measured in milliseconds.</p>
        2901  +
    pub fn processing_time_milliseconds(mut self, input: i64) -> Self {
        2902  +
        self.processing_time_milliseconds = ::std::option::Option::Some(input);
        2903  +
        self
        2904  +
    }
        2905  +
    /// <p>The amount of time that QLDB spent on processing the command, measured in milliseconds.</p>
        2906  +
    pub fn set_processing_time_milliseconds(mut self, input: ::std::option::Option<i64>) -> Self {
        2907  +
        self.processing_time_milliseconds = input;
        2908  +
        self
        2909  +
    }
        2910  +
    /// <p>The amount of time that QLDB spent on processing the command, measured in milliseconds.</p>
        2911  +
    pub fn get_processing_time_milliseconds(&self) -> &::std::option::Option<i64> {
        2912  +
        &self.processing_time_milliseconds
        2913  +
    }
        2914  +
    /// Consumes the builder and constructs a [`TimingInformation`](crate::types::TimingInformation).
        2915  +
    pub fn build(self) -> crate::types::TimingInformation {
        2916  +
        crate::types::TimingInformation {
        2917  +
            processing_time_milliseconds: self.processing_time_milliseconds.unwrap_or_default(),
        2918  +
        }
        2919  +
    }
        2920  +
}
  240   2921   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_value_holder.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_value_holder.rs
  241   2922   
new file mode 100644
  242   2923   
index 0000000..a648835
  243         -
-- /dev/null
        2924  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/_value_holder.rs
  244   2925   
@@ -0,0 +1,72 @@
        2926  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        2927  +
        2928  +
/// <p>A structure that can contain a value in multiple encoding formats.</p>
        2929  +
#[non_exhaustive]
        2930  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        2931  +
pub struct ValueHolder {
        2932  +
    /// <p>An Amazon Ion binary value contained in a <code>ValueHolder</code> structure.</p>
        2933  +
    pub ion_binary: ::std::option::Option<::aws_smithy_types::Blob>,
        2934  +
    /// <p>An Amazon Ion plaintext value contained in a <code>ValueHolder</code> structure.</p>
        2935  +
    pub ion_text: ::std::option::Option<::std::string::String>,
        2936  +
}
        2937  +
impl ValueHolder {
        2938  +
    /// <p>An Amazon Ion binary value contained in a <code>ValueHolder</code> structure.</p>
        2939  +
    pub fn ion_binary(&self) -> ::std::option::Option<&::aws_smithy_types::Blob> {
        2940  +
        self.ion_binary.as_ref()
        2941  +
    }
        2942  +
    /// <p>An Amazon Ion plaintext value contained in a <code>ValueHolder</code> structure.</p>
        2943  +
    pub fn ion_text(&self) -> ::std::option::Option<&str> {
        2944  +
        self.ion_text.as_deref()
        2945  +
    }
        2946  +
}
        2947  +
impl ValueHolder {
        2948  +
    /// Creates a new builder-style object to manufacture [`ValueHolder`](crate::types::ValueHolder).
        2949  +
    pub fn builder() -> crate::types::builders::ValueHolderBuilder {
        2950  +
        crate::types::builders::ValueHolderBuilder::default()
        2951  +
    }
        2952  +
}
        2953  +
        2954  +
/// A builder for [`ValueHolder`](crate::types::ValueHolder).
        2955  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        2956  +
#[non_exhaustive]
        2957  +
pub struct ValueHolderBuilder {
        2958  +
    pub(crate) ion_binary: ::std::option::Option<::aws_smithy_types::Blob>,
        2959  +
    pub(crate) ion_text: ::std::option::Option<::std::string::String>,
        2960  +
}
        2961  +
impl ValueHolderBuilder {
        2962  +
    /// <p>An Amazon Ion binary value contained in a <code>ValueHolder</code> structure.</p>
        2963  +
    pub fn ion_binary(mut self, input: ::aws_smithy_types::Blob) -> Self {
        2964  +
        self.ion_binary = ::std::option::Option::Some(input);
        2965  +
        self
        2966  +
    }
        2967  +
    /// <p>An Amazon Ion binary value contained in a <code>ValueHolder</code> structure.</p>
        2968  +
    pub fn set_ion_binary(mut self, input: ::std::option::Option<::aws_smithy_types::Blob>) -> Self {
        2969  +
        self.ion_binary = input;
        2970  +
        self
        2971  +
    }
        2972  +
    /// <p>An Amazon Ion binary value contained in a <code>ValueHolder</code> structure.</p>
        2973  +
    pub fn get_ion_binary(&self) -> &::std::option::Option<::aws_smithy_types::Blob> {
        2974  +
        &self.ion_binary
        2975  +
    }
        2976  +
    /// <p>An Amazon Ion plaintext value contained in a <code>ValueHolder</code> structure.</p>
        2977  +
    pub fn ion_text(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        2978  +
        self.ion_text = ::std::option::Option::Some(input.into());
        2979  +
        self
        2980  +
    }
        2981  +
    /// <p>An Amazon Ion plaintext value contained in a <code>ValueHolder</code> structure.</p>
        2982  +
    pub fn set_ion_text(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        2983  +
        self.ion_text = input;
        2984  +
        self
        2985  +
    }
        2986  +
    /// <p>An Amazon Ion plaintext value contained in a <code>ValueHolder</code> structure.</p>
        2987  +
    pub fn get_ion_text(&self) -> &::std::option::Option<::std::string::String> {
        2988  +
        &self.ion_text
        2989  +
    }
        2990  +
    /// Consumes the builder and constructs a [`ValueHolder`](crate::types::ValueHolder).
        2991  +
    pub fn build(self) -> crate::types::ValueHolder {
        2992  +
        crate::types::ValueHolder {
        2993  +
            ion_binary: self.ion_binary,
        2994  +
            ion_text: self.ion_text,
        2995  +
        }
        2996  +
    }
        2997  +
}
  245   2998   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/builders.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/builders.rs
  246   2999   
new file mode 100644
  247   3000   
index 0000000..7edfb35
  248         -
-- /dev/null
        3001  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/builders.rs
  249   3002   
@@ -0,0 +1,36 @@
        3003  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3004  +
pub use crate::types::_fetch_page_result::FetchPageResultBuilder;
        3005  +
        3006  +
pub use crate::types::_io_usage::IoUsageBuilder;
        3007  +
        3008  +
pub use crate::types::_timing_information::TimingInformationBuilder;
        3009  +
        3010  +
pub use crate::types::_page::PageBuilder;
        3011  +
        3012  +
pub use crate::types::_value_holder::ValueHolderBuilder;
        3013  +
        3014  +
pub use crate::types::_execute_statement_result::ExecuteStatementResultBuilder;
        3015  +
        3016  +
pub use crate::types::_abort_transaction_result::AbortTransactionResultBuilder;
        3017  +
        3018  +
pub use crate::types::_commit_transaction_result::CommitTransactionResultBuilder;
        3019  +
        3020  +
pub use crate::types::_end_session_result::EndSessionResultBuilder;
        3021  +
        3022  +
pub use crate::types::_start_transaction_result::StartTransactionResultBuilder;
        3023  +
        3024  +
pub use crate::types::_start_session_result::StartSessionResultBuilder;
        3025  +
        3026  +
pub use crate::types::_fetch_page_request::FetchPageRequestBuilder;
        3027  +
        3028  +
pub use crate::types::_execute_statement_request::ExecuteStatementRequestBuilder;
        3029  +
        3030  +
pub use crate::types::_abort_transaction_request::AbortTransactionRequestBuilder;
        3031  +
        3032  +
pub use crate::types::_commit_transaction_request::CommitTransactionRequestBuilder;
        3033  +
        3034  +
pub use crate::types::_end_session_request::EndSessionRequestBuilder;
        3035  +
        3036  +
pub use crate::types::_start_transaction_request::StartTransactionRequestBuilder;
        3037  +
        3038  +
pub use crate::types::_start_session_request::StartSessionRequestBuilder;
  250   3039   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error.rs
  251   3040   
new file mode 100644
  252   3041   
index 0000000..6792943
  253         -
-- /dev/null
        3042  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error.rs
  254   3043   
@@ -0,0 +1,27 @@
        3044  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3045  +
pub use crate::types::error::_rate_exceeded_exception::RateExceededException;
        3046  +
        3047  +
pub use crate::types::error::_occ_conflict_exception::OccConflictException;
        3048  +
        3049  +
pub use crate::types::error::_limit_exceeded_exception::LimitExceededException;
        3050  +
        3051  +
pub use crate::types::error::_invalid_session_exception::InvalidSessionException;
        3052  +
        3053  +
pub use crate::types::error::_capacity_exceeded_exception::CapacityExceededException;
        3054  +
        3055  +
pub use crate::types::error::_bad_request_exception::BadRequestException;
        3056  +
        3057  +
mod _bad_request_exception;
        3058  +
        3059  +
mod _capacity_exceeded_exception;
        3060  +
        3061  +
mod _invalid_session_exception;
        3062  +
        3063  +
mod _limit_exceeded_exception;
        3064  +
        3065  +
mod _occ_conflict_exception;
        3066  +
        3067  +
mod _rate_exceeded_exception;
        3068  +
        3069  +
/// Builders
        3070  +
pub mod builders;
  255   3071   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_bad_request_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_bad_request_exception.rs
  256   3072   
new file mode 100644
  257   3073   
index 0000000..cf48075
  258         -
-- /dev/null
        3074  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_bad_request_exception.rs
  259   3075   
@@ -0,0 +1,111 @@
        3076  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3077  +
        3078  +
/// <p>Returned if the request is malformed or contains an error such as an invalid parameter value or a missing required parameter.</p>
        3079  +
#[non_exhaustive]
        3080  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        3081  +
pub struct BadRequestException {
        3082  +
    #[allow(missing_docs)] // documentation missing in model
        3083  +
    pub message: ::std::option::Option<::std::string::String>,
        3084  +
    #[allow(missing_docs)] // documentation missing in model
        3085  +
    pub code: ::std::option::Option<::std::string::String>,
        3086  +
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
        3087  +
}
        3088  +
impl BadRequestException {
        3089  +
    #[allow(missing_docs)] // documentation missing in model
        3090  +
    pub fn code(&self) -> ::std::option::Option<&str> {
        3091  +
        self.code.as_deref()
        3092  +
    }
        3093  +
}
        3094  +
impl BadRequestException {
        3095  +
    /// Returns the error message.
        3096  +
    pub fn message(&self) -> ::std::option::Option<&str> {
        3097  +
        self.message.as_deref()
        3098  +
    }
        3099  +
}
        3100  +
impl ::std::fmt::Display for BadRequestException {
        3101  +
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        3102  +
        ::std::write!(f, "BadRequestException")?;
        3103  +
        if let ::std::option::Option::Some(inner_1) = &self.message {
        3104  +
            {
        3105  +
                ::std::write!(f, ": {inner_1}")?;
        3106  +
            }
        3107  +
        }
        3108  +
        Ok(())
        3109  +
    }
        3110  +
}
        3111  +
impl ::std::error::Error for BadRequestException {}
        3112  +
impl ::aws_types::request_id::RequestId for crate::types::error::BadRequestException {
        3113  +
    fn request_id(&self) -> Option<&str> {
        3114  +
        use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
        3115  +
        self.meta().request_id()
        3116  +
    }
        3117  +
}
        3118  +
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for BadRequestException {
        3119  +
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
        3120  +
        &self.meta
        3121  +
    }
        3122  +
}
        3123  +
impl BadRequestException {
        3124  +
    /// Creates a new builder-style object to manufacture [`BadRequestException`](crate::types::error::BadRequestException).
        3125  +
    pub fn builder() -> crate::types::error::builders::BadRequestExceptionBuilder {
        3126  +
        crate::types::error::builders::BadRequestExceptionBuilder::default()
        3127  +
    }
        3128  +
}
        3129  +
        3130  +
/// A builder for [`BadRequestException`](crate::types::error::BadRequestException).
        3131  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        3132  +
#[non_exhaustive]
        3133  +
pub struct BadRequestExceptionBuilder {
        3134  +
    pub(crate) message: ::std::option::Option<::std::string::String>,
        3135  +
    pub(crate) code: ::std::option::Option<::std::string::String>,
        3136  +
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
        3137  +
}
        3138  +
impl BadRequestExceptionBuilder {
        3139  +
    #[allow(missing_docs)] // documentation missing in model
        3140  +
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3141  +
        self.message = ::std::option::Option::Some(input.into());
        3142  +
        self
        3143  +
    }
        3144  +
    #[allow(missing_docs)] // documentation missing in model
        3145  +
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3146  +
        self.message = input;
        3147  +
        self
        3148  +
    }
        3149  +
    #[allow(missing_docs)] // documentation missing in model
        3150  +
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
        3151  +
        &self.message
        3152  +
    }
        3153  +
    #[allow(missing_docs)] // documentation missing in model
        3154  +
    pub fn code(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3155  +
        self.code = ::std::option::Option::Some(input.into());
        3156  +
        self
        3157  +
    }
        3158  +
    #[allow(missing_docs)] // documentation missing in model
        3159  +
    pub fn set_code(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3160  +
        self.code = input;
        3161  +
        self
        3162  +
    }
        3163  +
    #[allow(missing_docs)] // documentation missing in model
        3164  +
    pub fn get_code(&self) -> &::std::option::Option<::std::string::String> {
        3165  +
        &self.code
        3166  +
    }
        3167  +
    /// Sets error metadata
        3168  +
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
        3169  +
        self.meta = Some(meta);
        3170  +
        self
        3171  +
    }
        3172  +
        3173  +
    /// Sets error metadata
        3174  +
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
        3175  +
        self.meta = meta;
        3176  +
        self
        3177  +
    }
        3178  +
    /// Consumes the builder and constructs a [`BadRequestException`](crate::types::error::BadRequestException).
        3179  +
    pub fn build(self) -> crate::types::error::BadRequestException {
        3180  +
        crate::types::error::BadRequestException {
        3181  +
            message: self.message,
        3182  +
            code: self.code,
        3183  +
            meta: self.meta.unwrap_or_default(),
        3184  +
        }
        3185  +
    }
        3186  +
}
  260   3187   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_capacity_exceeded_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_capacity_exceeded_exception.rs
  261   3188   
new file mode 100644
  262   3189   
index 0000000..610cec0
  263         -
-- /dev/null
        3190  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_capacity_exceeded_exception.rs
  264   3191   
@@ -0,0 +1,87 @@
        3192  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3193  +
        3194  +
/// <p>Returned when the request exceeds the processing capacity of the ledger.</p>
        3195  +
#[non_exhaustive]
        3196  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        3197  +
pub struct CapacityExceededException {
        3198  +
    #[allow(missing_docs)] // documentation missing in model
        3199  +
    pub message: ::std::option::Option<::std::string::String>,
        3200  +
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
        3201  +
}
        3202  +
impl CapacityExceededException {
        3203  +
    /// Returns the error message.
        3204  +
    pub fn message(&self) -> ::std::option::Option<&str> {
        3205  +
        self.message.as_deref()
        3206  +
    }
        3207  +
}
        3208  +
impl ::std::fmt::Display for CapacityExceededException {
        3209  +
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        3210  +
        ::std::write!(f, "CapacityExceededException")?;
        3211  +
        if let ::std::option::Option::Some(inner_1) = &self.message {
        3212  +
            {
        3213  +
                ::std::write!(f, ": {inner_1}")?;
        3214  +
            }
        3215  +
        }
        3216  +
        Ok(())
        3217  +
    }
        3218  +
}
        3219  +
impl ::std::error::Error for CapacityExceededException {}
        3220  +
impl ::aws_types::request_id::RequestId for crate::types::error::CapacityExceededException {
        3221  +
    fn request_id(&self) -> Option<&str> {
        3222  +
        use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
        3223  +
        self.meta().request_id()
        3224  +
    }
        3225  +
}
        3226  +
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CapacityExceededException {
        3227  +
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
        3228  +
        &self.meta
        3229  +
    }
        3230  +
}
        3231  +
impl CapacityExceededException {
        3232  +
    /// Creates a new builder-style object to manufacture [`CapacityExceededException`](crate::types::error::CapacityExceededException).
        3233  +
    pub fn builder() -> crate::types::error::builders::CapacityExceededExceptionBuilder {
        3234  +
        crate::types::error::builders::CapacityExceededExceptionBuilder::default()
        3235  +
    }
        3236  +
}
        3237  +
        3238  +
/// A builder for [`CapacityExceededException`](crate::types::error::CapacityExceededException).
        3239  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        3240  +
#[non_exhaustive]
        3241  +
pub struct CapacityExceededExceptionBuilder {
        3242  +
    pub(crate) message: ::std::option::Option<::std::string::String>,
        3243  +
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
        3244  +
}
        3245  +
impl CapacityExceededExceptionBuilder {
        3246  +
    #[allow(missing_docs)] // documentation missing in model
        3247  +
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3248  +
        self.message = ::std::option::Option::Some(input.into());
        3249  +
        self
        3250  +
    }
        3251  +
    #[allow(missing_docs)] // documentation missing in model
        3252  +
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3253  +
        self.message = input;
        3254  +
        self
        3255  +
    }
        3256  +
    #[allow(missing_docs)] // documentation missing in model
        3257  +
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
        3258  +
        &self.message
        3259  +
    }
        3260  +
    /// Sets error metadata
        3261  +
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
        3262  +
        self.meta = Some(meta);
        3263  +
        self
        3264  +
    }
        3265  +
        3266  +
    /// Sets error metadata
        3267  +
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
        3268  +
        self.meta = meta;
        3269  +
        self
        3270  +
    }
        3271  +
    /// Consumes the builder and constructs a [`CapacityExceededException`](crate::types::error::CapacityExceededException).
        3272  +
    pub fn build(self) -> crate::types::error::CapacityExceededException {
        3273  +
        crate::types::error::CapacityExceededException {
        3274  +
            message: self.message,
        3275  +
            meta: self.meta.unwrap_or_default(),
        3276  +
        }
        3277  +
    }
        3278  +
}
  265   3279   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_invalid_session_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_invalid_session_exception.rs
  266   3280   
new file mode 100644
  267   3281   
index 0000000..dd2647b
  268         -
-- /dev/null
        3282  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_invalid_session_exception.rs
  269   3283   
@@ -0,0 +1,111 @@
        3284  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3285  +
        3286  +
/// <p>Returned if the session doesn't exist anymore because it timed out or expired.</p>
        3287  +
#[non_exhaustive]
        3288  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        3289  +
pub struct InvalidSessionException {
        3290  +
    #[allow(missing_docs)] // documentation missing in model
        3291  +
    pub message: ::std::option::Option<::std::string::String>,
        3292  +
    #[allow(missing_docs)] // documentation missing in model
        3293  +
    pub code: ::std::option::Option<::std::string::String>,
        3294  +
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
        3295  +
}
        3296  +
impl InvalidSessionException {
        3297  +
    #[allow(missing_docs)] // documentation missing in model
        3298  +
    pub fn code(&self) -> ::std::option::Option<&str> {
        3299  +
        self.code.as_deref()
        3300  +
    }
        3301  +
}
        3302  +
impl InvalidSessionException {
        3303  +
    /// Returns the error message.
        3304  +
    pub fn message(&self) -> ::std::option::Option<&str> {
        3305  +
        self.message.as_deref()
        3306  +
    }
        3307  +
}
        3308  +
impl ::std::fmt::Display for InvalidSessionException {
        3309  +
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        3310  +
        ::std::write!(f, "InvalidSessionException")?;
        3311  +
        if let ::std::option::Option::Some(inner_1) = &self.message {
        3312  +
            {
        3313  +
                ::std::write!(f, ": {inner_1}")?;
        3314  +
            }
        3315  +
        }
        3316  +
        Ok(())
        3317  +
    }
        3318  +
}
        3319  +
impl ::std::error::Error for InvalidSessionException {}
        3320  +
impl ::aws_types::request_id::RequestId for crate::types::error::InvalidSessionException {
        3321  +
    fn request_id(&self) -> Option<&str> {
        3322  +
        use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
        3323  +
        self.meta().request_id()
        3324  +
    }
        3325  +
}
        3326  +
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for InvalidSessionException {
        3327  +
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
        3328  +
        &self.meta
        3329  +
    }
        3330  +
}
        3331  +
impl InvalidSessionException {
        3332  +
    /// Creates a new builder-style object to manufacture [`InvalidSessionException`](crate::types::error::InvalidSessionException).
        3333  +
    pub fn builder() -> crate::types::error::builders::InvalidSessionExceptionBuilder {
        3334  +
        crate::types::error::builders::InvalidSessionExceptionBuilder::default()
        3335  +
    }
        3336  +
}
        3337  +
        3338  +
/// A builder for [`InvalidSessionException`](crate::types::error::InvalidSessionException).
        3339  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        3340  +
#[non_exhaustive]
        3341  +
pub struct InvalidSessionExceptionBuilder {
        3342  +
    pub(crate) message: ::std::option::Option<::std::string::String>,
        3343  +
    pub(crate) code: ::std::option::Option<::std::string::String>,
        3344  +
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
        3345  +
}
        3346  +
impl InvalidSessionExceptionBuilder {
        3347  +
    #[allow(missing_docs)] // documentation missing in model
        3348  +
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3349  +
        self.message = ::std::option::Option::Some(input.into());
        3350  +
        self
        3351  +
    }
        3352  +
    #[allow(missing_docs)] // documentation missing in model
        3353  +
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3354  +
        self.message = input;
        3355  +
        self
        3356  +
    }
        3357  +
    #[allow(missing_docs)] // documentation missing in model
        3358  +
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
        3359  +
        &self.message
        3360  +
    }
        3361  +
    #[allow(missing_docs)] // documentation missing in model
        3362  +
    pub fn code(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3363  +
        self.code = ::std::option::Option::Some(input.into());
        3364  +
        self
        3365  +
    }
        3366  +
    #[allow(missing_docs)] // documentation missing in model
        3367  +
    pub fn set_code(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3368  +
        self.code = input;
        3369  +
        self
        3370  +
    }
        3371  +
    #[allow(missing_docs)] // documentation missing in model
        3372  +
    pub fn get_code(&self) -> &::std::option::Option<::std::string::String> {
        3373  +
        &self.code
        3374  +
    }
        3375  +
    /// Sets error metadata
        3376  +
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
        3377  +
        self.meta = Some(meta);
        3378  +
        self
        3379  +
    }
        3380  +
        3381  +
    /// Sets error metadata
        3382  +
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
        3383  +
        self.meta = meta;
        3384  +
        self
        3385  +
    }
        3386  +
    /// Consumes the builder and constructs a [`InvalidSessionException`](crate::types::error::InvalidSessionException).
        3387  +
    pub fn build(self) -> crate::types::error::InvalidSessionException {
        3388  +
        crate::types::error::InvalidSessionException {
        3389  +
            message: self.message,
        3390  +
            code: self.code,
        3391  +
            meta: self.meta.unwrap_or_default(),
        3392  +
        }
        3393  +
    }
        3394  +
}
  270   3395   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_limit_exceeded_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_limit_exceeded_exception.rs
  271   3396   
new file mode 100644
  272   3397   
index 0000000..56bb255
  273         -
-- /dev/null
        3398  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_limit_exceeded_exception.rs
  274   3399   
@@ -0,0 +1,87 @@
        3400  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3401  +
        3402  +
/// <p>Returned if a resource limit such as number of active sessions is exceeded.</p>
        3403  +
#[non_exhaustive]
        3404  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        3405  +
pub struct LimitExceededException {
        3406  +
    #[allow(missing_docs)] // documentation missing in model
        3407  +
    pub message: ::std::option::Option<::std::string::String>,
        3408  +
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
        3409  +
}
        3410  +
impl LimitExceededException {
        3411  +
    /// Returns the error message.
        3412  +
    pub fn message(&self) -> ::std::option::Option<&str> {
        3413  +
        self.message.as_deref()
        3414  +
    }
        3415  +
}
        3416  +
impl ::std::fmt::Display for LimitExceededException {
        3417  +
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        3418  +
        ::std::write!(f, "LimitExceededException")?;
        3419  +
        if let ::std::option::Option::Some(inner_1) = &self.message {
        3420  +
            {
        3421  +
                ::std::write!(f, ": {inner_1}")?;
        3422  +
            }
        3423  +
        }
        3424  +
        Ok(())
        3425  +
    }
        3426  +
}
        3427  +
impl ::std::error::Error for LimitExceededException {}
        3428  +
impl ::aws_types::request_id::RequestId for crate::types::error::LimitExceededException {
        3429  +
    fn request_id(&self) -> Option<&str> {
        3430  +
        use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
        3431  +
        self.meta().request_id()
        3432  +
    }
        3433  +
}
        3434  +
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for LimitExceededException {
        3435  +
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
        3436  +
        &self.meta
        3437  +
    }
        3438  +
}
        3439  +
impl LimitExceededException {
        3440  +
    /// Creates a new builder-style object to manufacture [`LimitExceededException`](crate::types::error::LimitExceededException).
        3441  +
    pub fn builder() -> crate::types::error::builders::LimitExceededExceptionBuilder {
        3442  +
        crate::types::error::builders::LimitExceededExceptionBuilder::default()
        3443  +
    }
        3444  +
}
        3445  +
        3446  +
/// A builder for [`LimitExceededException`](crate::types::error::LimitExceededException).
        3447  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        3448  +
#[non_exhaustive]
        3449  +
pub struct LimitExceededExceptionBuilder {
        3450  +
    pub(crate) message: ::std::option::Option<::std::string::String>,
        3451  +
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
        3452  +
}
        3453  +
impl LimitExceededExceptionBuilder {
        3454  +
    #[allow(missing_docs)] // documentation missing in model
        3455  +
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3456  +
        self.message = ::std::option::Option::Some(input.into());
        3457  +
        self
        3458  +
    }
        3459  +
    #[allow(missing_docs)] // documentation missing in model
        3460  +
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3461  +
        self.message = input;
        3462  +
        self
        3463  +
    }
        3464  +
    #[allow(missing_docs)] // documentation missing in model
        3465  +
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
        3466  +
        &self.message
        3467  +
    }
        3468  +
    /// Sets error metadata
        3469  +
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
        3470  +
        self.meta = Some(meta);
        3471  +
        self
        3472  +
    }
        3473  +
        3474  +
    /// Sets error metadata
        3475  +
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
        3476  +
        self.meta = meta;
        3477  +
        self
        3478  +
    }
        3479  +
    /// Consumes the builder and constructs a [`LimitExceededException`](crate::types::error::LimitExceededException).
        3480  +
    pub fn build(self) -> crate::types::error::LimitExceededException {
        3481  +
        crate::types::error::LimitExceededException {
        3482  +
            message: self.message,
        3483  +
            meta: self.meta.unwrap_or_default(),
        3484  +
        }
        3485  +
    }
        3486  +
}
  275   3487   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_occ_conflict_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_occ_conflict_exception.rs
  276   3488   
new file mode 100644
  277   3489   
index 0000000..cf5e085
  278         -
-- /dev/null
        3490  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_occ_conflict_exception.rs
  279   3491   
@@ -0,0 +1,87 @@
        3492  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3493  +
        3494  +
/// <p>Returned when a transaction cannot be written to the journal due to a failure in the verification phase of <i>optimistic concurrency control</i> (OCC).</p>
        3495  +
#[non_exhaustive]
        3496  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        3497  +
pub struct OccConflictException {
        3498  +
    #[allow(missing_docs)] // documentation missing in model
        3499  +
    pub message: ::std::option::Option<::std::string::String>,
        3500  +
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
        3501  +
}
        3502  +
impl OccConflictException {
        3503  +
    /// Returns the error message.
        3504  +
    pub fn message(&self) -> ::std::option::Option<&str> {
        3505  +
        self.message.as_deref()
        3506  +
    }
        3507  +
}
        3508  +
impl ::std::fmt::Display for OccConflictException {
        3509  +
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        3510  +
        ::std::write!(f, "OccConflictException")?;
        3511  +
        if let ::std::option::Option::Some(inner_1) = &self.message {
        3512  +
            {
        3513  +
                ::std::write!(f, ": {inner_1}")?;
        3514  +
            }
        3515  +
        }
        3516  +
        Ok(())
        3517  +
    }
        3518  +
}
        3519  +
impl ::std::error::Error for OccConflictException {}
        3520  +
impl ::aws_types::request_id::RequestId for crate::types::error::OccConflictException {
        3521  +
    fn request_id(&self) -> Option<&str> {
        3522  +
        use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
        3523  +
        self.meta().request_id()
        3524  +
    }
        3525  +
}
        3526  +
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for OccConflictException {
        3527  +
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
        3528  +
        &self.meta
        3529  +
    }
        3530  +
}
        3531  +
impl OccConflictException {
        3532  +
    /// Creates a new builder-style object to manufacture [`OccConflictException`](crate::types::error::OccConflictException).
        3533  +
    pub fn builder() -> crate::types::error::builders::OccConflictExceptionBuilder {
        3534  +
        crate::types::error::builders::OccConflictExceptionBuilder::default()
        3535  +
    }
        3536  +
}
        3537  +
        3538  +
/// A builder for [`OccConflictException`](crate::types::error::OccConflictException).
        3539  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        3540  +
#[non_exhaustive]
        3541  +
pub struct OccConflictExceptionBuilder {
        3542  +
    pub(crate) message: ::std::option::Option<::std::string::String>,
        3543  +
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
        3544  +
}
        3545  +
impl OccConflictExceptionBuilder {
        3546  +
    #[allow(missing_docs)] // documentation missing in model
        3547  +
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3548  +
        self.message = ::std::option::Option::Some(input.into());
        3549  +
        self
        3550  +
    }
        3551  +
    #[allow(missing_docs)] // documentation missing in model
        3552  +
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3553  +
        self.message = input;
        3554  +
        self
        3555  +
    }
        3556  +
    #[allow(missing_docs)] // documentation missing in model
        3557  +
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
        3558  +
        &self.message
        3559  +
    }
        3560  +
    /// Sets error metadata
        3561  +
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
        3562  +
        self.meta = Some(meta);
        3563  +
        self
        3564  +
    }
        3565  +
        3566  +
    /// Sets error metadata
        3567  +
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
        3568  +
        self.meta = meta;
        3569  +
        self
        3570  +
    }
        3571  +
    /// Consumes the builder and constructs a [`OccConflictException`](crate::types::error::OccConflictException).
        3572  +
    pub fn build(self) -> crate::types::error::OccConflictException {
        3573  +
        crate::types::error::OccConflictException {
        3574  +
            message: self.message,
        3575  +
            meta: self.meta.unwrap_or_default(),
        3576  +
        }
        3577  +
    }
        3578  +
}
  280   3579   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_rate_exceeded_exception.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_rate_exceeded_exception.rs
  281   3580   
new file mode 100644
  282   3581   
index 0000000..3b5d2d7
  283         -
-- /dev/null
        3582  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/_rate_exceeded_exception.rs
  284   3583   
@@ -0,0 +1,87 @@
        3584  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3585  +
        3586  +
/// <p>Returned when the rate of requests exceeds the allowed throughput.</p>
        3587  +
#[non_exhaustive]
        3588  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
        3589  +
pub struct RateExceededException {
        3590  +
    #[allow(missing_docs)] // documentation missing in model
        3591  +
    pub message: ::std::option::Option<::std::string::String>,
        3592  +
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
        3593  +
}
        3594  +
impl RateExceededException {
        3595  +
    /// Returns the error message.
        3596  +
    pub fn message(&self) -> ::std::option::Option<&str> {
        3597  +
        self.message.as_deref()
        3598  +
    }
        3599  +
}
        3600  +
impl ::std::fmt::Display for RateExceededException {
        3601  +
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        3602  +
        ::std::write!(f, "RateExceededException")?;
        3603  +
        if let ::std::option::Option::Some(inner_1) = &self.message {
        3604  +
            {
        3605  +
                ::std::write!(f, ": {inner_1}")?;
        3606  +
            }
        3607  +
        }
        3608  +
        Ok(())
        3609  +
    }
        3610  +
}
        3611  +
impl ::std::error::Error for RateExceededException {}
        3612  +
impl ::aws_types::request_id::RequestId for crate::types::error::RateExceededException {
        3613  +
    fn request_id(&self) -> Option<&str> {
        3614  +
        use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
        3615  +
        self.meta().request_id()
        3616  +
    }
        3617  +
}
        3618  +
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for RateExceededException {
        3619  +
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
        3620  +
        &self.meta
        3621  +
    }
        3622  +
}
        3623  +
impl RateExceededException {
        3624  +
    /// Creates a new builder-style object to manufacture [`RateExceededException`](crate::types::error::RateExceededException).
        3625  +
    pub fn builder() -> crate::types::error::builders::RateExceededExceptionBuilder {
        3626  +
        crate::types::error::builders::RateExceededExceptionBuilder::default()
        3627  +
    }
        3628  +
}
        3629  +
        3630  +
/// A builder for [`RateExceededException`](crate::types::error::RateExceededException).
        3631  +
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
        3632  +
#[non_exhaustive]
        3633  +
pub struct RateExceededExceptionBuilder {
        3634  +
    pub(crate) message: ::std::option::Option<::std::string::String>,
        3635  +
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
        3636  +
}
        3637  +
impl RateExceededExceptionBuilder {
        3638  +
    #[allow(missing_docs)] // documentation missing in model
        3639  +
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        3640  +
        self.message = ::std::option::Option::Some(input.into());
        3641  +
        self
        3642  +
    }
        3643  +
    #[allow(missing_docs)] // documentation missing in model
        3644  +
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        3645  +
        self.message = input;
        3646  +
        self
        3647  +
    }
        3648  +
    #[allow(missing_docs)] // documentation missing in model
        3649  +
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
        3650  +
        &self.message
        3651  +
    }
        3652  +
    /// Sets error metadata
        3653  +
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
        3654  +
        self.meta = Some(meta);
        3655  +
        self
        3656  +
    }
        3657  +
        3658  +
    /// Sets error metadata
        3659  +
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
        3660  +
        self.meta = meta;
        3661  +
        self
        3662  +
    }
        3663  +
    /// Consumes the builder and constructs a [`RateExceededException`](crate::types::error::RateExceededException).
        3664  +
    pub fn build(self) -> crate::types::error::RateExceededException {
        3665  +
        crate::types::error::RateExceededException {
        3666  +
            message: self.message,
        3667  +
            meta: self.meta.unwrap_or_default(),
        3668  +
        }
        3669  +
    }
        3670  +
}
  285   3671   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/builders.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/builders.rs
  286   3672   
new file mode 100644
  287   3673   
index 0000000..83f7712
  288         -
-- /dev/null
        3674  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/src/types/error/builders.rs
  289   3675   
@@ -0,0 +1,12 @@
        3676  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3677  +
pub use crate::types::error::_rate_exceeded_exception::RateExceededExceptionBuilder;
        3678  +
        3679  +
pub use crate::types::error::_occ_conflict_exception::OccConflictExceptionBuilder;
        3680  +
        3681  +
pub use crate::types::error::_limit_exceeded_exception::LimitExceededExceptionBuilder;
        3682  +
        3683  +
pub use crate::types::error::_invalid_session_exception::InvalidSessionExceptionBuilder;
        3684  +
        3685  +
pub use crate::types::error::_capacity_exceeded_exception::CapacityExceededExceptionBuilder;
        3686  +
        3687  +
pub use crate::types::error::_bad_request_exception::BadRequestExceptionBuilder;
  290   3688   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/tests/endpoint_tests.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/tests/endpoint_tests.rs
  291   3689   
new file mode 100644
  292   3690   
index 0000000..e0cddc8
  293         -
-- /dev/null
        3691  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/tests/endpoint_tests.rs
  294   3692   
@@ -0,0 +1,2 @@
        3693  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
        3694  +
#![cfg(feature = "test-util")]
  295   3695   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/tests/integration.rs b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/tests/integration.rs
  296   3696   
new file mode 100644
  297   3697   
index 0000000..1827eb2
  298         -
-- /dev/null
        3698  +
++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/tests/integration.rs
  299   3699   
@@ -0,0 +1,59 @@
        3700  +
/*
        3701  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
        3702  +
 * SPDX-License-Identifier: Apache-2.0
        3703  +
 */
        3704  +
        3705  +
#![cfg(feature = "test-util")]
        3706  +
        3707  +
use aws_sdk_qldbsession::config::{Config, Credentials, Region};
        3708  +
use aws_sdk_qldbsession::types::StartSessionRequest;
        3709  +
use aws_sdk_qldbsession::Client;
        3710  +
use aws_smithy_http_client::test_util::{ReplayEvent, StaticReplayClient};
        3711  +
use aws_smithy_types::body::SdkBody;
        3712  +
use http_1x::Uri;
        3713  +
        3714  +
#[cfg(feature = "test-util")]
        3715  +
#[tokio::test]
        3716  +
async fn signv4_use_correct_service_name() {
        3717  +
    let http_client = StaticReplayClient::new(vec![ReplayEvent::new(
        3718  +
        http_1x::Request::builder()
        3719  +
            .header("content-type", "application/x-amz-json-1.0")
        3720  +
            .header("x-amz-target", "QLDBSession.SendCommand")
        3721  +
            .header("content-length", "49")
        3722  +
            .header("authorization", "AWS4-HMAC-SHA256 Credential=ANOTREAL/20090213/us-east-1/qldb/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date;x-amz-target;x-amz-user-agent, Signature=9a07c60550504d015fb9a2b0f1b175a4d906651f9dd4ee44bebb32a802d03815")
        3723  +
            // qldbsession uses the signing name 'qldb' in signature _________________________^^^^
        3724  +
            .header("x-amz-date", "20090213T233130Z")
        3725  +
            .header("user-agent", "aws-sdk-rust/0.123.test os/windows/XPSP3 lang/rust/1.50.0")
        3726  +
            .uri(Uri::from_static("https://session.qldb.us-east-1.amazonaws.com/"))
        3727  +
            .body(SdkBody::from(r#"{"StartSession":{"LedgerName":"not-real-ledger"}}"#)).unwrap(),
        3728  +
        http_1x::Response::builder()
        3729  +
            .status(http_1x::StatusCode::from_u16(200).unwrap())
        3730  +
            .body(SdkBody::from(r#"{}"#)).unwrap()),
        3731  +
    ]);
        3732  +
    let conf = Config::builder()
        3733  +
        .http_client(http_client.clone())
        3734  +
        .region(Region::new("us-east-1"))
        3735  +
        .credentials_provider(Credentials::for_tests_with_session_token())
        3736  +
        .with_test_defaults()
        3737  +
        .build();
        3738  +
    let client = Client::from_conf(conf);
        3739  +
        3740  +
    let _ = client
        3741  +
        .send_command()
        3742  +
        .start_session(
        3743  +
            StartSessionRequest::builder()
        3744  +
                .ledger_name("not-real-ledger")
        3745  +
                .build()
        3746  +
                .unwrap(),
        3747  +
        )
        3748  +
        .customize()
        3749  +
        .mutate_request(|req| {
        3750  +
            // Remove the invocation ID since the signed request above doesn't have it
        3751  +
            req.headers_mut().remove("amz-sdk-invocation-id");
        3752  +
        })
        3753  +
        .send()
        3754  +
        .await
        3755  +
        .expect("request should succeed");
        3756  +
        3757  +
    http_client.assert_requests_match(&["authorization"]);
        3758  +
}
  300   3759   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml
  301   3760   
index 364122a..00d6c13 100644
  302         -
-- a/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml
        3761  +
++ b/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml
  303   3762   
@@ -1,103 +1,103 @@
  304   3763   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
  305   3764   
[package]
  306   3765   
name = "aws-sdk-route53"
  307   3766   
version = "0.0.0-local"
  308   3767   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
  309   3768   
description = "AWS SDK for Amazon Route 53"
  310   3769   
edition = "2021"
  311   3770   
license = "Apache-2.0"
  312   3771   
repository = "https://github.com/awslabs/aws-sdk-rust"
  313   3772   
rust-version = "1.88.0"
  314   3773   
readme = "README.md"
  315   3774   
[package.metadata.smithy]
  316   3775   
codegen-version = "ci"
  317   3776   
protocol = "aws.protocols#restXml"
  318   3777   
[package.metadata.docs.rs]
  319   3778   
all-features = true
  320   3779   
targets = ["x86_64-unknown-linux-gnu"]
  321   3780   
[dependencies.aws-credential-types]
  322   3781   
path = "../aws-credential-types"
  323         -
version = "1.2.8"
        3782  +
version = "1.2.9"
  324   3783   
  325   3784   
[dependencies.aws-runtime]
  326   3785   
path = "../aws-runtime"
  327   3786   
version = "1.5.13"
  328   3787   
  329   3788   
[dependencies.aws-smithy-async]
  330   3789   
path = "../aws-smithy-async"
  331   3790   
version = "1.2.6"
  332   3791   
  333   3792   
[dependencies.aws-smithy-http]
  334   3793   
path = "../aws-smithy-http"
  335   3794   
version = "0.62.5"
  336   3795   
  337   3796   
[dependencies.aws-smithy-json]
  338   3797   
path = "../aws-smithy-json"
  339   3798   
version = "0.61.7"
  340   3799   
  341   3800   
[dependencies.aws-smithy-runtime]
  342   3801   
path = "../aws-smithy-runtime"
  343   3802   
features = ["client"]
  344   3803   
version = "1.9.4"
  345   3804   
  346   3805   
[dependencies.aws-smithy-runtime-api]
  347   3806   
path = "../aws-smithy-runtime-api"
  348   3807   
features = ["client", "http-02x"]
  349   3808   
version = "1.9.2"
  350   3809   
  351   3810   
[dependencies.aws-smithy-types]
  352   3811   
path = "../aws-smithy-types"
  353   3812   
version = "1.3.4"
  354   3813   
  355   3814   
[dependencies.aws-smithy-xml]
  356   3815   
path = "../aws-smithy-xml"
  357   3816   
version = "0.60.12"
  358   3817   
  359   3818   
[dependencies.aws-types]
  360   3819   
path = "../aws-types"
  361   3820   
version = "1.3.10"
  362   3821   
  363   3822   
[dependencies.fastrand]
  364   3823   
version = "2.0.0"
  365   3824   
  366   3825   
[dependencies.http]
  367   3826   
version = "0.2.9"
  368   3827   
  369   3828   
[dependencies.regex-lite]
  370   3829   
version = "0.1.5"
  371   3830   
  372   3831   
[dependencies.tracing]
  373   3832   
version = "0.1"
  374   3833   
[dev-dependencies.aws-config]
  375   3834   
path = "../aws-config"
  376   3835   
version = "1.8.10"
  377   3836   
  378   3837   
[dev-dependencies.aws-credential-types]
  379   3838   
path = "../aws-credential-types"
  380   3839   
features = ["test-util"]
  381         -
version = "1.2.8"
        3840  +
version = "1.2.9"
  382   3841   
  383   3842   
[dev-dependencies.aws-smithy-http-client]
  384   3843   
path = "../aws-smithy-http-client"
  385   3844   
features = ["test-util"]
  386   3845   
version = "1.1.4"
  387   3846   
  388   3847   
[dev-dependencies.pretty_assertions]
  389   3848   
version = "1.3.0"
  390   3849   
  391   3850   
[dev-dependencies.tokio]
  392   3851   
version = "1.23.1"
  393   3852   
features = ["macros", "test-util", "rt-multi-thread"]
  394   3853   
  395   3854   
[dev-dependencies.tracing-test]
  396   3855   
version = "0.2.5"
  397   3856   
features = ["no-env-filter"]
  398   3857   
  399   3858   
[features]
  400   3859   
behavior-version-latest = []
  401   3860   
rustls = ["aws-smithy-runtime/tls-rustls"]
  402   3861   
default-https-client = ["aws-smithy-runtime/default-https-client"]
  403   3862   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
  404   3863   
test-util = ["aws-credential-types/test-util", "aws-smithy-runtime/test-util"]
  405   3864   
gated-tests = []
  406   3865   
default = ["rustls", "default-https-client", "rt-tokio"]
  407   3866   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml
  408   3867   
index cea5319..d28df10 100644
  409         -
-- a/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml
        3868  +
++ b/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml
  410   3869   
@@ -1,50 +1,50 @@
  411   3870   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
  412   3871   
[package]
  413   3872   
name = "aws-sdk-s3"
  414   3873   
version = "0.0.0-local"
  415   3874   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
  416   3875   
description = "AWS SDK for Amazon Simple Storage Service"
  417   3876   
edition = "2021"
  418   3877   
license = "Apache-2.0"
  419   3878   
repository = "https://github.com/awslabs/aws-sdk-rust"
  420   3879   
rust-version = "1.88.0"
  421   3880   
readme = "README.md"
  422   3881   
[package.metadata.smithy]
  423   3882   
codegen-version = "ci"
  424   3883   
protocol = "aws.protocols#restXml"
  425   3884   
[package.metadata.docs.rs]
  426   3885   
all-features = true
  427   3886   
targets = ["x86_64-unknown-linux-gnu"]
  428   3887   
[dependencies.aws-credential-types]
  429   3888   
path = "../aws-credential-types"
  430         -
version = "1.2.8"
        3889  +
version = "1.2.9"
  431   3890   
  432   3891   
[dependencies.aws-runtime]
  433   3892   
path = "../aws-runtime"
  434   3893   
features = ["event-stream", "http-02x"]
  435   3894   
version = "1.5.13"
  436   3895   
  437   3896   
[dependencies.aws-sigv4]
  438   3897   
path = "../aws-sigv4"
  439   3898   
version = "1.3.6"
  440   3899   
  441   3900   
[dependencies.aws-smithy-async]
  442   3901   
path = "../aws-smithy-async"
  443   3902   
version = "1.2.6"
  444   3903   
  445   3904   
[dependencies.aws-smithy-checksums]
  446   3905   
path = "../aws-smithy-checksums"
  447   3906   
version = "0.63.10"
  448   3907   
  449   3908   
[dependencies.aws-smithy-eventstream]
  450   3909   
path = "../aws-smithy-eventstream"
  451   3910   
version = "0.60.13"
  452   3911   
  453   3912   
[dependencies.aws-smithy-http]
  454   3913   
path = "../aws-smithy-http"
  455   3914   
features = ["event-stream"]
  456   3915   
version = "0.62.5"
  457   3916   
  458   3917   
[dependencies.aws-smithy-json]
  459   3918   
path = "../aws-smithy-json"
  460   3919   
version = "0.61.7"
  461   3920   
@@ -99,61 +99,61 @@ optional = true
  462   3921   
package = "http-body"
  463   3922   
  464   3923   
[dependencies.lru]
  465   3924   
version = "0.12.2"
  466   3925   
  467   3926   
[dependencies.percent-encoding]
  468   3927   
version = "2.0.0"
  469   3928   
  470   3929   
[dependencies.regex-lite]
  471   3930   
version = "0.1.5"
  472   3931   
  473   3932   
[dependencies.sha2]
  474   3933   
version = "0.10"
  475   3934   
  476   3935   
[dependencies.tracing]
  477   3936   
version = "0.1"
  478   3937   
  479   3938   
[dependencies.url]
  480   3939   
version = "2.3.1"
  481   3940   
[dev-dependencies.async-std]
  482   3941   
version = "1.12.0"
  483   3942   
  484   3943   
[dev-dependencies.aws-config]
  485   3944   
path = "../aws-config"
  486   3945   
features = ["behavior-version-latest"]
  487   3946   
version = "1.8.10"
  488   3947   
  489   3948   
[dev-dependencies.aws-credential-types]
  490   3949   
path = "../aws-credential-types"
  491   3950   
features = ["test-util"]
  492         -
version = "1.2.8"
        3951  +
version = "1.2.9"
  493   3952   
  494   3953   
[dev-dependencies.aws-runtime]
  495   3954   
path = "../aws-runtime"
  496   3955   
features = ["test-util"]
  497   3956   
version = "1.5.13"
  498   3957   
  499   3958   
[dev-dependencies.aws-smithy-async]
  500   3959   
path = "../aws-smithy-async"
  501   3960   
features = ["test-util"]
  502   3961   
version = "1.2.6"
  503   3962   
  504   3963   
[dev-dependencies.aws-smithy-eventstream]
  505   3964   
path = "../aws-smithy-eventstream"
  506   3965   
features = ["test-util"]
  507   3966   
version = "0.60.13"
  508   3967   
  509   3968   
[dev-dependencies.aws-smithy-http-client]
  510   3969   
path = "../aws-smithy-http-client"
  511   3970   
features = ["test-util", "wire-mock", "rustls-ring"]
  512   3971   
version = "1.1.4"
  513   3972   
  514   3973   
[dev-dependencies.aws-smithy-mocks]
  515   3974   
path = "../aws-smithy-mocks"
  516   3975   
version = "0.2.0"
  517   3976   
  518   3977   
[dev-dependencies.aws-smithy-protocol-test]
  519   3978   
path = "../aws-smithy-protocol-test"
  520   3979   
version = "0.63.6"
  521   3980   
  522   3981   
[dev-dependencies.aws-smithy-runtime]
  523   3982   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/s3/src/s3_express.rs b/tmp-codegen-diff/aws-sdk/sdk/s3/src/s3_express.rs
  524   3983   
index 1b876fc..6be90ad 100644
  525         -
-- a/tmp-codegen-diff/aws-sdk/sdk/s3/src/s3_express.rs
        3984  +
++ b/tmp-codegen-diff/aws-sdk/sdk/s3/src/s3_express.rs
  526   3985   
@@ -347,122 +347,126 @@ pub(crate) mod identity_cache {
  527   3986   
            expect_identity(2000, &sut, key2, || {
  528   3987   
                let identity_resolver = identity_resolver.clone();
  529   3988   
                let runtime_components = runtime_components.clone();
  530   3989   
                async move { load(identity_resolver, &runtime_components).await }
  531   3990   
            })
  532   3991   
            .await;
  533   3992   
  534   3993   
            // This should pupulate a cache entry for `key3`, but evicting a cache entry for `key1` because the cache is full.
  535   3994   
            expect_identity(3000, &sut, key3.clone(), || {
  536   3995   
                let identity_resolver = identity_resolver.clone();
  537   3996   
                let runtime_components = runtime_components.clone();
  538   3997   
                async move { load(identity_resolver, &runtime_components).await }
  539   3998   
            })
  540   3999   
            .await;
  541   4000   
  542   4001   
            // Attempt to get an identity for `key1` should end up fetching a new one since its cache entry has been evicted.
  543   4002   
            // This fetch should now evict a cache entry for `key2`.
  544   4003   
            expect_identity(4000, &sut, key1, || async move { load(identity_resolver, &runtime_components).await }).await;
  545   4004   
  546   4005   
            // A cache entry for `key3` should still exist in the cache.
  547   4006   
            expect_identity(3000, &sut, key3, || async move { panic!("new identity should not be loaded") }).await;
  548   4007   
        }
  549   4008   
    }
  550   4009   
}
  551   4010   
/// Supporting code for S3 Express identity provider
  552   4011   
pub(crate) mod identity_provider {
  553   4012   
    use std::time::{Duration, SystemTime};
  554   4013   
  555   4014   
    use crate::s3_express::identity_cache::S3ExpressIdentityCache;
  556   4015   
    use crate::types::SessionCredentials;
        4016  +
    use aws_credential_types::credential_feature::AwsCredentialFeature;
  557   4017   
    use aws_credential_types::provider::error::CredentialsError;
  558   4018   
    use aws_credential_types::Credentials;
  559   4019   
    use aws_smithy_async::time::{SharedTimeSource, TimeSource};
  560   4020   
    use aws_smithy_runtime_api::box_error::BoxError;
  561   4021   
    use aws_smithy_runtime_api::client::endpoint::EndpointResolverParams;
  562   4022   
    use aws_smithy_runtime_api::client::identity::{Identity, IdentityCacheLocation, IdentityFuture, ResolveCachedIdentity, ResolveIdentity};
  563   4023   
    use aws_smithy_runtime_api::client::interceptors::SharedInterceptor;
  564   4024   
    use aws_smithy_runtime_api::client::runtime_components::{GetIdentityResolver, RuntimeComponents};
  565   4025   
    use aws_smithy_runtime_api::shared::IntoShared;
  566   4026   
    use aws_smithy_types::config_bag::ConfigBag;
  567   4027   
  568   4028   
    use super::identity_cache::{DEFAULT_BUFFER_TIME, DEFAULT_MAX_CACHE_CAPACITY};
  569   4029   
  570   4030   
    #[derive(Debug)]
  571   4031   
    pub(crate) struct DefaultS3ExpressIdentityProvider {
  572   4032   
        behavior_version: crate::config::BehaviorVersion,
  573   4033   
        cache: S3ExpressIdentityCache,
  574   4034   
    }
  575   4035   
  576   4036   
    impl TryFrom<SessionCredentials> for Credentials {
  577   4037   
        type Error = BoxError;
  578   4038   
  579   4039   
        fn try_from(session_creds: SessionCredentials) -> Result<Self, Self::Error> {
  580   4040   
            Ok(Credentials::new(
  581   4041   
                session_creds.access_key_id,
  582   4042   
                session_creds.secret_access_key,
  583   4043   
                Some(session_creds.session_token),
  584   4044   
                Some(
  585   4045   
                    SystemTime::try_from(session_creds.expiration)
  586   4046   
                        .map_err(|_| CredentialsError::unhandled("credential expiration time cannot be represented by a SystemTime"))?,
  587   4047   
                ),
  588   4048   
                "s3express",
  589   4049   
            ))
  590   4050   
        }
  591   4051   
    }
  592   4052   
  593   4053   
    impl DefaultS3ExpressIdentityProvider {
  594   4054   
        pub(crate) fn builder() -> Builder {
  595   4055   
            Builder::default()
  596   4056   
        }
  597   4057   
  598   4058   
        async fn identity<'a>(&'a self, runtime_components: &'a RuntimeComponents, config_bag: &'a ConfigBag) -> Result<Identity, BoxError> {
  599   4059   
            let bucket_name = self.bucket_name(config_bag)?;
  600   4060   
  601   4061   
            let sigv4_identity_resolver = runtime_components
  602   4062   
                .identity_resolver(aws_runtime::auth::sigv4::SCHEME_ID)
  603   4063   
                .ok_or("identity resolver for sigv4 should be set for S3")?;
  604   4064   
            let aws_identity = runtime_components
  605   4065   
                .identity_cache()
  606   4066   
                .resolve_cached_identity(sigv4_identity_resolver, runtime_components, config_bag)
  607   4067   
                .await?;
  608   4068   
  609   4069   
            let credentials = aws_identity
  610   4070   
                .data::<Credentials>()
  611   4071   
                .ok_or("wrong identity type for SigV4. Expected AWS credentials but got `{identity:?}")?;
  612   4072   
  613   4073   
            let key = self.cache.key(bucket_name, credentials);
  614   4074   
            self.cache
  615   4075   
                .get_or_load(key, || async move {
  616   4076   
                    let creds = self.express_session_credentials(bucket_name, runtime_components, config_bag).await?;
  617         -
                    let data = Credentials::try_from(creds)?;
  618         -
                    Ok((Identity::new(data.clone(), data.expiry()), data.expiry().unwrap()))
        4077  +
                    let mut data = Credentials::try_from(creds)?;
        4078  +
                    data.get_property_mut_or_default::<Vec<AwsCredentialFeature>>()
        4079  +
                        .push(AwsCredentialFeature::S3ExpressBucket);
        4080  +
                    let expiry = data.expiry().unwrap();
        4081  +
                    Ok((Identity::from(data), expiry))
  619   4082   
                })
  620   4083   
                .await
  621   4084   
        }
  622   4085   
  623   4086   
        fn bucket_name<'a>(&'a self, config_bag: &'a ConfigBag) -> Result<&'a str, BoxError> {
  624   4087   
            let params = config_bag.load::<EndpointResolverParams>().expect("endpoint resolver params must be set");
  625   4088   
            let params = params
  626   4089   
                .get::<crate::config::endpoint::Params>()
  627   4090   
                .expect("`Params` should be wrapped in `EndpointResolverParams`");
  628   4091   
            params.bucket().ok_or("A bucket was not set in endpoint params".into())
  629   4092   
        }
  630   4093   
  631   4094   
        async fn express_session_credentials<'a>(
  632   4095   
            &'a self,
  633   4096   
            bucket_name: &'a str,
  634   4097   
            runtime_components: &'a RuntimeComponents,
  635   4098   
            config_bag: &'a ConfigBag,
  636   4099   
        ) -> Result<SessionCredentials, BoxError> {
  637   4100   
            let mut config_builder = crate::config::Builder::from_config_bag(config_bag).behavior_version(self.behavior_version);
  638   4101   
  639   4102   
            // inherits all runtime components from a current S3 operation but clears out
  640   4103   
            // out interceptors configured for that operation
  641   4104   
            let mut rc_builder = runtime_components.to_builder();
  642   4105   
            rc_builder.set_interceptors(std::iter::empty::<SharedInterceptor>());
  643   4106   
            config_builder.runtime_components = rc_builder;
  644   4107   
  645   4108   
            let client = crate::Client::from_conf(config_builder.build());
  646   4109   
            let response = client.create_session().bucket(bucket_name).send().await?;
  647   4110   
  648   4111   
            response.credentials.ok_or("no session credentials in response".into())
  649   4112   
@@ -497,60 +501,189 @@ pub(crate) mod identity_provider {
  650   4113   
        pub(crate) fn buffer_time(mut self, buffer_time: Duration) -> Self {
  651   4114   
            self.set_buffer_time(Some(buffer_time));
  652   4115   
            self
  653   4116   
        }
  654   4117   
        #[allow(dead_code)]
  655   4118   
        pub(crate) fn set_buffer_time(&mut self, buffer_time: Option<Duration>) -> &mut Self {
  656   4119   
            self.buffer_time = buffer_time;
  657   4120   
            self
  658   4121   
        }
  659   4122   
        pub(crate) fn build(self) -> DefaultS3ExpressIdentityProvider {
  660   4123   
            DefaultS3ExpressIdentityProvider {
  661   4124   
                behavior_version: self.behavior_version.expect("required field `behavior_version` should be set"),
  662   4125   
                cache: S3ExpressIdentityCache::new(
  663   4126   
                    DEFAULT_MAX_CACHE_CAPACITY,
  664   4127   
                    self.time_source.unwrap_or_default(),
  665   4128   
                    self.buffer_time.unwrap_or(DEFAULT_BUFFER_TIME),
  666   4129   
                ),
  667   4130   
            }
  668   4131   
        }
  669   4132   
    }
  670   4133   
  671   4134   
    impl ResolveIdentity for DefaultS3ExpressIdentityProvider {
  672   4135   
        fn resolve_identity<'a>(&'a self, runtime_components: &'a RuntimeComponents, config_bag: &'a ConfigBag) -> IdentityFuture<'a> {
  673   4136   
            IdentityFuture::new(async move { self.identity(runtime_components, config_bag).await })
  674   4137   
        }
  675   4138   
  676   4139   
        fn cache_location(&self) -> IdentityCacheLocation {
  677   4140   
            IdentityCacheLocation::IdentityResolver
  678   4141   
        }
  679   4142   
    }
        4143  +
        4144  +
    #[cfg(test)]
        4145  +
    mod tests {
        4146  +
        use super::*;
        4147  +
        use aws_credential_types::credential_feature::AwsCredentialFeature;
        4148  +
        use aws_credential_types::Credentials;
        4149  +
        4150  +
        // Helper function to create test runtime components with SigV4 identity resolver
        4151  +
        fn create_test_runtime_components(base_credentials: Credentials) -> aws_smithy_runtime_api::client::runtime_components::RuntimeComponents {
        4152  +
            use aws_credential_types::provider::SharedCredentialsProvider;
        4153  +
            use aws_smithy_runtime::client::http::test_util::infallible_client_fn;
        4154  +
            use aws_smithy_runtime::client::orchestrator::endpoints::StaticUriEndpointResolver;
        4155  +
            use aws_smithy_runtime::client::retries::strategy::NeverRetryStrategy;
        4156  +
            use aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolver;
        4157  +
            use aws_smithy_runtime_api::client::identity::SharedIdentityResolver;
        4158  +
            use aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder;
        4159  +
            use aws_smithy_types::body::SdkBody;
        4160  +
        4161  +
            let sigv4_resolver = SharedIdentityResolver::new(SharedCredentialsProvider::new(base_credentials));
        4162  +
        4163  +
            // Create a simple auth scheme option resolver for testing
        4164  +
            let auth_option_resolver = StaticAuthSchemeOptionResolver::new(vec![aws_runtime::auth::sigv4::SCHEME_ID]);
        4165  +
        4166  +
            let http_client = infallible_client_fn(|_req| {
        4167  +
                http::Response::builder()
        4168  +
                    .status(200)
        4169  +
                    .body(SdkBody::from(
        4170  +
                        r#"<?xml version="1.0" encoding="UTF-8"?>
        4171  +
                        <CreateSessionResult>
        4172  +
                            <Credentials>
        4173  +
                                <AccessKeyId>session_access_key</AccessKeyId>
        4174  +
                                <SecretAccessKey>session_secret_key</SecretAccessKey>
        4175  +
                                <SessionToken>session_token</SessionToken>
        4176  +
                                <Expiration>2025-01-01T00:00:00Z</Expiration>
        4177  +
                            </Credentials>
        4178  +
                        </CreateSessionResult>"#,
        4179  +
                    ))
        4180  +
                    .unwrap()
        4181  +
            });
        4182  +
        4183  +
            RuntimeComponentsBuilder::for_tests()
        4184  +
                .with_identity_resolver(aws_runtime::auth::sigv4::SCHEME_ID, sigv4_resolver)
        4185  +
                .with_http_client(Some(http_client))
        4186  +
                .with_time_source(Some(aws_smithy_async::time::SystemTimeSource::new()))
        4187  +
                .with_retry_strategy(Some(NeverRetryStrategy::new()))
        4188  +
                .with_auth_scheme_option_resolver(Some(auth_option_resolver))
        4189  +
                .with_endpoint_resolver(Some(StaticUriEndpointResolver::http_localhost(8080)))
        4190  +
                .build()
        4191  +
                .unwrap()
        4192  +
        }
        4193  +
        4194  +
        // Helper function to create config bag with minimal S3 Express bucket parameters
        4195  +
        fn create_test_config_bag(bucket_name: &str) -> aws_smithy_types::config_bag::ConfigBag {
        4196  +
            use aws_smithy_runtime_api::client::endpoint::EndpointResolverParams;
        4197  +
            use aws_smithy_runtime_api::client::stalled_stream_protection::StalledStreamProtectionConfig;
        4198  +
            use aws_smithy_types::config_bag::{ConfigBag, Layer};
        4199  +
        4200  +
            let mut config_bag = ConfigBag::base();
        4201  +
            let mut layer = Layer::new("test");
        4202  +
        4203  +
            let endpoint_params = EndpointResolverParams::new(crate::config::endpoint::Params::builder().bucket(bucket_name).build().unwrap());
        4204  +
            layer.store_put(endpoint_params);
        4205  +
        4206  +
            layer.store_put(StalledStreamProtectionConfig::disabled());
        4207  +
        4208  +
            layer.store_put(crate::config::Region::new("us-west-2"));
        4209  +
        4210  +
            config_bag.push_layer(layer);
        4211  +
        4212  +
            config_bag
        4213  +
        }
        4214  +
        4215  +
        #[test]
        4216  +
        fn test_session_credentials_conversion() {
        4217  +
            let session_creds = SessionCredentials::builder()
        4218  +
                .access_key_id("test_access_key")
        4219  +
                .secret_access_key("test_secret_key")
        4220  +
                .session_token("test_session_token")
        4221  +
                .expiration(aws_smithy_types::DateTime::from_secs(1000))
        4222  +
                .build()
        4223  +
                .expect("valid session credentials");
        4224  +
        4225  +
            let credentials = Credentials::try_from(session_creds).expect("conversion should succeed");
        4226  +
        4227  +
            assert_eq!(credentials.access_key_id(), "test_access_key");
        4228  +
            assert_eq!(credentials.secret_access_key(), "test_secret_key");
        4229  +
            assert_eq!(credentials.session_token(), Some("test_session_token"));
        4230  +
        }
        4231  +
        4232  +
        #[tokio::test]
        4233  +
        async fn test_identity_provider_embeds_s3express_feature() {
        4234  +
            let bucket_name = "test-bucket--usw2-az1--x-s3";
        4235  +
        4236  +
            // Use helper functions to set up test components
        4237  +
            let base_credentials = Credentials::for_tests();
        4238  +
            let runtime_components = create_test_runtime_components(base_credentials);
        4239  +
            let config_bag = create_test_config_bag(bucket_name);
        4240  +
        4241  +
            // Create the identity provider
        4242  +
            let provider = DefaultS3ExpressIdentityProvider::builder()
        4243  +
                .behavior_version(crate::config::BehaviorVersion::latest())
        4244  +
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
        4245  +
                .build();
        4246  +
        4247  +
            // Call identity() and verify the S3ExpressBucket feature is present
        4248  +
            let identity = provider
        4249  +
                .identity(&runtime_components, &config_bag)
        4250  +
                .await
        4251  +
                .expect("identity() should succeed");
        4252  +
        4253  +
            let credentials = identity.data::<Credentials>().expect("Identity should contain Credentials");
        4254  +
            let features = credentials
        4255  +
                .get_property::<Vec<AwsCredentialFeature>>()
        4256  +
                .expect("Credentials should have features");
        4257  +
            assert!(
        4258  +
                features.contains(&AwsCredentialFeature::S3ExpressBucket),
        4259  +
                "S3ExpressBucket feature should be present in Credentials' property field"
        4260  +
            );
        4261  +
        4262  +
            let identity_layer = identity
        4263  +
                .property::<aws_smithy_types::config_bag::FrozenLayer>()
        4264  +
                .expect("Identity should have a property layer");
        4265  +
            let identity_features: Vec<AwsCredentialFeature> = identity_layer.load::<AwsCredentialFeature>().cloned().collect();
        4266  +
            assert!(
        4267  +
                identity_features.contains(&AwsCredentialFeature::S3ExpressBucket),
        4268  +
                "S3ExpressBucket feature should be present in Identity's property field"
        4269  +
            );
        4270  +
        }
        4271  +
    }
  680   4272   
}
  681   4273   
  682   4274   
/// Supporting code for S3 Express runtime plugin
  683   4275   
pub(crate) mod runtime_plugin {
  684   4276   
    use std::borrow::Cow;
  685   4277   
  686   4278   
    use aws_runtime::auth::SigV4SessionTokenNameOverride;
  687   4279   
    use aws_sigv4::http_request::{SignatureLocation, SigningSettings};
  688   4280   
    use aws_smithy_runtime_api::{
  689   4281   
        box_error::BoxError,
  690   4282   
        client::{runtime_components::RuntimeComponentsBuilder, runtime_plugin::RuntimePlugin},
  691   4283   
    };
  692   4284   
    use aws_smithy_types::config_bag::{ConfigBag, FrozenLayer, Layer};
  693   4285   
    use aws_types::os_shim_internal::Env;
  694   4286   
  695   4287   
    mod env {
  696   4288   
        pub(super) const S3_DISABLE_EXPRESS_SESSION_AUTH: &str = "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH";
  697   4289   
    }
  698   4290   
  699   4291   
    #[derive(Debug)]
  700   4292   
    pub(crate) struct S3ExpressRuntimePlugin {
  701   4293   
        config: FrozenLayer,
  702   4294   
        runtime_components_builder: RuntimeComponentsBuilder,
  703   4295   
    }
  704   4296   
  705   4297   
    impl S3ExpressRuntimePlugin {
  706   4298   
        // `new` will be called as `additional_client_plugins` within `base_client_runtime_plugins`.
  707   4299   
        // This guarantees that `new` receives a fully constructed service config, with required
  708   4300   
        // runtime components registered with `RuntimeComponents`.
  709   4301   
        pub(crate) fn new(service_config: crate::config::Config) -> Self {
  710   4302   
@@ -624,148 +757,153 @@ pub(crate) mod runtime_plugin {
  711   4303   
                            .expect("should be set in `service_config`"),
  712   4304   
                    )
  713   4305   
                    .behavior_version(service_config.behavior_version.expect("should be set in `service_config`"))
  714   4306   
                    .build(),
  715   4307   
            ),
  716   4308   
            _ => RuntimeComponentsBuilder::new("S3ExpressRuntimePlugin"),
  717   4309   
        }
  718   4310   
    }
  719   4311   
  720   4312   
    impl RuntimePlugin for S3ExpressRuntimePlugin {
  721   4313   
        fn config(&self) -> Option<FrozenLayer> {
  722   4314   
            Some(self.config.clone())
  723   4315   
        }
  724   4316   
  725   4317   
        fn runtime_components(&self, _: &RuntimeComponentsBuilder) -> Cow<'_, RuntimeComponentsBuilder> {
  726   4318   
            Cow::Borrowed(&self.runtime_components_builder)
  727   4319   
        }
  728   4320   
    }
  729   4321   
  730   4322   
    #[cfg(test)]
  731   4323   
    mod tests {
  732   4324   
        use super::*;
  733   4325   
        use aws_credential_types::Credentials;
  734   4326   
        use aws_smithy_runtime_api::client::identity::ResolveIdentity;
  735   4327   
  736   4328   
        #[test]
  737   4329   
        fn disable_option_set_from_service_client_should_take_the_highest_precedence() {
  738   4330   
            // Disable option is set from service client.
  739   4331   
            let disable_s3_express_session_token = crate::config::DisableS3ExpressSessionAuth(true);
  740   4332   
  741         -
            // An environment variable says the session auth is _not_ disabled, but it will be
  742         -
            // overruled by what is in `layer`.
        4333  +
            // An environment variable says the session auth is _not_ disabled,
        4334  +
            // but it will be overruled by what is in `layer`.
  743   4335   
            let actual = config(
  744   4336   
                Some(disable_s3_express_session_token),
  745   4337   
                Env::from_slice(&[(super::env::S3_DISABLE_EXPRESS_SESSION_AUTH, "false")]),
  746   4338   
            );
  747   4339   
  748         -
            // A config layer from this runtime plugin should not provide a new `DisableS3ExpressSessionAuth`
  749         -
            // if the disable option is set from service client.
        4340  +
            // A config layer from this runtime plugin should not provide
        4341  +
            // a new `DisableS3ExpressSessionAuth` if the disable option is set from service client.
  750   4342   
            assert!(actual.load::<crate::config::DisableS3ExpressSessionAuth>().is_none());
  751   4343   
        }
  752   4344   
  753   4345   
        #[test]
  754   4346   
        fn disable_option_set_from_env_should_take_the_second_highest_precedence() {
  755         -
            // An environment variable says session auth is disabled
        4347  +
            // Disable option is set from environment variable.
  756   4348   
            let actual = config(None, Env::from_slice(&[(super::env::S3_DISABLE_EXPRESS_SESSION_AUTH, "true")]));
  757   4349   
        4350  +
            // The config layer should provide `DisableS3ExpressSessionAuth` from the environment variable.
  758   4351   
            assert!(actual.load::<crate::config::DisableS3ExpressSessionAuth>().unwrap().0);
  759   4352   
        }
  760   4353   
  761   4354   
        #[should_panic]
  762   4355   
        #[test]
  763   4356   
        fn disable_option_set_from_profile_file_should_take_the_lowest_precedence() {
  764         -
            // TODO(aws-sdk-rust#1073): Implement a test that mimics only setting
  765         -
            //  `s3_disable_express_session_auth` in a profile file
  766         -
            todo!()
        4357  +
            todo!("TODO(aws-sdk-rust#1073): Implement profile file test")
  767   4358   
        }
  768   4359   
  769   4360   
        #[test]
  770   4361   
        fn disable_option_should_be_unspecified_if_unset() {
        4362  +
            // Disable option is not set anywhere.
  771   4363   
            let actual = config(None, Env::from_slice(&[]));
  772   4364   
        4365  +
            // The config layer should not provide `DisableS3ExpressSessionAuth` when it's not configured.
  773   4366   
            assert!(actual.load::<crate::config::DisableS3ExpressSessionAuth>().is_none());
  774   4367   
        }
  775   4368   
  776   4369   
        #[test]
  777   4370   
        fn s3_express_runtime_plugin_should_set_default_identity_resolver() {
        4371  +
            // Config has SigV4 credentials provider, so S3 Express identity resolver should be set.
  778   4372   
            let config = crate::Config::builder()
  779   4373   
                .behavior_version_latest()
  780   4374   
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
  781   4375   
                .credentials_provider(Credentials::for_tests())
  782   4376   
                .build();
  783   4377   
  784   4378   
            let actual = runtime_components_builder(config);
        4379  +
            // The runtime plugin should provide a default S3 Express identity resolver.
  785   4380   
            assert!(actual.identity_resolver(&crate::s3_express::auth::SCHEME_ID).is_some());
  786   4381   
        }
  787   4382   
  788   4383   
        #[test]
  789   4384   
        fn s3_express_plugin_should_not_set_default_identity_resolver_without_sigv4_counterpart() {
        4385  +
            // Config does not have SigV4 credentials provider.
  790   4386   
            let config = crate::Config::builder()
  791   4387   
                .behavior_version_latest()
  792   4388   
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
  793   4389   
                .build();
  794   4390   
  795   4391   
            let actual = runtime_components_builder(config);
        4392  +
            // The runtime plugin should not provide S3 Express identity resolver without SigV4 credentials.
  796   4393   
            assert!(actual.identity_resolver(&crate::s3_express::auth::SCHEME_ID).is_none());
  797   4394   
        }
  798   4395   
  799   4396   
        #[tokio::test]
  800   4397   
        async fn s3_express_plugin_should_not_set_default_identity_resolver_if_user_provided() {
        4398  +
            // User provides a custom S3 Express credentials provider.
  801   4399   
            let expected_access_key_id = "expected acccess key ID";
  802   4400   
            let config = crate::Config::builder()
  803   4401   
                .behavior_version_latest()
  804   4402   
                .credentials_provider(Credentials::for_tests())
  805   4403   
                .express_credentials_provider(Credentials::new(
  806   4404   
                    expected_access_key_id,
  807   4405   
                    "secret",
  808   4406   
                    None,
  809   4407   
                    None,
  810   4408   
                    "test express credentials provider",
  811   4409   
                ))
  812   4410   
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
  813   4411   
                .build();
  814   4412   
  815         -
            // `RuntimeComponentsBuilder` from `S3ExpressRuntimePlugin` should not provide an S3Express identity resolver.
        4413  +
            // The runtime plugin should not override the user-provided identity resolver.
  816   4414   
            let runtime_components_builder = runtime_components_builder(config.clone());
  817   4415   
            assert!(runtime_components_builder
  818   4416   
                .identity_resolver(&crate::s3_express::auth::SCHEME_ID)
  819   4417   
                .is_none());
  820   4418   
  821         -
            // Get the S3Express identity resolver from the service config.
        4419  +
            // The user-provided identity resolver should be used.
  822   4420   
            let express_identity_resolver = config.runtime_components.identity_resolver(&crate::s3_express::auth::SCHEME_ID).unwrap();
  823   4421   
            let creds = express_identity_resolver
  824   4422   
                .resolve_identity(&RuntimeComponentsBuilder::for_tests().build().unwrap(), &ConfigBag::base())
  825   4423   
                .await
  826   4424   
                .unwrap();
  827   4425   
  828         -
            // Verify credentials are the one generated by the S3Express identity resolver user provided.
  829   4426   
            assert_eq!(expected_access_key_id, creds.data::<Credentials>().unwrap().access_key_id());
  830   4427   
        }
  831   4428   
    }
  832   4429   
}
  833   4430   
  834   4431   
pub(crate) mod checksum {
  835   4432   
    use crate::http_request_checksum::DefaultRequestChecksumOverride;
  836   4433   
    use aws_smithy_checksums::ChecksumAlgorithm;
  837   4434   
    use aws_smithy_types::config_bag::ConfigBag;
  838   4435   
  839   4436   
    pub(crate) fn provide_default_checksum_algorithm() -> crate::http_request_checksum::DefaultRequestChecksumOverride {
  840   4437   
        fn _provide_default_checksum_algorithm(original_checksum: Option<ChecksumAlgorithm>, cfg: &ConfigBag) -> Option<ChecksumAlgorithm> {
  841   4438   
            // S3 does not have the `ChecksumAlgorithm::Md5`, therefore customers cannot set it
  842   4439   
            // from outside.
  843   4440   
            if original_checksum != Some(ChecksumAlgorithm::Md5) {
  844   4441   
                return original_checksum;
  845   4442   
            }
  846   4443   
  847   4444   
            if crate::s3_express::utils::for_s3_express(cfg) {
  848   4445   
                // S3 Express requires setting the default checksum algorithm to CRC-32
  849   4446   
                Some(ChecksumAlgorithm::Crc32)
  850   4447   
            } else {
  851   4448   
                original_checksum
  852   4449   
            }
  853   4450   
        }
  854   4451   
        DefaultRequestChecksumOverride::new(_provide_default_checksum_algorithm)
  855   4452   
    }
  856   4453   
}
  857   4454   
  858   4455   
pub(crate) mod utils {
  859   4456   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/s3/tests/express.rs b/tmp-codegen-diff/aws-sdk/sdk/s3/tests/express.rs
  860   4457   
index 1b45053..fefa338 100644
  861         -
-- a/tmp-codegen-diff/aws-sdk/sdk/s3/tests/express.rs
        4458  +
++ b/tmp-codegen-diff/aws-sdk/sdk/s3/tests/express.rs
  862   4459   
@@ -1,86 +1,94 @@
  863   4460   
/*
  864   4461   
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  865   4462   
 * SPDX-License-Identifier: Apache-2.0
  866   4463   
 */
  867   4464   
  868   4465   
use std::time::{Duration, SystemTime};
  869   4466   
  870   4467   
use aws_config::timeout::TimeoutConfig;
  871   4468   
use aws_config::Region;
        4469  +
use aws_runtime::user_agent::test_util::{
        4470  +
    assert_ua_contains_metric_values, assert_ua_does_not_contain_metric_values,
        4471  +
};
  872   4472   
use aws_sdk_s3::config::endpoint::{EndpointFuture, Params, ResolveEndpoint};
  873   4473   
use aws_sdk_s3::config::{Builder, Credentials};
  874   4474   
use aws_sdk_s3::presigning::PresigningConfig;
  875   4475   
use aws_sdk_s3::primitives::SdkBody;
  876   4476   
use aws_sdk_s3::types::ChecksumAlgorithm;
  877   4477   
use aws_sdk_s3::{Client, Config};
  878   4478   
use aws_smithy_http_client::test_util::dvr::ReplayingClient;
  879   4479   
use aws_smithy_http_client::test_util::{capture_request, ReplayEvent, StaticReplayClient};
  880   4480   
use aws_smithy_runtime::test_util::capture_test_logs::capture_test_logs;
  881   4481   
use aws_smithy_types::endpoint::Endpoint;
  882   4482   
use http_1x::Uri;
  883   4483   
  884   4484   
async fn test_client<F>(update_builder: F) -> Client
  885   4485   
where
  886   4486   
    F: Fn(Builder) -> Builder,
  887   4487   
{
  888   4488   
    let sdk_config = aws_config::from_env().region("us-west-2").load().await;
  889   4489   
    let config = Config::from(&sdk_config).to_builder().with_test_defaults();
  890   4490   
    aws_sdk_s3::Client::from_conf(update_builder(config).build())
  891   4491   
}
  892   4492   
  893   4493   
#[tokio::test]
  894   4494   
async fn create_session_request_should_not_include_x_amz_s3session_token() {
  895   4495   
    let (http_client, request) = capture_request(None);
  896   4496   
    // There was a bug where a regular SigV4 session token was overwritten by an express session token
  897   4497   
    // even for CreateSession API request.
  898   4498   
    // To exercise that code path, it is important to include credentials with a session token below.
  899   4499   
    let conf = Config::builder()
  900   4500   
        .http_client(http_client)
  901   4501   
        .region(Region::new("us-west-2"))
  902   4502   
        .credentials_provider(::aws_credential_types::Credentials::for_tests_with_session_token())
  903   4503   
        .build();
  904   4504   
    let client = Client::from_conf(conf);
  905   4505   
  906   4506   
    let _ = client
  907   4507   
        .list_objects_v2()
  908   4508   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
  909   4509   
        .send()
  910   4510   
        .await;
  911   4511   
  912   4512   
    let req = request.expect_request();
  913   4513   
    assert!(
  914   4514   
        req.headers().get("x-amz-create-session-mode").is_none(),
  915   4515   
        "`x-amz-create-session-mode` should not appear in headers of the first request when an express bucket is specified"
  916   4516   
    );
  917   4517   
    assert!(req.headers().get("x-amz-security-token").is_some());
  918   4518   
    assert!(req.headers().get("x-amz-s3session-token").is_none());
        4519  +
        4520  +
    // The first request uses regular SigV4 credentials (for CreateSession), not S3 Express credentials,
        4521  +
    // so metric "J" should NOT be present yet. It will appear on subsequent requests that use S3 Express credentials.
        4522  +
    let user_agent = req.headers().get("x-amz-user-agent").unwrap();
        4523  +
    assert_ua_does_not_contain_metric_values(user_agent, &["J"]);
  919   4524   
}
  920   4525   
  921   4526   
#[tokio::test]
  922   4527   
async fn mixed_auths() {
  923   4528   
    let _logs = capture_test_logs();
  924   4529   
  925   4530   
    let http_client = ReplayingClient::from_file("tests/data/express/mixed-auths.json").unwrap();
  926   4531   
    let client = test_client(|b| b.http_client(http_client.clone())).await;
  927   4532   
  928   4533   
    // A call to an S3 Express bucket where we should see two request/response pairs,
  929   4534   
    // one for the `create_session` API and the other for `list_objects_v2` in S3 Express bucket.
  930   4535   
    let result = client
  931   4536   
        .list_objects_v2()
  932   4537   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
  933   4538   
        .send()
  934   4539   
        .await;
  935   4540   
    dbg!(result).expect("success");
  936   4541   
  937   4542   
    // A call to a regular bucket, and request headers should not contain `x-amz-s3session-token`.
  938   4543   
    let result = client
  939   4544   
        .list_objects_v2()
  940   4545   
        .bucket("regular-test-bucket")
  941   4546   
        .send()
  942   4547   
        .await;
  943   4548   
    dbg!(result).expect("success");
  944   4549   
  945   4550   
    // A call to another S3 Express bucket where we should again see two request/response pairs,
  946   4551   
    // one for the `create_session` API and the other for `list_objects_v2` in S3 Express bucket.
  947   4552   
    let result = client
  948   4553   
        .list_objects_v2()
  949   4554   
@@ -246,119 +254,122 @@ async fn user_specified_checksum_should_be_respected() {
  950   4555   
    for (checksum, value) in checksum_value_pairs {
  951   4556   
        runner(checksum.clone(), *value).await;
  952   4557   
    }
  953   4558   
}
  954   4559   
  955   4560   
#[tokio::test]
  956   4561   
async fn default_checksum_should_be_crc32_for_operation_requiring_checksum() {
  957   4562   
    let http_client = StaticReplayClient::new(vec![
  958   4563   
        ReplayEvent::new(create_session_request(), create_session_response()),
  959   4564   
        ReplayEvent::new(
  960   4565   
            operation_request_with_checksum("?delete", Some(("x-amz-checksum-crc32", "AAAAAA=="))),
  961   4566   
            response_ok(),
  962   4567   
        ),
  963   4568   
    ]);
  964   4569   
    let client = test_client(|b| b.http_client(http_client.clone())).await;
  965   4570   
  966   4571   
    let _ = client
  967   4572   
        .delete_objects()
  968   4573   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
  969   4574   
        .send()
  970   4575   
        .await;
  971   4576   
  972   4577   
    let checksum_headers: Vec<_> = http_client
  973   4578   
        .actual_requests()
  974   4579   
        .last()
  975   4580   
        .unwrap()
  976   4581   
        .headers()
  977   4582   
        .iter()
  978   4583   
        .filter(|(key, _)| key.starts_with("x-amz-checksum"))
  979   4584   
        .collect();
  980         -
  981   4585   
    assert_eq!(1, checksum_headers.len());
  982   4586   
    assert_eq!("x-amz-checksum-crc32", checksum_headers[0].0);
        4587  +
  983   4588   
    http_client.assert_requests_match(&[""]);
  984   4589   
}
  985   4590   
  986   4591   
#[tokio::test]
  987   4592   
async fn default_checksum_should_be_none() {
  988   4593   
    let http_client = StaticReplayClient::new(vec![
  989   4594   
        ReplayEvent::new(create_session_request(), create_session_response()),
  990   4595   
        ReplayEvent::new(
  991   4596   
            operation_request_with_checksum("test?x-id=PutObject", None),
  992   4597   
            response_ok(),
  993   4598   
        ),
  994   4599   
    ]);
  995   4600   
    let client = test_client(|b| b.http_client(http_client.clone())).await;
  996   4601   
  997   4602   
    let _ = client
  998   4603   
        .put_object()
  999   4604   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
 1000   4605   
        .key("test")
 1001   4606   
        .body(SdkBody::empty().into())
 1002   4607   
        .send()
 1003   4608   
        .await;
 1004   4609   
 1005   4610   
    http_client.assert_requests_match(&[""]);
 1006   4611   
 1007   4612   
    let mut all_checksums = ChecksumAlgorithm::values()
 1008   4613   
        .iter()
 1009   4614   
        .map(|checksum| format!("amz-checksum-{}", checksum.to_lowercase()))
 1010   4615   
        .chain(std::iter::once("content-md5".to_string()));
 1011         -
 1012   4616   
    assert!(!all_checksums.any(|checksum| http_client
 1013   4617   
        .actual_requests()
 1014   4618   
        .any(|req| req.headers().iter().any(|(key, _)| key == checksum))));
 1015   4619   
}
 1016   4620   
 1017   4621   
#[tokio::test]
 1018   4622   
async fn disable_s3_express_session_auth_at_service_client_level() {
 1019   4623   
    let (http_client, request) = capture_request(None);
 1020   4624   
    let conf = Config::builder()
 1021   4625   
        .http_client(http_client)
 1022   4626   
        .region(Region::new("us-west-2"))
 1023   4627   
        .with_test_defaults()
 1024   4628   
        .disable_s3_express_session_auth(true)
 1025   4629   
        .build();
 1026   4630   
    let client = Client::from_conf(conf);
 1027   4631   
 1028   4632   
    let _ = client
 1029   4633   
        .list_objects_v2()
 1030   4634   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
 1031   4635   
        .send()
 1032   4636   
        .await;
 1033   4637   
 1034   4638   
    let req = request.expect_request();
 1035   4639   
    assert!(
 1036   4640   
        req.headers().get("x-amz-create-session-mode").is_none(),
 1037   4641   
        "x-amz-create-session-mode should not appear in headers when S3 Express session auth is disabled"
 1038   4642   
    );
        4643  +
        4644  +
    // Verify that the User-Agent does NOT contain the S3ExpressBucket metric "J" when session auth is disabled
        4645  +
    let user_agent = req.headers().get("x-amz-user-agent").unwrap();
        4646  +
    assert_ua_does_not_contain_metric_values(user_agent, &["J"]);
 1039   4647   
}
 1040   4648   
 1041   4649   
#[tokio::test]
 1042   4650   
async fn disable_s3_express_session_auth_at_operation_level() {
 1043   4651   
    let (http_client, request) = capture_request(None);
 1044   4652   
    let conf = Config::builder()
 1045   4653   
        .http_client(http_client)
 1046   4654   
        .region(Region::new("us-west-2"))
 1047   4655   
        .with_test_defaults()
 1048   4656   
        .build();
 1049   4657   
    let client = Client::from_conf(conf);
 1050   4658   
 1051   4659   
    let _ = client
 1052   4660   
        .list_objects_v2()
 1053   4661   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
 1054   4662   
        .customize()
 1055   4663   
        .config_override(Config::builder().disable_s3_express_session_auth(true))
 1056   4664   
        .send()
 1057   4665   
        .await;
 1058   4666   
 1059   4667   
    let req = request.expect_request();
 1060   4668   
    assert!(
 1061   4669   
        req.headers().get("x-amz-create-session-mode").is_none(),
 1062   4670   
        "x-amz-create-session-mode should not appear in headers when S3 Express session auth is disabled"
 1063   4671   
    );
 1064   4672   
}
 1065   4673   
 1066   4674   
#[tokio::test]
 1067   4675   
async fn support_customer_overriding_express_credentials_provider() {
 1068   4676   
    let expected_session_token = "testsessiontoken";
 1069   4677   
@@ -391,65 +402,100 @@ async fn support_customer_overriding_express_credentials_provider() {
 1070   4678   
    let _ = client
 1071   4679   
        .list_objects_v2()
 1072   4680   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
 1073   4681   
        .send()
 1074   4682   
        .await;
 1075   4683   
 1076   4684   
    let req = rx.expect_request();
 1077   4685   
    let actual_session_token = req
 1078   4686   
        .headers()
 1079   4687   
        .get("x-amz-s3session-token")
 1080   4688   
        .expect("x-amz-s3session-token should be present");
 1081   4689   
    assert_eq!(expected_session_token, actual_session_token);
 1082   4690   
    assert!(req.headers().get("x-amz-security-token").is_none());
 1083   4691   
 1084   4692   
    // With a regular S3 bucket, test `x-amz-security-token` should be present with `expected_session_token`,
 1085   4693   
    // instead of `x-amz-s3session-token`.
 1086   4694   
    let (client, rx) = client_overriding_express_credentials_provider().await;
 1087   4695   
    let _ = client
 1088   4696   
        .list_objects_v2()
 1089   4697   
        .bucket("regular-test-bucket")
 1090   4698   
        .send()
 1091   4699   
        .await;
 1092   4700   
 1093   4701   
    let req = rx.expect_request();
 1094   4702   
    let actual_session_token = req
 1095   4703   
        .headers()
 1096   4704   
        .get("x-amz-security-token")
 1097   4705   
        .expect("x-amz-security-token should be present");
 1098   4706   
    assert_eq!(expected_session_token, actual_session_token);
 1099   4707   
    assert!(req.headers().get("x-amz-s3session-token").is_none());
        4708  +
        4709  +
    // Verify that the User-Agent does NOT contain the S3ExpressBucket metric "J" for regular buckets
        4710  +
    let user_agent = req.headers().get("x-amz-user-agent").unwrap();
        4711  +
    assert_ua_does_not_contain_metric_values(user_agent, &["J"]);
 1100   4712   
}
 1101   4713   
 1102   4714   
#[tokio::test]
 1103   4715   
async fn s3_express_auth_flow_should_not_be_reached_with_no_auth_schemes() {
 1104   4716   
    #[derive(Debug)]
 1105   4717   
    struct TestResolver {
 1106   4718   
        url: String,
 1107   4719   
    }
 1108   4720   
    impl ResolveEndpoint for TestResolver {
 1109   4721   
        fn resolve_endpoint(&self, _params: &Params) -> EndpointFuture<'_> {
 1110   4722   
            EndpointFuture::ready(Ok(Endpoint::builder().url(self.url.clone()).build()))
 1111   4723   
        }
 1112   4724   
    }
 1113   4725   
 1114   4726   
    let (http_client, request) = capture_request(None);
 1115   4727   
    let conf = Config::builder()
 1116   4728   
        .http_client(http_client)
 1117   4729   
        .region(Region::new("us-west-2"))
 1118   4730   
        .endpoint_resolver(TestResolver {
 1119   4731   
            url: "http://127.0.0.1".to_owned(),
 1120   4732   
        })
 1121   4733   
        .with_test_defaults()
 1122   4734   
        .timeout_config(
 1123   4735   
            TimeoutConfig::builder()
 1124   4736   
                .operation_attempt_timeout(Duration::from_secs(1))
 1125   4737   
                .build(),
 1126   4738   
        )
 1127   4739   
        .build();
 1128   4740   
    let client = Client::from_conf(conf);
 1129   4741   
 1130   4742   
    // Note that we pass a regular bucket; when the bug was present, it still went through s3 Express auth flow.
 1131   4743   
    let _ = client.list_objects_v2().bucket("test-bucket").send().await;
 1132   4744   
    // If s3 Express auth flow were exercised, no request would be received, most likely due to `TimeoutError`.
 1133   4745   
    let _ = request.expect_request();
 1134   4746   
}
        4747  +
        4748  +
#[tokio::test]
        4749  +
async fn s3_express_request_contains_metric_j() {
        4750  +
    let _logs = capture_test_logs();
        4751  +
        4752  +
    let http_client = ReplayingClient::from_file("tests/data/express/mixed-auths.json").unwrap();
        4753  +
    let client = test_client(|b| b.http_client(http_client.clone())).await;
        4754  +
        4755  +
    let _result = client
        4756  +
        .list_objects_v2()
        4757  +
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
        4758  +
        .send()
        4759  +
        .await
        4760  +
        .expect("Request should succeed");
        4761  +
        4762  +
    let requests = http_client.take_requests().await;
        4763  +
        4764  +
    let s3_express_request = requests
        4765  +
        .iter()
        4766  +
        .find(|req| req.headers().get("x-amz-s3session-token").is_some())
        4767  +
        .expect("Should have at least one S3 Express request with session token");
        4768  +
        4769  +
    let user_agent = s3_express_request
        4770  +
        .headers()
        4771  +
        .get("x-amz-user-agent")
        4772  +
        .expect("User-Agent header should be present")
        4773  +
        .to_str()
        4774  +
        .expect("User-Agent should be valid UTF-8");
        4775  +
        4776  +
    assert_ua_contains_metric_values(user_agent, &["J"]);
        4777  +
}
 1135   4778   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml
 1136   4779   
index 8b3a3be..67ac13f 100644
 1137         -
-- a/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml
        4780  +
++ b/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml
 1138   4781   
@@ -1,50 +1,50 @@
 1139   4782   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1140   4783   
[package]
 1141   4784   
name = "aws-sdk-s3control"
 1142   4785   
version = "0.0.0-local"
 1143   4786   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1144   4787   
description = "AWS SDK for AWS S3 Control"
 1145   4788   
edition = "2021"
 1146   4789   
license = "Apache-2.0"
 1147   4790   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1148   4791   
rust-version = "1.88.0"
 1149   4792   
readme = "README.md"
 1150   4793   
[package.metadata.smithy]
 1151   4794   
codegen-version = "ci"
 1152   4795   
protocol = "aws.protocols#restXml"
 1153   4796   
[package.metadata.docs.rs]
 1154   4797   
all-features = true
 1155   4798   
targets = ["x86_64-unknown-linux-gnu"]
 1156   4799   
[dependencies.aws-credential-types]
 1157   4800   
path = "../aws-credential-types"
 1158         -
version = "1.2.8"
        4801  +
version = "1.2.9"
 1159   4802   
 1160   4803   
[dependencies.aws-runtime]
 1161   4804   
path = "../aws-runtime"
 1162   4805   
version = "1.5.13"
 1163   4806   
 1164   4807   
[dependencies.aws-smithy-async]
 1165   4808   
path = "../aws-smithy-async"
 1166   4809   
version = "1.2.6"
 1167   4810   
 1168   4811   
[dependencies.aws-smithy-http]
 1169   4812   
path = "../aws-smithy-http"
 1170   4813   
version = "0.62.5"
 1171   4814   
 1172   4815   
[dependencies.aws-smithy-json]
 1173   4816   
path = "../aws-smithy-json"
 1174   4817   
version = "0.61.7"
 1175   4818   
 1176   4819   
[dependencies.aws-smithy-runtime]
 1177   4820   
path = "../aws-smithy-runtime"
 1178   4821   
features = ["client"]
 1179   4822   
version = "1.9.4"
 1180   4823   
 1181   4824   
[dependencies.aws-smithy-runtime-api]
 1182   4825   
path = "../aws-smithy-runtime-api"
 1183   4826   
features = ["client", "http-02x"]
 1184   4827   
version = "1.9.2"
 1185   4828   
 1186   4829   
[dependencies.aws-smithy-types]
 1187   4830   
path = "../aws-smithy-types"
 1188   4831   
version = "1.3.4"
 1189   4832   
@@ -54,61 +54,61 @@ path = "../aws-smithy-xml"
 1190   4833   
version = "0.60.12"
 1191   4834   
 1192   4835   
[dependencies.aws-types]
 1193   4836   
path = "../aws-types"
 1194   4837   
version = "1.3.10"
 1195   4838   
 1196   4839   
[dependencies.fastrand]
 1197   4840   
version = "2.0.0"
 1198   4841   
 1199   4842   
[dependencies.http]
 1200   4843   
version = "0.2.9"
 1201   4844   
 1202   4845   
[dependencies.md-5]
 1203   4846   
version = "0.10.0"
 1204   4847   
 1205   4848   
[dependencies.regex-lite]
 1206   4849   
version = "0.1.5"
 1207   4850   
 1208   4851   
[dependencies.tracing]
 1209   4852   
version = "0.1"
 1210   4853   
 1211   4854   
[dependencies.url]
 1212   4855   
version = "2.3.1"
 1213   4856   
[dev-dependencies.aws-config]
 1214   4857   
path = "../aws-config"
 1215   4858   
version = "1.8.10"
 1216   4859   
 1217   4860   
[dev-dependencies.aws-credential-types]
 1218   4861   
path = "../aws-credential-types"
 1219   4862   
features = ["test-util"]
 1220         -
version = "1.2.8"
        4863  +
version = "1.2.9"
 1221   4864   
 1222   4865   
[dev-dependencies.aws-runtime]
 1223   4866   
path = "../aws-runtime"
 1224   4867   
features = ["test-util"]
 1225   4868   
version = "1.5.13"
 1226   4869   
 1227   4870   
[dev-dependencies.aws-smithy-async]
 1228   4871   
path = "../aws-smithy-async"
 1229   4872   
features = ["test-util"]
 1230   4873   
version = "1.2.6"
 1231   4874   
 1232   4875   
[dev-dependencies.aws-smithy-http-client]
 1233   4876   
path = "../aws-smithy-http-client"
 1234   4877   
features = ["test-util", "wire-mock"]
 1235   4878   
version = "1.1.4"
 1236   4879   
 1237   4880   
[dev-dependencies.aws-smithy-protocol-test]
 1238   4881   
path = "../aws-smithy-protocol-test"
 1239   4882   
version = "0.63.6"
 1240   4883   
 1241   4884   
[dev-dependencies.aws-smithy-runtime]
 1242   4885   
path = "../aws-smithy-runtime"
 1243   4886   
features = ["test-util"]
 1244   4887   
version = "1.9.4"
 1245   4888   
 1246   4889   
[dev-dependencies.aws-smithy-runtime-api]
 1247   4890   
path = "../aws-smithy-runtime-api"
 1248   4891   
features = ["test-util"]
 1249   4892   
version = "1.9.2"
 1250   4893   
 1251   4894   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml
 1252   4895   
index 0b0a75e..bd97795 100644
 1253         -
-- a/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml
        4896  +
++ b/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml
 1254   4897   
@@ -1,86 +1,86 @@
 1255   4898   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1256   4899   
[package]
 1257   4900   
name = "aws-sdk-sso"
 1258   4901   
version = "0.0.0-local"
 1259   4902   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1260   4903   
description = "AWS SDK for AWS Single Sign-On"
 1261   4904   
edition = "2021"
 1262   4905   
license = "Apache-2.0"
 1263   4906   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1264   4907   
rust-version = "1.88.0"
 1265   4908   
readme = "README.md"
 1266   4909   
[package.metadata.smithy]
 1267   4910   
codegen-version = "ci"
 1268   4911   
protocol = "aws.protocols#restJson1"
 1269   4912   
[package.metadata.docs.rs]
 1270   4913   
all-features = true
 1271   4914   
targets = ["x86_64-unknown-linux-gnu"]
 1272   4915   
[dependencies.aws-credential-types]
 1273   4916   
path = "../aws-credential-types"
 1274         -
version = "1.2.8"
        4917  +
version = "1.2.9"
 1275   4918   
 1276   4919   
[dependencies.aws-runtime]
 1277   4920   
path = "../aws-runtime"
 1278   4921   
version = "1.5.13"
 1279   4922   
 1280   4923   
[dependencies.aws-smithy-async]
 1281   4924   
path = "../aws-smithy-async"
 1282   4925   
version = "1.2.6"
 1283   4926   
 1284   4927   
[dependencies.aws-smithy-http]
 1285   4928   
path = "../aws-smithy-http"
 1286   4929   
version = "0.62.5"
 1287   4930   
 1288   4931   
[dependencies.aws-smithy-json]
 1289   4932   
path = "../aws-smithy-json"
 1290   4933   
version = "0.61.7"
 1291   4934   
 1292   4935   
[dependencies.aws-smithy-runtime]
 1293   4936   
path = "../aws-smithy-runtime"
 1294   4937   
features = ["client"]
 1295   4938   
version = "1.9.4"
 1296   4939   
 1297   4940   
[dependencies.aws-smithy-runtime-api]
 1298   4941   
path = "../aws-smithy-runtime-api"
 1299   4942   
features = ["client", "http-02x"]
 1300   4943   
version = "1.9.2"
 1301   4944   
 1302   4945   
[dependencies.aws-smithy-types]
 1303   4946   
path = "../aws-smithy-types"
 1304   4947   
version = "1.3.4"
 1305   4948   
 1306   4949   
[dependencies.aws-types]
 1307   4950   
path = "../aws-types"
 1308   4951   
version = "1.3.10"
 1309   4952   
 1310   4953   
[dependencies.bytes]
 1311   4954   
version = "1.4.0"
 1312   4955   
 1313   4956   
[dependencies.fastrand]
 1314   4957   
version = "2.0.0"
 1315   4958   
 1316   4959   
[dependencies.http]
 1317   4960   
version = "0.2.9"
 1318   4961   
 1319   4962   
[dependencies.regex-lite]
 1320   4963   
version = "0.1.5"
 1321   4964   
 1322   4965   
[dependencies.tracing]
 1323   4966   
version = "0.1"
 1324   4967   
[dev-dependencies.aws-credential-types]
 1325   4968   
path = "../aws-credential-types"
 1326   4969   
features = ["test-util"]
 1327         -
version = "1.2.8"
        4970  +
version = "1.2.9"
 1328   4971   
 1329   4972   
[dev-dependencies.tokio]
 1330   4973   
version = "1.23.1"
 1331   4974   
features = ["macros", "test-util", "rt-multi-thread"]
 1332   4975   
 1333   4976   
[features]
 1334   4977   
behavior-version-latest = []
 1335   4978   
rustls = ["aws-smithy-runtime/tls-rustls"]
 1336   4979   
default-https-client = ["aws-smithy-runtime/default-https-client"]
 1337   4980   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
 1338   4981   
test-util = ["aws-credential-types/test-util", "aws-smithy-runtime/test-util"]
 1339   4982   
gated-tests = []
 1340   4983   
default = ["rustls", "default-https-client", "rt-tokio"]
 1341   4984   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml
 1342   4985   
index 0a0f182..0654fbd 100644
 1343         -
-- a/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml
        4986  +
++ b/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml
 1344   4987   
@@ -1,86 +1,86 @@
 1345   4988   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1346   4989   
[package]
 1347   4990   
name = "aws-sdk-ssooidc"
 1348   4991   
version = "0.0.0-local"
 1349   4992   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1350   4993   
description = "AWS SDK for AWS SSO OIDC"
 1351   4994   
edition = "2021"
 1352   4995   
license = "Apache-2.0"
 1353   4996   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1354   4997   
rust-version = "1.88.0"
 1355   4998   
readme = "README.md"
 1356   4999   
[package.metadata.smithy]
 1357   5000   
codegen-version = "ci"
 1358   5001   
protocol = "aws.protocols#restJson1"
 1359   5002   
[package.metadata.docs.rs]
 1360   5003   
all-features = true
 1361   5004   
targets = ["x86_64-unknown-linux-gnu"]
 1362   5005   
[dependencies.aws-credential-types]
 1363   5006   
path = "../aws-credential-types"
 1364         -
version = "1.2.8"
        5007  +
version = "1.2.9"
 1365   5008   
 1366   5009   
[dependencies.aws-runtime]
 1367   5010   
path = "../aws-runtime"
 1368   5011   
version = "1.5.13"
 1369   5012   
 1370   5013   
[dependencies.aws-smithy-async]
 1371   5014   
path = "../aws-smithy-async"
 1372   5015   
version = "1.2.6"
 1373   5016   
 1374   5017   
[dependencies.aws-smithy-http]
 1375   5018   
path = "../aws-smithy-http"
 1376   5019   
version = "0.62.5"
 1377   5020   
 1378   5021   
[dependencies.aws-smithy-json]
 1379   5022   
path = "../aws-smithy-json"
 1380   5023   
version = "0.61.7"
 1381   5024   
 1382   5025   
[dependencies.aws-smithy-runtime]
 1383   5026   
path = "../aws-smithy-runtime"
 1384   5027   
features = ["client"]
 1385   5028   
version = "1.9.4"
 1386   5029   
 1387   5030   
[dependencies.aws-smithy-runtime-api]
 1388   5031   
path = "../aws-smithy-runtime-api"
 1389   5032   
features = ["client", "http-02x"]
 1390   5033   
version = "1.9.2"
 1391   5034   
 1392   5035   
[dependencies.aws-smithy-types]
 1393   5036   
path = "../aws-smithy-types"
 1394   5037   
version = "1.3.4"
 1395   5038   
 1396   5039   
[dependencies.aws-types]
 1397   5040   
path = "../aws-types"
 1398   5041   
version = "1.3.10"
 1399   5042   
 1400   5043   
[dependencies.bytes]
 1401   5044   
version = "1.4.0"
 1402   5045   
 1403   5046   
[dependencies.fastrand]
 1404   5047   
version = "2.0.0"
 1405   5048   
 1406   5049   
[dependencies.http]
 1407   5050   
version = "0.2.9"
 1408   5051   
 1409   5052   
[dependencies.regex-lite]
 1410   5053   
version = "0.1.5"
 1411   5054   
 1412   5055   
[dependencies.tracing]
 1413   5056   
version = "0.1"
 1414   5057   
[dev-dependencies.aws-credential-types]
 1415   5058   
path = "../aws-credential-types"
 1416   5059   
features = ["test-util"]
 1417         -
version = "1.2.8"
        5060  +
version = "1.2.9"
 1418   5061   
 1419   5062   
[dev-dependencies.tokio]
 1420   5063   
version = "1.23.1"
 1421   5064   
features = ["macros", "test-util", "rt-multi-thread"]
 1422   5065   
 1423   5066   
[features]
 1424   5067   
behavior-version-latest = []
 1425   5068   
rustls = ["aws-smithy-runtime/tls-rustls"]
 1426   5069   
default-https-client = ["aws-smithy-runtime/default-https-client"]
 1427   5070   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
 1428   5071   
test-util = ["aws-credential-types/test-util", "aws-smithy-runtime/test-util"]
 1429   5072   
gated-tests = []
 1430   5073   
default = ["rustls", "default-https-client", "rt-tokio"]
 1431   5074   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml
 1432   5075   
index 27abfdc..5e1d2d8 100644
 1433         -
-- a/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml
        5076  +
++ b/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml
 1434   5077   
@@ -1,108 +1,108 @@
 1435   5078   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1436   5079   
[package]
 1437   5080   
name = "aws-sdk-sts"
 1438   5081   
version = "0.0.0-local"
 1439   5082   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1440   5083   
description = "AWS SDK for AWS Security Token Service"
 1441   5084   
edition = "2021"
 1442   5085   
license = "Apache-2.0"
 1443   5086   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1444   5087   
rust-version = "1.88.0"
 1445   5088   
readme = "README.md"
 1446   5089   
[package.metadata.smithy]
 1447   5090   
codegen-version = "ci"
 1448   5091   
protocol = "aws.protocols#awsQuery"
 1449   5092   
[package.metadata.docs.rs]
 1450   5093   
all-features = true
 1451   5094   
targets = ["x86_64-unknown-linux-gnu"]
 1452   5095   
[dependencies.aws-credential-types]
 1453   5096   
path = "../aws-credential-types"
 1454         -
version = "1.2.8"
        5097  +
version = "1.2.9"
 1455   5098   
 1456   5099   
[dependencies.aws-runtime]
 1457   5100   
path = "../aws-runtime"
 1458   5101   
version = "1.5.13"
 1459   5102   
 1460   5103   
[dependencies.aws-smithy-async]
 1461   5104   
path = "../aws-smithy-async"
 1462   5105   
version = "1.2.6"
 1463   5106   
 1464   5107   
[dependencies.aws-smithy-http]
 1465   5108   
path = "../aws-smithy-http"
 1466   5109   
version = "0.62.5"
 1467   5110   
 1468   5111   
[dependencies.aws-smithy-json]
 1469   5112   
path = "../aws-smithy-json"
 1470   5113   
version = "0.61.7"
 1471   5114   
 1472   5115   
[dependencies.aws-smithy-query]
 1473   5116   
path = "../aws-smithy-query"
 1474   5117   
version = "0.60.8"
 1475   5118   
 1476   5119   
[dependencies.aws-smithy-runtime]
 1477   5120   
path = "../aws-smithy-runtime"
 1478   5121   
features = ["client"]
 1479   5122   
version = "1.9.4"
 1480   5123   
 1481   5124   
[dependencies.aws-smithy-runtime-api]
 1482   5125   
path = "../aws-smithy-runtime-api"
 1483   5126   
features = ["client", "http-02x"]
 1484   5127   
version = "1.9.2"
 1485   5128   
 1486   5129   
[dependencies.aws-smithy-types]
 1487   5130   
path = "../aws-smithy-types"
 1488   5131   
version = "1.3.4"
 1489   5132   
 1490   5133   
[dependencies.aws-smithy-xml]
 1491   5134   
path = "../aws-smithy-xml"
 1492   5135   
version = "0.60.12"
 1493   5136   
 1494   5137   
[dependencies.aws-types]
 1495   5138   
path = "../aws-types"
 1496   5139   
version = "1.3.10"
 1497   5140   
 1498   5141   
[dependencies.fastrand]
 1499   5142   
version = "2.0.0"
 1500   5143   
 1501   5144   
[dependencies.http]
 1502   5145   
version = "0.2.9"
 1503   5146   
 1504   5147   
[dependencies.regex-lite]
 1505   5148   
version = "0.1.5"
 1506   5149   
 1507   5150   
[dependencies.tracing]
 1508   5151   
version = "0.1"
 1509   5152   
[dev-dependencies.aws-credential-types]
 1510   5153   
path = "../aws-credential-types"
 1511   5154   
features = ["test-util"]
 1512         -
version = "1.2.8"
        5155  +
version = "1.2.9"
 1513   5156   
 1514   5157   
[dev-dependencies.aws-runtime]
 1515   5158   
path = "../aws-runtime"
 1516   5159   
features = ["test-util"]
 1517   5160   
version = "1.5.13"
 1518   5161   
 1519   5162   
[dev-dependencies.aws-smithy-async]
 1520   5163   
path = "../aws-smithy-async"
 1521   5164   
features = ["test-util"]
 1522   5165   
version = "1.2.6"
 1523   5166   
 1524   5167   
[dev-dependencies.aws-smithy-http-client]
 1525   5168   
path = "../aws-smithy-http-client"
 1526   5169   
features = ["test-util", "wire-mock"]
 1527   5170   
version = "1.1.4"
 1528   5171   
 1529   5172   
[dev-dependencies.aws-smithy-protocol-test]
 1530   5173   
path = "../aws-smithy-protocol-test"
 1531   5174   
version = "0.63.6"
 1532   5175   
 1533   5176   
[dev-dependencies.aws-smithy-runtime]
 1534   5177   
path = "../aws-smithy-runtime"
 1535   5178   
features = ["test-util"]
 1536   5179   
version = "1.9.4"
 1537   5180   
 1538   5181   
[dev-dependencies.aws-smithy-runtime-api]
 1539   5182   
path = "../aws-smithy-runtime-api"
 1540   5183   
features = ["test-util"]
 1541   5184   
version = "1.9.2"
 1542   5185   
 1543   5186   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml
 1544   5187   
index e1f3853..f5f7cf2 100644
 1545         -
-- a/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml
        5188  +
++ b/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml
 1546   5189   
@@ -1,111 +1,111 @@
 1547   5190   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1548   5191   
[package]
 1549   5192   
name = "aws-sdk-timestreamquery"
 1550   5193   
version = "0.0.0-local"
 1551   5194   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1552   5195   
description = "AWS SDK for Amazon Timestream Query"
 1553   5196   
edition = "2021"
 1554   5197   
license = "Apache-2.0"
 1555   5198   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1556   5199   
rust-version = "1.88.0"
 1557   5200   
readme = "README.md"
 1558   5201   
[package.metadata.smithy]
 1559   5202   
codegen-version = "ci"
 1560   5203   
protocol = "aws.protocols#awsJson1_0"
 1561   5204   
[package.metadata.docs.rs]
 1562   5205   
all-features = true
 1563   5206   
targets = ["x86_64-unknown-linux-gnu"]
 1564   5207   
[dependencies.aws-credential-types]
 1565   5208   
path = "../aws-credential-types"
 1566         -
version = "1.2.8"
        5209  +
version = "1.2.9"
 1567   5210   
 1568   5211   
[dependencies.aws-runtime]
 1569   5212   
path = "../aws-runtime"
 1570   5213   
version = "1.5.13"
 1571   5214   
 1572   5215   
[dependencies.aws-smithy-async]
 1573   5216   
path = "../aws-smithy-async"
 1574   5217   
version = "1.2.6"
 1575   5218   
 1576   5219   
[dependencies.aws-smithy-http]
 1577   5220   
path = "../aws-smithy-http"
 1578   5221   
version = "0.62.5"
 1579   5222   
 1580   5223   
[dependencies.aws-smithy-json]
 1581   5224   
path = "../aws-smithy-json"
 1582   5225   
version = "0.61.7"
 1583   5226   
 1584   5227   
[dependencies.aws-smithy-runtime]
 1585   5228   
path = "../aws-smithy-runtime"
 1586   5229   
features = ["client"]
 1587   5230   
version = "1.9.4"
 1588   5231   
 1589   5232   
[dependencies.aws-smithy-runtime-api]
 1590   5233   
path = "../aws-smithy-runtime-api"
 1591   5234   
features = ["client", "http-02x"]
 1592   5235   
version = "1.9.2"
 1593   5236   
 1594   5237   
[dependencies.aws-smithy-types]
 1595   5238   
path = "../aws-smithy-types"
 1596   5239   
version = "1.3.4"
 1597   5240   
 1598   5241   
[dependencies.aws-types]
 1599   5242   
path = "../aws-types"
 1600   5243   
version = "1.3.10"
 1601   5244   
 1602   5245   
[dependencies.bytes]
 1603   5246   
version = "1.4.0"
 1604   5247   
 1605   5248   
[dependencies.fastrand]
 1606   5249   
version = "2.0.0"
 1607   5250   
 1608   5251   
[dependencies.http]
 1609   5252   
version = "0.2.9"
 1610   5253   
 1611   5254   
[dependencies.regex-lite]
 1612   5255   
version = "0.1.5"
 1613   5256   
 1614   5257   
[dependencies.tokio]
 1615   5258   
version = "1.23.1"
 1616   5259   
features = ["sync"]
 1617   5260   
 1618   5261   
[dependencies.tracing]
 1619   5262   
version = "0.1"
 1620   5263   
[dev-dependencies.aws-config]
 1621   5264   
path = "../aws-config"
 1622   5265   
version = "1.8.10"
 1623   5266   
 1624   5267   
[dev-dependencies.aws-credential-types]
 1625   5268   
path = "../aws-credential-types"
 1626   5269   
features = ["test-util"]
 1627         -
version = "1.2.8"
        5270  +
version = "1.2.9"
 1628   5271   
 1629   5272   
[dev-dependencies.aws-runtime]
 1630   5273   
path = "../aws-runtime"
 1631   5274   
features = ["test-util"]
 1632   5275   
version = "1.5.13"
 1633   5276   
 1634   5277   
[dev-dependencies.aws-smithy-async]
 1635   5278   
path = "../aws-smithy-async"
 1636   5279   
features = ["test-util"]
 1637   5280   
version = "1.2.6"
 1638   5281   
 1639   5282   
[dev-dependencies.aws-smithy-http-client]
 1640   5283   
path = "../aws-smithy-http-client"
 1641   5284   
features = ["test-util", "wire-mock"]
 1642   5285   
version = "1.1.4"
 1643   5286   
 1644   5287   
[dev-dependencies.aws-smithy-protocol-test]
 1645   5288   
path = "../aws-smithy-protocol-test"
 1646   5289   
version = "0.63.6"
 1647   5290   
 1648   5291   
[dev-dependencies.aws-smithy-runtime]
 1649   5292   
path = "../aws-smithy-runtime"
 1650   5293   
features = ["test-util"]
 1651   5294   
version = "1.9.4"
 1652   5295   
 1653   5296   
[dev-dependencies.aws-smithy-runtime-api]
 1654   5297   
path = "../aws-smithy-runtime-api"
 1655   5298   
features = ["test-util"]
 1656   5299   
version = "1.9.2"
 1657   5300   
 1658   5301   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml
 1659   5302   
index 9278bd5..d2ebe68 100644
 1660         -
-- a/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml
        5303  +
++ b/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml
 1661   5304   
@@ -1,99 +1,99 @@
 1662   5305   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1663   5306   
[package]
 1664   5307   
name = "aws-sdk-timestreamwrite"
 1665   5308   
version = "0.0.0-local"
 1666   5309   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1667   5310   
description = "AWS SDK for Amazon Timestream Write"
 1668   5311   
edition = "2021"
 1669   5312   
license = "Apache-2.0"
 1670   5313   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1671   5314   
rust-version = "1.88.0"
 1672   5315   
readme = "README.md"
 1673   5316   
[package.metadata.smithy]
 1674   5317   
codegen-version = "ci"
 1675   5318   
protocol = "aws.protocols#awsJson1_0"
 1676   5319   
[package.metadata.docs.rs]
 1677   5320   
all-features = true
 1678   5321   
targets = ["x86_64-unknown-linux-gnu"]
 1679   5322   
[dependencies.aws-credential-types]
 1680   5323   
path = "../aws-credential-types"
 1681         -
version = "1.2.8"
        5324  +
version = "1.2.9"
 1682   5325   
 1683   5326   
[dependencies.aws-runtime]
 1684   5327   
path = "../aws-runtime"
 1685   5328   
version = "1.5.13"
 1686   5329   
 1687   5330   
[dependencies.aws-smithy-async]
 1688   5331   
path = "../aws-smithy-async"
 1689   5332   
version = "1.2.6"
 1690   5333   
 1691   5334   
[dependencies.aws-smithy-http]
 1692   5335   
path = "../aws-smithy-http"
 1693   5336   
version = "0.62.5"
 1694   5337   
 1695   5338   
[dependencies.aws-smithy-json]
 1696   5339   
path = "../aws-smithy-json"
 1697   5340   
version = "0.61.7"
 1698   5341   
 1699   5342   
[dependencies.aws-smithy-runtime]
 1700   5343   
path = "../aws-smithy-runtime"
 1701   5344   
features = ["client"]
 1702   5345   
version = "1.9.4"
 1703   5346   
 1704   5347   
[dependencies.aws-smithy-runtime-api]
 1705   5348   
path = "../aws-smithy-runtime-api"
 1706   5349   
features = ["client", "http-02x"]
 1707   5350   
version = "1.9.2"
 1708   5351   
 1709   5352   
[dependencies.aws-smithy-types]
 1710   5353   
path = "../aws-smithy-types"
 1711   5354   
version = "1.3.4"
 1712   5355   
 1713   5356   
[dependencies.aws-types]
 1714   5357   
path = "../aws-types"
 1715   5358   
version = "1.3.10"
 1716   5359   
 1717   5360   
[dependencies.bytes]
 1718   5361   
version = "1.4.0"
 1719   5362   
 1720   5363   
[dependencies.fastrand]
 1721   5364   
version = "2.0.0"
 1722   5365   
 1723   5366   
[dependencies.http]
 1724   5367   
version = "0.2.9"
 1725   5368   
 1726   5369   
[dependencies.regex-lite]
 1727   5370   
version = "0.1.5"
 1728   5371   
 1729   5372   
[dependencies.tokio]
 1730   5373   
version = "1.23.1"
 1731   5374   
features = ["sync"]
 1732   5375   
 1733   5376   
[dependencies.tracing]
 1734   5377   
version = "0.1"
 1735   5378   
[dev-dependencies.aws-config]
 1736   5379   
path = "../aws-config"
 1737   5380   
version = "1.8.10"
 1738   5381   
 1739   5382   
[dev-dependencies.aws-credential-types]
 1740   5383   
path = "../aws-credential-types"
 1741   5384   
features = ["test-util"]
 1742         -
version = "1.2.8"
        5385  +
version = "1.2.9"
 1743   5386   
 1744   5387   
[dev-dependencies.aws-smithy-async]
 1745   5388   
path = "../aws-smithy-async"
 1746   5389   
features = ["test-util"]
 1747   5390   
version = "1.2.6"
 1748   5391   
 1749   5392   
[dev-dependencies.tokio]
 1750   5393   
version = "1.23.1"
 1751   5394   
features = ["macros", "test-util", "rt-multi-thread"]
 1752   5395   
 1753   5396   
[features]
 1754   5397   
behavior-version-latest = []
 1755   5398   
rustls = ["aws-smithy-runtime/tls-rustls"]
 1756   5399   
default-https-client = ["aws-smithy-runtime/default-https-client"]
 1757   5400   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
 1758   5401   
test-util = ["aws-credential-types/test-util", "aws-smithy-runtime/test-util"]
 1759   5402   
gated-tests = []
 1760   5403   
default = ["rustls", "default-https-client", "rt-tokio"]
 1761   5404   
diff --git a/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml
 1762   5405   
index d7ccdc4..2a6eddf 100644
 1763         -
-- a/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml
        5406  +
++ b/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml
 1764   5407   
@@ -1,50 +1,50 @@
 1765   5408   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
 1766   5409   
[package]
 1767   5410   
name = "aws-sdk-transcribestreaming"
 1768   5411   
version = "0.0.0-local"
 1769   5412   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
 1770   5413   
description = "AWS SDK for Amazon Transcribe Streaming Service"
 1771   5414   
edition = "2021"
 1772   5415   
license = "Apache-2.0"
 1773   5416   
repository = "https://github.com/awslabs/aws-sdk-rust"
 1774   5417   
rust-version = "1.88.0"
 1775   5418   
readme = "README.md"
 1776   5419   
[package.metadata.smithy]
 1777   5420   
codegen-version = "ci"
 1778   5421   
protocol = "aws.protocols#restJson1"
 1779   5422   
[package.metadata.docs.rs]
 1780   5423   
all-features = true
 1781   5424   
targets = ["x86_64-unknown-linux-gnu"]
 1782   5425   
[dependencies.aws-credential-types]
 1783   5426   
path = "../aws-credential-types"
 1784         -
version = "1.2.8"
        5427  +
version = "1.2.9"
 1785   5428   
 1786   5429   
[dependencies.aws-runtime]
 1787   5430   
path = "../aws-runtime"
 1788   5431   
features = ["event-stream"]
 1789   5432   
version = "1.5.13"
 1790   5433   
 1791   5434   
[dependencies.aws-sigv4]
 1792   5435   
path = "../aws-sigv4"
 1793   5436   
version = "1.3.6"
 1794   5437   
 1795   5438   
[dependencies.aws-smithy-async]
 1796   5439   
path = "../aws-smithy-async"
 1797   5440   
version = "1.2.6"
 1798   5441   
 1799   5442   
[dependencies.aws-smithy-eventstream]
 1800   5443   
path = "../aws-smithy-eventstream"
 1801   5444   
version = "0.60.13"
 1802   5445   
 1803   5446   
[dependencies.aws-smithy-http]
 1804   5447   
path = "../aws-smithy-http"
 1805   5448   
features = ["event-stream"]
 1806   5449   
version = "0.62.5"
 1807   5450   
 1808   5451   
[dependencies.aws-smithy-json]
 1809   5452   
path = "../aws-smithy-json"
 1810   5453   
version = "0.61.7"
 1811   5454   
 1812   5455   
[dependencies.aws-smithy-runtime]
 1813   5456   
path = "../aws-smithy-runtime"
 1814   5457   
features = ["client"]
 1815   5458   
@@ -65,61 +65,61 @@ path = "../aws-types"
 1816   5459   
version = "1.3.10"
 1817   5460   
 1818   5461   
[dependencies.bytes]
 1819   5462   
version = "1.4.0"
 1820   5463   
 1821   5464   
[dependencies.fastrand]
 1822   5465   
version = "2.0.0"
 1823   5466   
 1824   5467   
[dependencies.http]
 1825   5468   
version = "0.2.9"
 1826   5469   
 1827   5470   
[dependencies.hyper]
 1828   5471   
version = "0.14.26"
 1829   5472   
features = ["stream"]
 1830   5473   
 1831   5474   
[dependencies.regex-lite]
 1832   5475   
version = "0.1.5"
 1833   5476   
 1834   5477   
[dependencies.tracing]
 1835   5478   
version = "0.1"
 1836   5479   
[dev-dependencies.async-stream]
 1837   5480   
version = "0.3.0"
 1838   5481   
 1839   5482   
[dev-dependencies.aws-config]
 1840   5483   
path = "../aws-config"
 1841   5484   
version = "1.8.10"
 1842   5485   
 1843   5486   
[dev-dependencies.aws-credential-types]
 1844   5487   
path = "../aws-credential-types"
 1845   5488   
features = ["test-util"]
 1846         -
version = "1.2.8"
        5489  +
version = "1.2.9"
 1847   5490   
 1848   5491   
[dev-dependencies.aws-runtime]
 1849   5492   
path = "../aws-runtime"
 1850   5493   
features = ["test-util"]
 1851   5494   
version = "1.5.13"
 1852   5495   
 1853   5496   
[dev-dependencies.aws-smithy-async]
 1854   5497   
path = "../aws-smithy-async"
 1855   5498   
features = ["test-util"]
 1856   5499   
version = "1.2.6"
 1857   5500   
 1858   5501   
[dev-dependencies.aws-smithy-eventstream]
 1859   5502   
path = "../aws-smithy-eventstream"
 1860   5503   
features = ["test-util"]
 1861   5504   
version = "0.60.13"
 1862   5505   
 1863   5506   
[dev-dependencies.aws-smithy-http-client]
 1864   5507   
path = "../aws-smithy-http-client"
 1865   5508   
features = ["test-util", "wire-mock"]
 1866   5509   
version = "1.1.4"
 1867   5510   
 1868   5511   
[dev-dependencies.aws-smithy-protocol-test]
 1869   5512   
path = "../aws-smithy-protocol-test"
 1870   5513   
version = "0.63.6"
 1871   5514   
 1872   5515   
[dev-dependencies.aws-smithy-runtime]
 1873   5516   
path = "../aws-smithy-runtime"
 1874   5517   
features = ["test-util"]
 1875   5518   
version = "1.9.4"
 1876   5519   
 1877   5520   
diff --git a/tmp-codegen-diff/aws-sdk/tests/no-default-features/Cargo.toml b/tmp-codegen-diff/aws-sdk/tests/no-default-features/Cargo.toml
 1878   5521   
index 66ceceb..5044da7 100644
 1879         -
-- a/tmp-codegen-diff/aws-sdk/tests/no-default-features/Cargo.toml
        5522  +
++ b/tmp-codegen-diff/aws-sdk/tests/no-default-features/Cargo.toml
 1880   5523   
@@ -12,43 +12,43 @@ publish = false
 1881   5524   
[dev-dependencies]
 1882   5525   
futures = "0.3.25"
 1883   5526   
 1884   5527   
[dev-dependencies.aws-config]
 1885   5528   
path = "../../sdk/aws-config"
 1886   5529   
default-features = false
 1887   5530   
version = "1.8.10"
 1888   5531   
 1889   5532   
[dev-dependencies.aws-sdk-s3]
 1890   5533   
path = "../../sdk/s3"
 1891   5534   
default-features = false
 1892   5535   
version = "0.0.0-local"
 1893   5536   
 1894   5537   
[dev-dependencies.aws-smithy-async]
 1895   5538   
path = "../../sdk/aws-smithy-async"
 1896   5539   
version = "1.2.6"
 1897   5540   
 1898   5541   
[dev-dependencies.aws-smithy-runtime]
 1899   5542   
path = "../../sdk/aws-smithy-runtime"
 1900   5543   
features = ["test-util"]
 1901   5544   
version = "1.9.4"
 1902   5545   
 1903   5546   
[dev-dependencies.aws-smithy-http-client]
 1904   5547   
path = "../../sdk/aws-smithy-http-client"
 1905   5548   
features = ["test-util"]
 1906   5549   
version = "1.1.4"
 1907   5550   
 1908   5551   
[dev-dependencies.aws-credential-types]
 1909   5552   
path = "../../sdk/aws-credential-types"
 1910   5553   
features = ["test-util"]
 1911         -
version = "1.2.8"
        5554  +
version = "1.2.9"
 1912   5555   
 1913   5556   
[dev-dependencies.tokio]
 1914   5557   
version = "1.23.1"
 1915   5558   
features = ["full", "test-util"]
 1916   5559   
 1917   5560   
[dev-dependencies.tracing-subscriber]
 1918   5561   
version = "0.3.15"
 1919   5562   
features = ["env-filter"]
 1920   5563   
 1921   5564   
[dev-dependencies.http-1x]