Server Test Python

Server Test Python

rev. 0b749be6d000fdc7ef59d1bc26f1dce00358d95c

Files changed:

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_operation_with_defaults_output.rs

@@ -0,1 +0,174 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub fn ser_operation_with_defaults_output_output_output(
           3  +
    value: &crate::output::OperationWithDefaultsOutput,
           4  +
) -> Result<String, ::aws_smithy_types::error::operation::SerializationError> {
           5  +
    let mut out = String::new();
           6  +
    let mut object = ::aws_smithy_json::serialize::JsonObjectWriter::new(&mut out);
           7  +
    crate::protocol_serde::shape_operation_with_defaults_output::ser_operation_with_defaults_output_output(&mut object, value)?;
           8  +
    object.finish();
           9  +
    Ok(out)
          10  +
}
          11  +
          12  +
pub fn ser_operation_with_defaults_output_output(
          13  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
          14  +
    input: &crate::output::OperationWithDefaultsOutput,
          15  +
) -> Result<(), ::aws_smithy_types::error::operation::SerializationError> {
          16  +
    {
          17  +
        object
          18  +
            .key("defaultBlob")
          19  +
            .string_unchecked(&::aws_smithy_types::base64::encode(&input.default_blob));
          20  +
    }
          21  +
    if !input.default_boolean {
          22  +
        object.key("defaultBoolean").boolean(input.default_boolean);
          23  +
    }
          24  +
    if input.default_byte != 1 {
          25  +
        object.key("defaultByte").number(
          26  +
            #[allow(clippy::useless_conversion)]
          27  +
            ::aws_smithy_types::Number::NegInt((input.default_byte).into()),
          28  +
        );
          29  +
    }
          30  +
    {
          31  +
        object
          32  +
            .key("defaultDocumentBoolean")
          33  +
            .document(&input.default_document_boolean);
          34  +
    }
          35  +
    {
          36  +
        object
          37  +
            .key("defaultDocumentList")
          38  +
            .document(&input.default_document_list);
          39  +
    }
          40  +
    {
          41  +
        object
          42  +
            .key("defaultDocumentMap")
          43  +
            .document(&input.default_document_map);
          44  +
    }
          45  +
    {
          46  +
        object
          47  +
            .key("defaultDocumentString")
          48  +
            .document(&input.default_document_string);
          49  +
    }
          50  +
    if input.default_double != 1.0 {
          51  +
        object.key("defaultDouble").number(
          52  +
            #[allow(clippy::useless_conversion)]
          53  +
            ::aws_smithy_types::Number::Float((input.default_double).into()),
          54  +
        );
          55  +
    }
          56  +
    {
          57  +
        object
          58  +
            .key("defaultEnum")
          59  +
            .string(input.default_enum.as_str());
          60  +
    }
          61  +
    if input.default_float != 1.0 {
          62  +
        object.key("defaultFloat").number(
          63  +
            #[allow(clippy::useless_conversion)]
          64  +
            ::aws_smithy_types::Number::Float((input.default_float).into()),
          65  +
        );
          66  +
    }
          67  +
    if input.default_int_enum != 1 {
          68  +
        object.key("defaultIntEnum").number(
          69  +
            #[allow(clippy::useless_conversion)]
          70  +
            ::aws_smithy_types::Number::NegInt((input.default_int_enum).into()),
          71  +
        );
          72  +
    }
          73  +
    if input.default_integer != 10 {
          74  +
        object.key("defaultInteger").number(
          75  +
            #[allow(clippy::useless_conversion)]
          76  +
            ::aws_smithy_types::Number::NegInt((input.default_integer).into()),
          77  +
        );
          78  +
    }
          79  +
    {
          80  +
        let mut array_1 = object.key("defaultList").start_array();
          81  +
        for item_2 in &input.default_list {
          82  +
            {
          83  +
                array_1.value().string(item_2.as_str());
          84  +
            }
          85  +
        }
          86  +
        array_1.finish();
          87  +
    }
          88  +
    if input.default_long != 100 {
          89  +
        object.key("defaultLong").number(
          90  +
            #[allow(clippy::useless_conversion)]
          91  +
            ::aws_smithy_types::Number::NegInt((input.default_long).into()),
          92  +
        );
          93  +
    }
          94  +
    {
          95  +
        #[allow(unused_mut)]
          96  +
        let mut object_3 = object.key("defaultMap").start_object();
          97  +
        for (key_4, value_5) in &input.default_map {
          98  +
            {
          99  +
                object_3.key(key_4.as_str()).string(value_5.as_str());
         100  +
            }
         101  +
        }
         102  +
        object_3.finish();
         103  +
    }
         104  +
    if let Some(var_6) = &input.default_null_document {
         105  +
        object.key("defaultNullDocument").document(var_6);
         106  +
    }
         107  +
    if input.default_short != 1 {
         108  +
        object.key("defaultShort").number(
         109  +
            #[allow(clippy::useless_conversion)]
         110  +
            ::aws_smithy_types::Number::NegInt((input.default_short).into()),
         111  +
        );
         112  +
    }
         113  +
    {
         114  +
        object
         115  +
            .key("defaultString")
         116  +
            .string(input.default_string.as_str());
         117  +
    }
         118  +
    {
         119  +
        object.key("defaultTimestamp").date_time(
         120  +
            &input.default_timestamp,
         121  +
            ::aws_smithy_types::date_time::Format::EpochSeconds,
         122  +
        )?;
         123  +
    }
         124  +
    {
         125  +
        object
         126  +
            .key("emptyBlob")
         127  +
            .string_unchecked(&::aws_smithy_types::base64::encode(&input.empty_blob));
         128  +
    }
         129  +
    {
         130  +
        object
         131  +
            .key("emptyString")
         132  +
            .string(input.empty_string.as_str());
         133  +
    }
         134  +
    if input.false_boolean {
         135  +
        object.key("falseBoolean").boolean(input.false_boolean);
         136  +
    }
         137  +
    if input.zero_byte != 0 {
         138  +
        object.key("zeroByte").number(
         139  +
            #[allow(clippy::useless_conversion)]
         140  +
            ::aws_smithy_types::Number::NegInt((input.zero_byte).into()),
         141  +
        );
         142  +
    }
         143  +
    if input.zero_double != 0.0 {
         144  +
        object.key("zeroDouble").number(
         145  +
            #[allow(clippy::useless_conversion)]
         146  +
            ::aws_smithy_types::Number::Float((input.zero_double).into()),
         147  +
        );
         148  +
    }
         149  +
    if input.zero_float != 0.0 {
         150  +
        object.key("zeroFloat").number(
         151  +
            #[allow(clippy::useless_conversion)]
         152  +
            ::aws_smithy_types::Number::Float((input.zero_float).into()),
         153  +
        );
         154  +
    }
         155  +
    if input.zero_integer != 0 {
         156  +
        object.key("zeroInteger").number(
         157  +
            #[allow(clippy::useless_conversion)]
         158  +
            ::aws_smithy_types::Number::NegInt((input.zero_integer).into()),
         159  +
        );
         160  +
    }
         161  +
    if input.zero_long != 0 {
         162  +
        object.key("zeroLong").number(
         163  +
            #[allow(clippy::useless_conversion)]
         164  +
            ::aws_smithy_types::Number::NegInt((input.zero_long).into()),
         165  +
        );
         166  +
    }
         167  +
    if input.zero_short != 0 {
         168  +
        object.key("zeroShort").number(
         169  +
            #[allow(clippy::useless_conversion)]
         170  +
            ::aws_smithy_types::Number::NegInt((input.zero_short).into()),
         171  +
        );
         172  +
    }
         173  +
    Ok(())
         174  +
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_operation_with_nested_structure.rs

Renamed from tmp-codegen-diff/codegen-server-test-python/rest_json_extras/rust-server-codegen-python/src/protocol_serde/shape_malformed_content_type_with_body2.rs

@@ -1,1 +173,172 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[allow(clippy::unnecessary_wraps)]
    3         -
pub async fn de_malformed_content_type_with_body2_http_request<B>(
           3  +
pub async fn de_operation_with_nested_structure_http_request<B>(
    4      4   
    #[allow(unused_variables)] request: ::http::Request<B>,
    5      5   
) -> std::result::Result<
    6         -
    crate::input::MalformedContentTypeWithBody2Input,
           6  +
    crate::input::OperationWithNestedStructureInput,
    7      7   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection,
    8      8   
>
    9      9   
where
   10     10   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
   11     11   
    B::Data: Send,
   12     12   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
   13     13   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
   14     14   
{
   15     15   
    Ok({
   16     16   
        #[allow(unused_mut)]
   17     17   
        let mut input =
   18         -
            crate::input::malformed_content_type_with_body2_input_internal::Builder::default();
          18  +
            crate::input::operation_with_nested_structure_input_internal::Builder::default();
   19     19   
        #[allow(unused_variables)]
   20     20   
        let ::aws_smithy_runtime_api::http::RequestParts {
   21     21   
            uri, headers, body, ..
   22     22   
        } = ::aws_smithy_runtime_api::http::Request::try_from(request)?.into_parts();
   23     23   
        let bytes = ::hyper::body::to_bytes(body).await?;
   24     24   
        if !bytes.is_empty() {
   25     25   
            ::aws_smithy_http_server::protocol::content_type_header_classifier_smithy(
   26     26   
                &headers,
   27     27   
                Some("application/json"),
   28     28   
            )?;
   29         -
            input = crate::protocol_serde::shape_malformed_content_type_with_body2::de_malformed_content_type_with_body2(bytes.as_ref(), input)?;
          29  +
            input = crate::protocol_serde::shape_operation_with_nested_structure::de_operation_with_nested_structure(bytes.as_ref(), input)?;
   30     30   
        }
   31         -
        input.build()
          31  +
        input.build()?
   32     32   
    })
   33     33   
}
   34     34   
   35     35   
#[allow(clippy::unnecessary_wraps)]
   36         -
pub fn ser_malformed_content_type_with_body2_http_response(
   37         -
    #[allow(unused_variables)] output: crate::output::MalformedContentTypeWithBody2Output,
          36  +
pub fn ser_operation_with_nested_structure_http_response(
          37  +
    #[allow(unused_variables)] output: crate::output::OperationWithNestedStructureOutput,
   38     38   
) -> std::result::Result<
   39     39   
    ::aws_smithy_http_server::response::Response,
   40     40   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::ResponseRejection,
   41     41   
> {
   42     42   
    Ok({
   43     43   
        #[allow(unused_mut)]
   44     44   
        let mut builder = ::http::Response::builder();
   45     45   
        builder = ::aws_smithy_http::header::set_response_header_if_absent(
   46     46   
            builder,
   47     47   
            ::http::header::CONTENT_TYPE,
   48     48   
            "application/json",
   49     49   
        );
   50     50   
        let http_status: u16 = 200;
   51     51   
        builder = builder.status(http_status);
   52         -
        let payload = "";
          52  +
        let payload =
          53  +
            crate::protocol_serde::shape_operation_with_nested_structure_output::ser_operation_with_nested_structure_output_output_output(&output)?
          54  +
        ;
   53     55   
        let content_length = payload.len();
   54     56   
        builder = ::aws_smithy_http::header::set_response_header_if_absent(
   55     57   
            builder,
   56     58   
            ::http::header::CONTENT_LENGTH,
   57     59   
            content_length,
   58     60   
        );
   59     61   
        let body = ::aws_smithy_http_server::body::to_boxed(payload);
   60     62   
        builder.body(body)?
   61     63   
    })
   62     64   
}
   63     65   
   64     66   
#[allow(clippy::unnecessary_wraps)]
   65         -
pub fn ser_malformed_content_type_with_body2_http_error(
   66         -
    error: &crate::error::MalformedContentTypeWithBody2Error,
          67  +
pub fn ser_operation_with_nested_structure_http_error(
          68  +
    error: &crate::error::OperationWithNestedStructureError,
   67     69   
) -> std::result::Result<
   68     70   
    ::aws_smithy_http_server::response::Response,
   69     71   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::ResponseRejection,
   70     72   
> {
   71     73   
    Ok({
   72     74   
        match error {
   73         -
            crate::error::MalformedContentTypeWithBody2Error::ExtraError(output) => {
   74         -
                let payload =
   75         -
                    crate::protocol_serde::shape_extra_error::ser_extra_error_error(output)?;
          75  +
            crate::error::OperationWithNestedStructureError::ValidationException(output) => {
          76  +
                let payload = crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(output)?;
   76     77   
                #[allow(unused_mut)]
   77     78   
                let mut builder = ::http::Response::builder();
   78     79   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
   79     80   
                    builder,
   80     81   
                    ::http::header::CONTENT_TYPE,
   81     82   
                    "application/json",
   82     83   
                );
   83     84   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
   84     85   
                    builder,
   85     86   
                    http::header::HeaderName::from_static("x-amzn-errortype"),
   86         -
                    "ExtraError",
          87  +
                    "ValidationException",
   87     88   
                );
   88     89   
                let content_length = payload.len();
   89     90   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
   90     91   
                    builder,
   91     92   
                    ::http::header::CONTENT_LENGTH,
   92     93   
                    content_length,
   93     94   
                );
   94     95   
                builder
   95         -
                    .status(500)
          96  +
                    .status(400)
   96     97   
                    .body(::aws_smithy_http_server::body::to_boxed(payload))?
   97     98   
            }
   98         -
            crate::error::MalformedContentTypeWithBody2Error::InternalServerError(output) => {
          99  +
            crate::error::OperationWithNestedStructureError::InternalServerError(output) => {
   99    100   
                let payload = crate::protocol_serde::shape_internal_server_error::ser_internal_server_error_error(output)?;
  100    101   
                #[allow(unused_mut)]
  101    102   
                let mut builder = ::http::Response::builder();
  102    103   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
  103    104   
                    builder,
  104    105   
                    ::http::header::CONTENT_TYPE,
  105    106   
                    "application/json",
  106    107   
                );
  107    108   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
  108    109   
                    builder,
  109    110   
                    http::header::HeaderName::from_static("x-amzn-errortype"),
  110    111   
                    "InternalServerError",
  111    112   
                );
  112    113   
                let content_length = payload.len();
  113    114   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
  114    115   
                    builder,
  115    116   
                    ::http::header::CONTENT_LENGTH,
  116    117   
                    content_length,
  117    118   
                );
  118    119   
                builder
  119    120   
                    .status(500)
  120    121   
                    .body(::aws_smithy_http_server::body::to_boxed(payload))?
  121    122   
            }
  122    123   
        }
  123    124   
    })
  124    125   
}
  125    126   
  126         -
pub(crate) fn de_malformed_content_type_with_body2(
         127  +
pub(crate) fn de_operation_with_nested_structure(
  127    128   
    value: &[u8],
  128         -
    mut builder: crate::input::malformed_content_type_with_body2_input_internal::Builder,
         129  +
    mut builder: crate::input::operation_with_nested_structure_input_internal::Builder,
  129    130   
) -> Result<
  130         -
    crate::input::malformed_content_type_with_body2_input_internal::Builder,
         131  +
    crate::input::operation_with_nested_structure_input_internal::Builder,
  131    132   
    ::aws_smithy_json::deserialize::error::DeserializeError,
  132    133   
> {
  133    134   
    let mut tokens_owned =
  134    135   
        ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value))
  135    136   
            .peekable();
  136    137   
    let tokens = &mut tokens_owned;
  137    138   
    ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
  138    139   
    loop {
  139    140   
        match tokens.next().transpose()? {
  140    141   
            Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
  141    142   
            Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => {
  142    143   
                match key.to_unescaped()?.as_ref() {
  143         -
                    "salutation" => {
  144         -
                        builder = builder.set_salutation(
  145         -
                            ::aws_smithy_json::deserialize::token::expect_string_or_null(
  146         -
                                tokens.next(),
  147         -
                            )?
  148         -
                            .map(|s| s.to_unescaped().map(|u| u.into_owned()))
  149         -
                            .transpose()?,
  150         -
                        );
         144  +
                    "topLevel" => {
         145  +
                        if let Some(v) =
         146  +
                            crate::protocol_serde::shape_top_level::de_top_level(tokens)?
         147  +
                        {
         148  +
                            builder = builder.set_top_level(v);
         149  +
                        }
  151    150   
                    }
  152    151   
                    _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
  153    152   
                }
  154    153   
            }
  155    154   
            other => {
  156    155   
                return Err(
  157    156   
                    ::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
  158    157   
                        "expected object key or end object, found: {:?}",
  159    158   
                        other
  160    159   
                    )),

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_operation_with_nested_structure_output.rs

@@ -0,1 +0,48 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub fn ser_operation_with_nested_structure_output_output_output(
           3  +
    value: &crate::output::OperationWithNestedStructureOutput,
           4  +
) -> Result<String, ::aws_smithy_types::error::operation::SerializationError> {
           5  +
    let mut out = String::new();
           6  +
    let mut object = ::aws_smithy_json::serialize::JsonObjectWriter::new(&mut out);
           7  +
    crate::protocol_serde::shape_operation_with_nested_structure_output::ser_operation_with_nested_structure_output_output(&mut object, value)?;
           8  +
    object.finish();
           9  +
    Ok(out)
          10  +
}
          11  +
          12  +
pub fn ser_operation_with_nested_structure_output_output(
          13  +
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
          14  +
    input: &crate::output::OperationWithNestedStructureOutput,
          15  +
) -> Result<(), ::aws_smithy_types::error::operation::SerializationError> {
          16  +
    {
          17  +
        #[allow(unused_mut)]
          18  +
        let mut object_1 = object.key("dialog").start_object();
          19  +
        crate::protocol_serde::shape_dialog::ser_dialog(&mut object_1, &input.dialog)?;
          20  +
        object_1.finish();
          21  +
    }
          22  +
    {
          23  +
        let mut array_2 = object.key("dialogList").start_array();
          24  +
        for item_3 in &input.dialog_list {
          25  +
            {
          26  +
                #[allow(unused_mut)]
          27  +
                let mut object_4 = array_2.value().start_object();
          28  +
                crate::protocol_serde::shape_dialog::ser_dialog(&mut object_4, item_3)?;
          29  +
                object_4.finish();
          30  +
            }
          31  +
        }
          32  +
        array_2.finish();
          33  +
    }
          34  +
    {
          35  +
        #[allow(unused_mut)]
          36  +
        let mut object_5 = object.key("dialogMap").start_object();
          37  +
        for (key_6, value_7) in &input.dialog_map {
          38  +
            {
          39  +
                #[allow(unused_mut)]
          40  +
                let mut object_8 = object_5.key(key_6.as_str()).start_object();
          41  +
                crate::protocol_serde::shape_dialog::ser_dialog(&mut object_8, value_7)?;
          42  +
                object_8.finish();
          43  +
            }
          44  +
        }
          45  +
        object_5.finish();
          46  +
    }
          47  +
    Ok(())
          48  +
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_test_no_input_no_payload.rs

Renamed from tmp-codegen-diff/codegen-server-test-python/rest_json_extras/rust-server-codegen-python/src/protocol_serde/shape_http_payload_traits2.rs

@@ -1,1 +143,118 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[allow(clippy::unnecessary_wraps)]
    3         -
pub async fn de_http_payload_traits2_http_request<B>(
           3  +
pub async fn de_test_no_input_no_payload_http_request<B>(
    4      4   
    #[allow(unused_variables)] request: ::http::Request<B>,
    5      5   
) -> std::result::Result<
    6         -
    crate::input::HttpPayloadTraits2Input,
           6  +
    crate::input::TestNoInputNoPayloadInput,
    7      7   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection,
    8      8   
>
    9      9   
where
   10     10   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
   11     11   
    B::Data: Send,
   12     12   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
   13     13   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
   14     14   
{
   15     15   
    Ok({
   16     16   
        #[allow(unused_mut)]
   17         -
        let mut input = crate::input::http_payload_traits2_input_internal::Builder::default();
          17  +
        let mut input = crate::input::test_no_input_no_payload_input_internal::Builder::default();
   18     18   
        #[allow(unused_variables)]
   19     19   
        let ::aws_smithy_runtime_api::http::RequestParts {
   20     20   
            uri, headers, body, ..
   21     21   
        } = ::aws_smithy_runtime_api::http::Request::try_from(request)?.into_parts();
   22         -
        if let Some(value) = {
   23         -
            let bytes = ::hyper::body::to_bytes(body).await?;
   24         -
   25         -
            crate::protocol_serde::shape_http_payload_traits2_input::de_blob_payload(&bytes)?
   26         -
        } {
   27         -
            input = input.set_blob(Some(value))
   28         -
        }
   29         -
        if let Some(value) =
   30         -
            crate::protocol_serde::shape_http_payload_traits2_input::de_foo_header(&headers)?
   31         -
        {
   32         -
            input = input.set_foo(Some(value))
   33         -
        }
          22  +
        ::aws_smithy_http_server::protocol::content_type_header_classifier_smithy(&headers, None)?;
   34     23   
        input.build()
   35     24   
    })
   36     25   
}
   37     26   
   38     27   
#[allow(clippy::unnecessary_wraps)]
   39         -
pub fn ser_http_payload_traits2_http_response(
   40         -
    #[allow(unused_variables)] output: crate::output::HttpPayloadTraits2Output,
          28  +
pub fn ser_test_no_input_no_payload_http_response(
          29  +
    #[allow(unused_variables)] output: crate::output::TestNoInputNoPayloadOutput,
   41     30   
) -> std::result::Result<
   42     31   
    ::aws_smithy_http_server::response::Response,
   43     32   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::ResponseRejection,
   44     33   
> {
   45     34   
    Ok({
   46     35   
        #[allow(unused_mut)]
   47     36   
        let mut builder = ::http::Response::builder();
   48         -
        builder =
   49         -
            crate::protocol_serde::shape_http_payload_traits2::ser_http_payload_traits2_headers(
   50         -
                &output, builder,
   51         -
            )?;
          37  +
        builder = crate::protocol_serde::shape_test_no_input_no_payload::ser_test_no_input_no_payload_headers(&output, builder)?;
          38  +
        builder = ::aws_smithy_http::header::set_response_header_if_absent(
          39  +
            builder,
          40  +
            ::http::header::CONTENT_TYPE,
          41  +
            "application/json",
          42  +
        );
   52     43   
        let http_status: u16 = 200;
   53     44   
        builder = builder.status(http_status);
   54     45   
        let payload =
   55         -
            crate::protocol_serde::shape_http_payload_traits2_output::ser_blob_http_payload(
   56         -
                output.blob,
   57         -
            )?;
          46  +
            crate::protocol_serde::shape_test_no_input_no_payload_output::ser_test_no_input_no_payload_output_output_output(&output)?
          47  +
        ;
   58     48   
        let content_length = payload.len();
   59     49   
        builder = ::aws_smithy_http::header::set_response_header_if_absent(
   60     50   
            builder,
   61     51   
            ::http::header::CONTENT_LENGTH,
   62     52   
            content_length,
   63     53   
        );
   64     54   
        let body = ::aws_smithy_http_server::body::to_boxed(payload);
   65     55   
        builder.body(body)?
   66     56   
    })
   67     57   
}
   68     58   
   69     59   
#[allow(clippy::unnecessary_wraps)]
   70         -
pub fn ser_http_payload_traits2_http_error(
   71         -
    error: &crate::error::HttpPayloadTraits2Error,
          60  +
pub fn ser_test_no_input_no_payload_http_error(
          61  +
    error: &crate::error::TestNoInputNoPayloadError,
   72     62   
) -> std::result::Result<
   73     63   
    ::aws_smithy_http_server::response::Response,
   74     64   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::ResponseRejection,
   75     65   
> {
   76     66   
    Ok({
   77     67   
        match error {
   78         -
            crate::error::HttpPayloadTraits2Error::ExtraError(output) => {
   79         -
                let payload =
   80         -
                    crate::protocol_serde::shape_extra_error::ser_extra_error_error(output)?;
          68  +
            crate::error::TestNoInputNoPayloadError::InternalServerError(output) => {
          69  +
                let payload = crate::protocol_serde::shape_internal_server_error::ser_internal_server_error_error(output)?;
   81     70   
                #[allow(unused_mut)]
   82     71   
                let mut builder = ::http::Response::builder();
   83     72   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
   84     73   
                    builder,
   85         -
                    http::header::HeaderName::from_static("x-amzn-errortype"),
   86         -
                    "ExtraError",
          74  +
                    ::http::header::CONTENT_TYPE,
          75  +
                    "application/json",
   87     76   
                );
   88         -
                let content_length = payload.len();
   89         -
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
   90         -
                    builder,
   91         -
                    ::http::header::CONTENT_LENGTH,
   92         -
                    content_length,
   93         -
                );
   94         -
                builder
   95         -
                    .status(500)
   96         -
                    .body(::aws_smithy_http_server::body::to_boxed(payload))?
   97         -
            }
   98         -
            crate::error::HttpPayloadTraits2Error::InternalServerError(output) => {
   99         -
                let payload = crate::protocol_serde::shape_internal_server_error::ser_internal_server_error_error(output)?;
  100         -
                #[allow(unused_mut)]
  101         -
                let mut builder = ::http::Response::builder();
  102     77   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
  103     78   
                    builder,
  104     79   
                    http::header::HeaderName::from_static("x-amzn-errortype"),
  105     80   
                    "InternalServerError",
  106     81   
                );
  107     82   
                let content_length = payload.len();
  108     83   
                builder = ::aws_smithy_http::header::set_response_header_if_absent(
  109     84   
                    builder,
  110     85   
                    ::http::header::CONTENT_LENGTH,
  111     86   
                    content_length,
  112     87   
                );
  113     88   
                builder
  114     89   
                    .status(500)
  115     90   
                    .body(::aws_smithy_http_server::body::to_boxed(payload))?
  116     91   
            }
  117     92   
        }
  118     93   
    })
  119     94   
}
  120     95   
  121         -
pub fn ser_http_payload_traits2_headers(
  122         -
    input: &crate::output::HttpPayloadTraits2Output,
          96  +
pub fn ser_test_no_input_no_payload_headers(
          97  +
    input: &crate::output::TestNoInputNoPayloadOutput,
  123     98   
    mut builder: ::http::response::Builder,
  124     99   
) -> std::result::Result<::http::response::Builder, ::aws_smithy_types::error::operation::BuildError>
  125    100   
{
  126         -
    if let ::std::option::Option::Some(inner_1) = &input.foo {
         101  +
    if let ::std::option::Option::Some(inner_1) = &input.test_id {
  127    102   
        let formatted_2 = inner_1.as_str();
  128    103   
        if !formatted_2.is_empty() {
  129    104   
            let header_value = formatted_2;
  130    105   
            let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
  131    106   
                ::aws_smithy_types::error::operation::BuildError::invalid_field(
  132         -
                    "foo",
         107  +
                    "test_id",
  133    108   
                    format!(
  134    109   
                        "`{}` cannot be used as a header value: {}",
  135    110   
                        &header_value, err
  136    111   
                    ),
  137    112   
                )
  138    113   
            })?;
  139         -
            builder = builder.header("X-Foo", header_value);
         114  +
            builder = builder.header("X-Amz-Test-Id", header_value);
  140    115   
        }
  141    116   
    }
  142    117   
    Ok(builder)
  143    118   
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_test_no_input_no_payload_output.rs

@@ -0,1 +0,17 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub fn ser_test_no_input_no_payload_output_output_output(
           3  +
    value: &crate::output::TestNoInputNoPayloadOutput,
           4  +
) -> Result<String, ::aws_smithy_types::error::operation::SerializationError> {
           5  +
    let mut out = String::new();
           6  +
    let mut object = ::aws_smithy_json::serialize::JsonObjectWriter::new(&mut out);
           7  +
    crate::protocol_serde::shape_test_no_input_no_payload_output::ser_test_no_input_no_payload_output_output(&mut object, value)?;
           8  +
    object.finish();
           9  +
    Ok(out)
          10  +
}
          11  +
          12  +
pub fn ser_test_no_input_no_payload_output_output(
          13  +
    #[allow(unused_variables)] object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
          14  +
    #[allow(unused_variables)] input: &crate::output::TestNoInputNoPayloadOutput,
          15  +
) -> Result<(), ::aws_smithy_types::error::operation::SerializationError> {
          16  +
    Ok(())
          17  +
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_test_string_list.rs

@@ -0,1 +0,52 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub(crate) fn de_test_string_list<'a, I>(
           3  +
    tokens: &mut ::std::iter::Peekable<I>,
           4  +
) -> Result<
           5  +
    Option<::std::vec::Vec<::std::string::String>>,
           6  +
    ::aws_smithy_json::deserialize::error::DeserializeError,
           7  +
>
           8  +
where
           9  +
    I: Iterator<
          10  +
        Item = Result<
          11  +
            ::aws_smithy_json::deserialize::Token<'a>,
          12  +
            ::aws_smithy_json::deserialize::error::DeserializeError,
          13  +
        >,
          14  +
    >,
          15  +
{
          16  +
    match tokens.next().transpose()? {
          17  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
          18  +
        Some(::aws_smithy_json::deserialize::Token::StartArray { .. }) => {
          19  +
            let mut items = Vec::new();
          20  +
            loop {
          21  +
                match tokens.peek() {
          22  +
                    Some(Ok(::aws_smithy_json::deserialize::Token::EndArray { .. })) => {
          23  +
                        tokens.next().transpose().unwrap();
          24  +
                        break;
          25  +
                    }
          26  +
                    _ => {
          27  +
                        let value = ::aws_smithy_json::deserialize::token::expect_string_or_null(
          28  +
                            tokens.next(),
          29  +
                        )?
          30  +
                        .map(|s| s.to_unescaped().map(|u| u.into_owned()))
          31  +
                        .transpose()?;
          32  +
                        if let Some(value) = value {
          33  +
                            items.push(value);
          34  +
                        } else {
          35  +
                            return Err(
          36  +
                                ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          37  +
                                    "dense list cannot contain null values",
          38  +
                                ),
          39  +
                            );
          40  +
                        }
          41  +
                    }
          42  +
                }
          43  +
            }
          44  +
            Ok(Some(items))
          45  +
        }
          46  +
        _ => Err(
          47  +
            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          48  +
                "expected start array or null",
          49  +
            ),
          50  +
        ),
          51  +
    }
          52  +
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_test_string_map.rs

@@ -0,1 +0,60 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub(crate) fn de_test_string_map<'a, I>(
           3  +
    tokens: &mut ::std::iter::Peekable<I>,
           4  +
) -> Result<
           5  +
    Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
           6  +
    ::aws_smithy_json::deserialize::error::DeserializeError,
           7  +
>
           8  +
where
           9  +
    I: Iterator<
          10  +
        Item = Result<
          11  +
            ::aws_smithy_json::deserialize::Token<'a>,
          12  +
            ::aws_smithy_json::deserialize::error::DeserializeError,
          13  +
        >,
          14  +
    >,
          15  +
{
          16  +
    match tokens.next().transpose()? {
          17  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
          18  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
          19  +
            let mut map = ::std::collections::HashMap::new();
          20  +
            loop {
          21  +
                match tokens.next().transpose()? {
          22  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
          23  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => {
          24  +
                        let key = key.to_unescaped().map(|u| u.into_owned())?;
          25  +
                        let value = ::aws_smithy_json::deserialize::token::expect_string_or_null(
          26  +
                            tokens.next(),
          27  +
                        )?
          28  +
                        .map(|s| s.to_unescaped().map(|u| u.into_owned()))
          29  +
                        .transpose()?;
          30  +
                        match value {
          31  +
                            Some(value) => {
          32  +
                                map.insert(key, value);
          33  +
                            }
          34  +
                            None => {
          35  +
                                return Err(
          36  +
                                    ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          37  +
                                        "dense map cannot contain null values",
          38  +
                                    ),
          39  +
                                )
          40  +
                            }
          41  +
                        }
          42  +
                    }
          43  +
                    other => {
          44  +
                        return Err(
          45  +
                            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          46  +
                                format!("expected object key or end object, found: {:?}", other),
          47  +
                            ),
          48  +
                        )
          49  +
                    }
          50  +
                }
          51  +
            }
          52  +
            Ok(Some(map))
          53  +
        }
          54  +
        _ => Err(
          55  +
            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          56  +
                "expected start object or null",
          57  +
            ),
          58  +
        ),
          59  +
    }
          60  +
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/protocol_serde/shape_top_level.rs

@@ -0,1 +0,67 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
pub(crate) fn de_top_level<'a, I>(
           3  +
    tokens: &mut ::std::iter::Peekable<I>,
           4  +
) -> Result<
           5  +
    Option<crate::model::top_level_internal::Builder>,
           6  +
    ::aws_smithy_json::deserialize::error::DeserializeError,
           7  +
>
           8  +
where
           9  +
    I: Iterator<
          10  +
        Item = Result<
          11  +
            ::aws_smithy_json::deserialize::Token<'a>,
          12  +
            ::aws_smithy_json::deserialize::error::DeserializeError,
          13  +
        >,
          14  +
    >,
          15  +
{
          16  +
    match tokens.next().transpose()? {
          17  +
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
          18  +
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
          19  +
            #[allow(unused_mut)]
          20  +
            let mut builder = crate::model::top_level_internal::Builder::default();
          21  +
            loop {
          22  +
                match tokens.next().transpose()? {
          23  +
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
          24  +
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key
          25  +
                        .to_unescaped()?
          26  +
                        .as_ref()
          27  +
                    {
          28  +
                        "dialog" => {
          29  +
                            if let Some(v) = crate::protocol_serde::shape_dialog::de_dialog(tokens)?
          30  +
                            {
          31  +
                                builder = builder.set_dialog(v);
          32  +
                            }
          33  +
                        }
          34  +
                        "dialogList" => {
          35  +
                            if let Some(v) =
          36  +
                                crate::protocol_serde::shape_dialog_list::de_dialog_list(tokens)?
          37  +
                            {
          38  +
                                builder = builder.set_dialog_list(v);
          39  +
                            }
          40  +
                        }
          41  +
                        "dialogMap" => {
          42  +
                            if let Some(v) =
          43  +
                                crate::protocol_serde::shape_dialog_map::de_dialog_map(tokens)?
          44  +
                            {
          45  +
                                builder = builder.set_dialog_map(v);
          46  +
                            }
          47  +
                        }
          48  +
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
          49  +
                    },
          50  +
                    other => {
          51  +
                        return Err(
          52  +
                            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          53  +
                                format!("expected object key or end object, found: {:?}", other),
          54  +
                            ),
          55  +
                        )
          56  +
                    }
          57  +
                }
          58  +
            }
          59  +
            Ok(Some(builder))
          60  +
        }
          61  +
        _ => Err(
          62  +
            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
          63  +
                "expected start object or null",
          64  +
            ),
          65  +
        ),
          66  +
    }
          67  +
}

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/python_module_export.rs

@@ -1,1 +71,85 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[::pyo3::pymodule]
    3      3   
#[::pyo3(name = "rest_json")]
    4      4   
pub fn python_library(py: ::pyo3::Python<'_>, m: &::pyo3::types::PyModule) -> ::pyo3::PyResult<()> {
    5      5   
    let input = ::pyo3::types::PyModule::new(py, "input")?;
    6      6   
    let output = ::pyo3::types::PyModule::new(py, "output")?;
    7      7   
    let error = ::pyo3::types::PyModule::new(py, "error")?;
    8      8   
    error.add_class::<crate::error::InternalServerError>()?;
           9  +
    error.add_class::<crate::error::ValidationException>()?;
          10  +
    let model = ::pyo3::types::PyModule::new(py, "model")?;
          11  +
    model.add_class::<crate::model::ValidationExceptionField>()?;
          12  +
    output.add_class::<crate::output::OperationWithNestedStructureOutput>()?;
          13  +
    model.add_class::<crate::model::Dialog>()?;
          14  +
    model.add_class::<crate::model::Farewell>()?;
          15  +
    input.add_class::<crate::input::OperationWithNestedStructureInput>()?;
          16  +
    model.add_class::<crate::model::TopLevel>()?;
          17  +
    output.add_class::<crate::output::OperationWithDefaultsOutput>()?;
          18  +
    model.add_class::<crate::model::TestEnum>()?;
          19  +
    input.add_class::<crate::input::OperationWithDefaultsInput>()?;
          20  +
    model.add_class::<crate::model::ClientOptionalDefaults>()?;
          21  +
    model.add_class::<crate::model::Defaults>()?;
          22  +
    output.add_class::<crate::output::ContentTypeParametersOutput>()?;
          23  +
    input.add_class::<crate::input::ContentTypeParametersInput>()?;
    9     24   
    output.add_class::<crate::output::PutWithContentEncodingOutput>()?;
   10     25   
    input.add_class::<crate::input::PutWithContentEncodingInput>()?;
   11     26   
    output.add_class::<crate::output::FractionalSecondsOutput>()?;
   12     27   
    input.add_class::<crate::input::FractionalSecondsInput>()?;
   13     28   
    output.add_class::<crate::output::DatetimeOffsetsOutput>()?;
   14     29   
    input.add_class::<crate::input::DatetimeOffsetsInput>()?;
          30  +
    output.add_class::<crate::output::TestNoInputNoPayloadOutput>()?;
          31  +
    input.add_class::<crate::input::TestNoInputNoPayloadInput>()?;
   15     32   
    output.add_class::<crate::output::TestNoPayloadOutput>()?;
   16     33   
    input.add_class::<crate::input::TestNoPayloadInput>()?;
   17     34   
    output.add_class::<crate::output::TestPayloadBlobOutput>()?;
   18     35   
    input.add_class::<crate::input::TestPayloadBlobInput>()?;
   19     36   
    output.add_class::<crate::output::TestPayloadStructureOutput>()?;
   20         -
    let model = ::pyo3::types::PyModule::new(py, "model")?;
   21     37   
    model.add_class::<crate::model::PayloadConfig>()?;
   22     38   
    input.add_class::<crate::input::TestPayloadStructureInput>()?;
   23     39   
    output.add_class::<crate::output::TestBodyStructureOutput>()?;
   24     40   
    model.add_class::<crate::model::TestConfig>()?;
   25     41   
    input.add_class::<crate::input::TestBodyStructureInput>()?;
   26     42   
    output.add_class::<crate::output::MalformedAcceptWithGenericStringOutput>()?;
   27     43   
    input.add_class::<crate::input::MalformedAcceptWithGenericStringInput>()?;
   28     44   
    output.add_class::<crate::output::MalformedAcceptWithPayloadOutput>()?;
   29     45   
    input.add_class::<crate::input::MalformedAcceptWithPayloadInput>()?;
   30     46   
    output.add_class::<crate::output::MalformedAcceptWithBodyOutput>()?;
   31     47   
    input.add_class::<crate::input::MalformedAcceptWithBodyInput>()?;
   32     48   
    output.add_class::<crate::output::MalformedContentTypeWithGenericStringOutput>()?;
   33     49   
    input.add_class::<crate::input::MalformedContentTypeWithGenericStringInput>()?;
   34     50   
    output.add_class::<crate::output::MalformedContentTypeWithPayloadOutput>()?;
   35     51   
    input.add_class::<crate::input::MalformedContentTypeWithPayloadInput>()?;
   36     52   
    output.add_class::<crate::output::MalformedContentTypeWithBodyOutput>()?;
   37     53   
    input.add_class::<crate::input::MalformedContentTypeWithBodyInput>()?;
   38     54   
    output.add_class::<crate::output::MalformedContentTypeWithoutBodyOutput>()?;
   39     55   
    input.add_class::<crate::input::MalformedContentTypeWithoutBodyInput>()?;
   40         -
    error.add_class::<crate::error::ValidationException>()?;
   41         -
    model.add_class::<crate::model::ValidationExceptionField>()?;
   42     56   
    output.add_class::<crate::output::MalformedTimestampBodyHttpDateOutput>()?;
   43     57   
    input.add_class::<crate::input::MalformedTimestampBodyHttpDateInput>()?;
   44     58   
    output.add_class::<crate::output::MalformedTimestampBodyDateTimeOutput>()?;
   45     59   
    input.add_class::<crate::input::MalformedTimestampBodyDateTimeInput>()?;
   46     60   
    output.add_class::<crate::output::MalformedTimestampBodyDefaultOutput>()?;
   47     61   
    input.add_class::<crate::input::MalformedTimestampBodyDefaultInput>()?;
   48     62   
    output.add_class::<crate::output::MalformedTimestampHeaderEpochOutput>()?;
   49     63   
    input.add_class::<crate::input::MalformedTimestampHeaderEpochInput>()?;
   50     64   
    output.add_class::<crate::output::MalformedTimestampHeaderDateTimeOutput>()?;
   51     65   
    input.add_class::<crate::input::MalformedTimestampHeaderDateTimeInput>()?;

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/python_operation_adaptor.rs

@@ -1,1 +31,196 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/// Python handler for operation `OperationWithNestedStructure`.
           3  +
pub(crate) async fn operation_with_nested_structure(
           4  +
    input: crate::input::OperationWithNestedStructureInput,
           5  +
    state: ::aws_smithy_http_server::Extension<::aws_smithy_http_server_python::context::PyContext>,
           6  +
    handler: ::aws_smithy_http_server_python::PyHandler,
           7  +
) -> std::result::Result<
           8  +
    crate::output::OperationWithNestedStructureOutput,
           9  +
    crate::error::OperationWithNestedStructureError,
          10  +
> {
          11  +
    // Async block used to run the handler and catch any Python error.
          12  +
    let result = if handler.is_coroutine {
          13  +
        ::tracing::trace!(
          14  +
            name = "operation_with_nested_structure",
          15  +
            "executing python handler coroutine"
          16  +
        );
          17  +
        let result = ::pyo3::Python::with_gil(|py| {
          18  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
          19  +
            let coroutine = if handler.args == 1 {
          20  +
                pyhandler.call1((input,))?
          21  +
            } else {
          22  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
          23  +
            };
          24  +
            ::pyo3_asyncio::tokio::into_future(coroutine)
          25  +
        })?;
          26  +
        result.await.and_then(|r| {
          27  +
            ::pyo3::Python::with_gil(|py| {
          28  +
                r.extract::<crate::output::OperationWithNestedStructureOutput>(py)
          29  +
            })
          30  +
        })
          31  +
    } else {
          32  +
        ::tracing::trace!(
          33  +
            name = "operation_with_nested_structure",
          34  +
            "executing python handler function"
          35  +
        );
          36  +
        ::pyo3::Python::with_gil(|py| {
          37  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
          38  +
            let output = if handler.args == 1 {
          39  +
                pyhandler.call1((input,))?
          40  +
            } else {
          41  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
          42  +
            };
          43  +
            output.extract::<crate::output::OperationWithNestedStructureOutput>()
          44  +
        })
          45  +
    };
          46  +
    // Catch and record a Python traceback.
          47  +
    result.map_err(|e| {
          48  +
        let rich_py_err =
          49  +
            ::aws_smithy_http_server_python::rich_py_err(::pyo3::Python::with_gil(|py| {
          50  +
                e.clone_ref(py)
          51  +
            }));
          52  +
        ::tracing::error!(error = ?rich_py_err, "handler error");
          53  +
        e.into()
          54  +
    })
          55  +
}
          56  +
          57  +
/// Python handler for operation `OperationWithDefaults`.
          58  +
pub(crate) async fn operation_with_defaults(
          59  +
    input: crate::input::OperationWithDefaultsInput,
          60  +
    state: ::aws_smithy_http_server::Extension<::aws_smithy_http_server_python::context::PyContext>,
          61  +
    handler: ::aws_smithy_http_server_python::PyHandler,
          62  +
) -> std::result::Result<
          63  +
    crate::output::OperationWithDefaultsOutput,
          64  +
    crate::error::OperationWithDefaultsError,
          65  +
> {
          66  +
    // Async block used to run the handler and catch any Python error.
          67  +
    let result = if handler.is_coroutine {
          68  +
        ::tracing::trace!(
          69  +
            name = "operation_with_defaults",
          70  +
            "executing python handler coroutine"
          71  +
        );
          72  +
        let result = ::pyo3::Python::with_gil(|py| {
          73  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
          74  +
            let coroutine = if handler.args == 1 {
          75  +
                pyhandler.call1((input,))?
          76  +
            } else {
          77  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
          78  +
            };
          79  +
            ::pyo3_asyncio::tokio::into_future(coroutine)
          80  +
        })?;
          81  +
        result.await.and_then(|r| {
          82  +
            ::pyo3::Python::with_gil(|py| {
          83  +
                r.extract::<crate::output::OperationWithDefaultsOutput>(py)
          84  +
            })
          85  +
        })
          86  +
    } else {
          87  +
        ::tracing::trace!(
          88  +
            name = "operation_with_defaults",
          89  +
            "executing python handler function"
          90  +
        );
          91  +
        ::pyo3::Python::with_gil(|py| {
          92  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
          93  +
            let output = if handler.args == 1 {
          94  +
                pyhandler.call1((input,))?
          95  +
            } else {
          96  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
          97  +
            };
          98  +
            output.extract::<crate::output::OperationWithDefaultsOutput>()
          99  +
        })
         100  +
    };
         101  +
    // Catch and record a Python traceback.
         102  +
    result.map_err(|e| {
         103  +
        let rich_py_err =
         104  +
            ::aws_smithy_http_server_python::rich_py_err(::pyo3::Python::with_gil(|py| {
         105  +
                e.clone_ref(py)
         106  +
            }));
         107  +
        ::tracing::error!(error = ?rich_py_err, "handler error");
         108  +
        e.into()
         109  +
    })
         110  +
}
         111  +
         112  +
/// Python handler for operation `ContentTypeParameters`.
         113  +
pub(crate) async fn content_type_parameters(
         114  +
    input: crate::input::ContentTypeParametersInput,
         115  +
    state: ::aws_smithy_http_server::Extension<::aws_smithy_http_server_python::context::PyContext>,
         116  +
    handler: ::aws_smithy_http_server_python::PyHandler,
         117  +
) -> std::result::Result<
         118  +
    crate::output::ContentTypeParametersOutput,
         119  +
    crate::error::ContentTypeParametersError,
         120  +
> {
         121  +
    // Async block used to run the handler and catch any Python error.
         122  +
    let result = if handler.is_coroutine {
         123  +
        ::tracing::trace!(
         124  +
            name = "content_type_parameters",
         125  +
            "executing python handler coroutine"
         126  +
        );
         127  +
        let result = ::pyo3::Python::with_gil(|py| {
         128  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
         129  +
            let coroutine = if handler.args == 1 {
         130  +
                pyhandler.call1((input,))?
         131  +
            } else {
         132  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
         133  +
            };
         134  +
            ::pyo3_asyncio::tokio::into_future(coroutine)
         135  +
        })?;
         136  +
        result.await.and_then(|r| {
         137  +
            ::pyo3::Python::with_gil(|py| {
         138  +
                r.extract::<crate::output::ContentTypeParametersOutput>(py)
         139  +
            })
         140  +
        })
         141  +
    } else {
         142  +
        ::tracing::trace!(
         143  +
            name = "content_type_parameters",
         144  +
            "executing python handler function"
         145  +
        );
         146  +
        ::pyo3::Python::with_gil(|py| {
         147  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
         148  +
            let output = if handler.args == 1 {
         149  +
                pyhandler.call1((input,))?
         150  +
            } else {
         151  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
         152  +
            };
         153  +
            output.extract::<crate::output::ContentTypeParametersOutput>()
         154  +
        })
         155  +
    };
         156  +
    // Catch and record a Python traceback.
         157  +
    result.map_err(|e| {
         158  +
        let rich_py_err =
         159  +
            ::aws_smithy_http_server_python::rich_py_err(::pyo3::Python::with_gil(|py| {
         160  +
                e.clone_ref(py)
         161  +
            }));
         162  +
        ::tracing::error!(error = ?rich_py_err, "handler error");
         163  +
        e.into()
         164  +
    })
         165  +
}
         166  +
    2    167   
/// Python handler for operation `PutWithContentEncoding`.
    3    168   
pub(crate) async fn put_with_content_encoding(
    4    169   
    input: crate::input::PutWithContentEncodingInput,
    5    170   
    state: ::aws_smithy_http_server::Extension<::aws_smithy_http_server_python::context::PyContext>,
    6    171   
    handler: ::aws_smithy_http_server_python::PyHandler,
    7    172   
) -> std::result::Result<
    8    173   
    crate::output::PutWithContentEncodingOutput,
    9    174   
    crate::error::PutWithContentEncodingError,
   10    175   
> {
   11    176   
    // Async block used to run the handler and catch any Python error.
@@ -128,293 +187,407 @@
  148    313   
    result.map_err(|e| {
  149    314   
        let rich_py_err =
  150    315   
            ::aws_smithy_http_server_python::rich_py_err(::pyo3::Python::with_gil(|py| {
  151    316   
                e.clone_ref(py)
  152    317   
            }));
  153    318   
        ::tracing::error!(error = ?rich_py_err, "handler error");
  154    319   
        e.into()
  155    320   
    })
  156    321   
}
  157    322   
         323  +
/// Python handler for operation `TestNoInputNoPayload`.
         324  +
pub(crate) async fn test_no_input_no_payload(
         325  +
    input: crate::input::TestNoInputNoPayloadInput,
         326  +
    state: ::aws_smithy_http_server::Extension<::aws_smithy_http_server_python::context::PyContext>,
         327  +
    handler: ::aws_smithy_http_server_python::PyHandler,
         328  +
) -> std::result::Result<
         329  +
    crate::output::TestNoInputNoPayloadOutput,
         330  +
    crate::error::TestNoInputNoPayloadError,
         331  +
> {
         332  +
    // Async block used to run the handler and catch any Python error.
         333  +
    let result = if handler.is_coroutine {
         334  +
        ::tracing::trace!(
         335  +
            name = "test_no_input_no_payload",
         336  +
            "executing python handler coroutine"
         337  +
        );
         338  +
        let result = ::pyo3::Python::with_gil(|py| {
         339  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
         340  +
            let coroutine = if handler.args == 1 {
         341  +
                pyhandler.call1((input,))?
         342  +
            } else {
         343  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
         344  +
            };
         345  +
            ::pyo3_asyncio::tokio::into_future(coroutine)
         346  +
        })?;
         347  +
        result.await.and_then(|r| {
         348  +
            ::pyo3::Python::with_gil(|py| {
         349  +
                r.extract::<crate::output::TestNoInputNoPayloadOutput>(py)
         350  +
            })
         351  +
        })
         352  +
    } else {
         353  +
        ::tracing::trace!(
         354  +
            name = "test_no_input_no_payload",
         355  +
            "executing python handler function"
         356  +
        );
         357  +
        ::pyo3::Python::with_gil(|py| {
         358  +
            let pyhandler: &::pyo3::types::PyFunction = handler.extract(py)?;
         359  +
            let output = if handler.args == 1 {
         360  +
                pyhandler.call1((input,))?
         361  +
            } else {
         362  +
                pyhandler.call1((input, ::pyo3::ToPyObject::to_object(&state.0, py)))?
         363  +
            };
         364  +
            output.extract::<crate::output::TestNoInputNoPayloadOutput>()
         365  +
        })
         366  +
    };
         367  +
    // Catch and record a Python traceback.
         368  +
    result.map_err(|e| {
         369  +
        let rich_py_err =
         370  +
            ::aws_smithy_http_server_python::rich_py_err(::pyo3::Python::with_gil(|py| {
         371  +
                e.clone_ref(py)
         372  +
            }));
         373  +
        ::tracing::error!(error = ?rich_py_err, "handler error");
         374  +
        e.into()
         375  +
    })
         376  +
}
         377  +
  158    378   
/// Python handler for operation `TestNoPayload`.
  159    379   
pub(crate) async fn test_no_payload(
  160    380   
    input: crate::input::TestNoPayloadInput,
  161    381   
    state: ::aws_smithy_http_server::Extension<::aws_smithy_http_server_python::context::PyContext>,
  162    382   
    handler: ::aws_smithy_http_server_python::PyHandler,
  163    383   
) -> std::result::Result<crate::output::TestNoPayloadOutput, crate::error::TestNoPayloadError> {
  164    384   
    // Async block used to run the handler and catch any Python error.
  165    385   
    let result = if handler.is_coroutine {
  166    386   
        ::tracing::trace!(
  167    387   
            name = "test_no_payload",

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/python_server_application.rs

@@ -19,19 +78,84 @@
   39     39   
///     raise NotImplementedError
   40     40   
///
   41     41   
/// # This example uses a constant query string parameters and a label.
   42     42   
/// # This simply tests that labels and query string parameters are
   43     43   
/// # compatible. The fixed query string parameter named "hello" should
   44     44   
/// # in no way conflict with the label, `{hello}`.
   45     45   
/// @app.constant_query_string
   46     46   
/// def constant_query_string(input: input::ConstantQueryStringInput, ctx: Context) -> output::ConstantQueryStringOutput:
   47     47   
///     raise NotImplementedError
   48     48   
///
          49  +
/// # The example tests how servers must support requests
          50  +
/// # containing a `Content-Type` header with parameters.
          51  +
/// @app.content_type_parameters
          52  +
/// def content_type_parameters(input: input::ContentTypeParametersInput, ctx: Context) -> output::ContentTypeParametersOutput:
          53  +
///     raise NotImplementedError
          54  +
///
   49     55   
/// @app.datetime_offsets
   50     56   
/// def datetime_offsets(input: input::DatetimeOffsetsInput, ctx: Context) -> output::DatetimeOffsetsOutput:
   51     57   
///     raise NotImplementedError
   52     58   
///
   53     59   
/// # This example serializes a document as part of the payload.
   54     60   
/// @app.document_type
   55     61   
/// def document_type(input: input::DocumentTypeInput, ctx: Context) -> output::DocumentTypeOutput:
   56     62   
///     raise NotImplementedError
   57     63   
///
   58     64   
/// # This example serializes documents as the value of maps.
@@ -380,386 +439,453 @@
  400    406   
/// def omits_null_serializes_empty_string(input: input::OmitsNullSerializesEmptyStringInput, ctx: Context) -> output::OmitsNullSerializesEmptyStringOutput:
  401    407   
///     raise NotImplementedError
  402    408   
///
  403    409   
/// # Omits serializing empty lists. Because empty strings are serilized as
  404    410   
/// # `Foo=`, empty lists cannot also be serialized as `Foo=` and instead
  405    411   
/// # must be omitted.
  406    412   
/// @app.omits_serializing_empty_lists
  407    413   
/// def omits_serializing_empty_lists(input: input::OmitsSerializingEmptyListsInput, ctx: Context) -> output::OmitsSerializingEmptyListsOutput:
  408    414   
///     raise NotImplementedError
  409    415   
///
         416  +
/// @app.operation_with_defaults
         417  +
/// def operation_with_defaults(input: input::OperationWithDefaultsInput, ctx: Context) -> output::OperationWithDefaultsOutput:
         418  +
///     raise NotImplementedError
         419  +
///
         420  +
/// @app.operation_with_nested_structure
         421  +
/// def operation_with_nested_structure(input: input::OperationWithNestedStructureInput, ctx: Context) -> output::OperationWithNestedStructureOutput:
         422  +
///     raise NotImplementedError
         423  +
///
  410    424   
/// # This operation defines a union with a Unit member.
  411    425   
/// @app.post_player_action
  412    426   
/// def post_player_action(input: input::PostPlayerActionInput, ctx: Context) -> output::PostPlayerActionOutput:
  413    427   
///     raise NotImplementedError
  414    428   
///
  415    429   
/// # This operation defines a union that uses jsonName on some members.
  416    430   
/// @app.post_union_with_json_name
  417    431   
/// def post_union_with_json_name(input: input::PostUnionWithJsonNameInput, ctx: Context) -> output::PostUnionWithJsonNameOutput:
  418    432   
///     raise NotImplementedError
  419    433   
///
@@ -460,474 +519,543 @@
  480    494   
/// # This example operation serializes a structure in the HTTP body.
  481    495   
/// #
  482    496   
/// # It should ensure Content-Type: application/json is
  483    497   
/// # used in all requests and that an "empty" body is
  484    498   
/// # an empty JSON document ({}).
  485    499   
/// #
  486    500   
/// @app.test_body_structure
  487    501   
/// def test_body_structure(input: input::TestBodyStructureInput, ctx: Context) -> output::TestBodyStructureOutput:
  488    502   
///     raise NotImplementedError
  489    503   
///
         504  +
/// # This example operation has no input and serializes a request without an HTTP body.
         505  +
/// #
         506  +
/// # These tests are to ensure we do not attach a body or related headers
         507  +
/// # (Content-Length, Content-Type) to operations that semantically
         508  +
/// # cannot produce an HTTP body.
         509  +
/// #
         510  +
/// @app.test_no_input_no_payload
         511  +
/// def test_no_input_no_payload(input: input::TestNoInputNoPayloadInput, ctx: Context) -> output::TestNoInputNoPayloadOutput:
         512  +
///     raise NotImplementedError
         513  +
///
  490    514   
/// # This example operation serializes a request without an HTTP body.
  491    515   
/// #
  492    516   
/// # These tests are to ensure we do not attach a body or related headers
  493    517   
/// # (Content-Length, Content-Type) to operations that semantically
  494    518   
/// # cannot produce an HTTP body.
  495    519   
/// #
  496    520   
/// @app.test_no_payload
  497    521   
/// def test_no_payload(input: input::TestNoPayloadInput, ctx: Context) -> output::TestNoPayloadOutput:
  498    522   
///     raise NotImplementedError
  499    523   
///
@@ -608,632 +667,707 @@
  628    652   
        let builder = builder.constant_query_string(move |input, state| {
  629    653   
            ::pyo3_asyncio::tokio::scope(
  630    654   
                constant_query_string_locals.clone(),
  631    655   
                crate::python_operation_adaptor::constant_query_string(
  632    656   
                    input,
  633    657   
                    state,
  634    658   
                    handler.clone(),
  635    659   
                ),
  636    660   
            )
  637    661   
        });
         662  +
        let content_type_parameters_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
         663  +
        let handler = self
         664  +
            .handlers
         665  +
            .get("content_type_parameters")
         666  +
            .expect("Python handler for operation `content_type_parameters` not found")
         667  +
            .clone();
         668  +
        let builder = builder.content_type_parameters(move |input, state| {
         669  +
            ::pyo3_asyncio::tokio::scope(
         670  +
                content_type_parameters_locals.clone(),
         671  +
                crate::python_operation_adaptor::content_type_parameters(
         672  +
                    input,
         673  +
                    state,
         674  +
                    handler.clone(),
         675  +
                ),
         676  +
            )
         677  +
        });
  638    678   
        let datetime_offsets_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
  639    679   
        let handler = self
  640    680   
            .handlers
  641    681   
            .get("datetime_offsets")
  642    682   
            .expect("Python handler for operation `datetime_offsets` not found")
  643    683   
            .clone();
  644    684   
        let builder = builder.datetime_offsets(move |input, state| {
  645    685   
            ::pyo3_asyncio::tokio::scope(
  646    686   
                datetime_offsets_locals.clone(),
  647    687   
                crate::python_operation_adaptor::datetime_offsets(input, state, handler.clone()),
@@ -1659,1699 +1718,1790 @@
 1679   1719   
        let builder = builder.omits_serializing_empty_lists(move |input, state| {
 1680   1720   
            ::pyo3_asyncio::tokio::scope(
 1681   1721   
                omits_serializing_empty_lists_locals.clone(),
 1682   1722   
                crate::python_operation_adaptor::omits_serializing_empty_lists(
 1683   1723   
                    input,
 1684   1724   
                    state,
 1685   1725   
                    handler.clone(),
 1686   1726   
                ),
 1687   1727   
            )
 1688   1728   
        });
        1729  +
        let operation_with_defaults_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
        1730  +
        let handler = self
        1731  +
            .handlers
        1732  +
            .get("operation_with_defaults")
        1733  +
            .expect("Python handler for operation `operation_with_defaults` not found")
        1734  +
            .clone();
        1735  +
        let builder = builder.operation_with_defaults(move |input, state| {
        1736  +
            ::pyo3_asyncio::tokio::scope(
        1737  +
                operation_with_defaults_locals.clone(),
        1738  +
                crate::python_operation_adaptor::operation_with_defaults(
        1739  +
                    input,
        1740  +
                    state,
        1741  +
                    handler.clone(),
        1742  +
                ),
        1743  +
            )
        1744  +
        });
        1745  +
        let operation_with_nested_structure_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
        1746  +
        let handler = self
        1747  +
            .handlers
        1748  +
            .get("operation_with_nested_structure")
        1749  +
            .expect("Python handler for operation `operation_with_nested_structure` not found")
        1750  +
            .clone();
        1751  +
        let builder = builder.operation_with_nested_structure(move |input, state| {
        1752  +
            ::pyo3_asyncio::tokio::scope(
        1753  +
                operation_with_nested_structure_locals.clone(),
        1754  +
                crate::python_operation_adaptor::operation_with_nested_structure(
        1755  +
                    input,
        1756  +
                    state,
        1757  +
                    handler.clone(),
        1758  +
                ),
        1759  +
            )
        1760  +
        });
 1689   1761   
        let post_player_action_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
 1690   1762   
        let handler = self
 1691   1763   
            .handlers
 1692   1764   
            .get("post_player_action")
 1693   1765   
            .expect("Python handler for operation `post_player_action` not found")
 1694   1766   
            .clone();
 1695   1767   
        let builder = builder.post_player_action(move |input, state| {
 1696   1768   
            ::pyo3_asyncio::tokio::scope(
 1697   1769   
                post_player_action_locals.clone(),
 1698   1770   
                crate::python_operation_adaptor::post_player_action(input, state, handler.clone()),
@@ -1855,1927 +1914,2002 @@
 1875   1947   
            .handlers
 1876   1948   
            .get("test_body_structure")
 1877   1949   
            .expect("Python handler for operation `test_body_structure` not found")
 1878   1950   
            .clone();
 1879   1951   
        let builder = builder.test_body_structure(move |input, state| {
 1880   1952   
            ::pyo3_asyncio::tokio::scope(
 1881   1953   
                test_body_structure_locals.clone(),
 1882   1954   
                crate::python_operation_adaptor::test_body_structure(input, state, handler.clone()),
 1883   1955   
            )
 1884   1956   
        });
        1957  +
        let test_no_input_no_payload_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
        1958  +
        let handler = self
        1959  +
            .handlers
        1960  +
            .get("test_no_input_no_payload")
        1961  +
            .expect("Python handler for operation `test_no_input_no_payload` not found")
        1962  +
            .clone();
        1963  +
        let builder = builder.test_no_input_no_payload(move |input, state| {
        1964  +
            ::pyo3_asyncio::tokio::scope(
        1965  +
                test_no_input_no_payload_locals.clone(),
        1966  +
                crate::python_operation_adaptor::test_no_input_no_payload(
        1967  +
                    input,
        1968  +
                    state,
        1969  +
                    handler.clone(),
        1970  +
                ),
        1971  +
            )
        1972  +
        });
 1885   1973   
        let test_no_payload_locals = ::pyo3_asyncio::TaskLocals::new(event_loop);
 1886   1974   
        let handler = self
 1887   1975   
            .handlers
 1888   1976   
            .get("test_no_payload")
 1889   1977   
            .expect("Python handler for operation `test_no_payload` not found")
 1890   1978   
            .clone();
 1891   1979   
        let builder = builder.test_no_payload(move |input, state| {
 1892   1980   
            ::pyo3_asyncio::tokio::scope(
 1893   1981   
                test_no_payload_locals.clone(),
 1894   1982   
                crate::python_operation_adaptor::test_no_payload(input, state, handler.clone()),
@@ -2073,2161 +2132,2234 @@
 2093   2181   
    /// :rtype None:
 2094   2182   
    #[pyo3(text_signature = "($self, func)")]
 2095   2183   
    pub fn constant_query_string(
 2096   2184   
        &mut self,
 2097   2185   
        py: ::pyo3::Python,
 2098   2186   
        func: ::pyo3::PyObject,
 2099   2187   
    ) -> ::pyo3::PyResult<()> {
 2100   2188   
        use ::aws_smithy_http_server_python::PyApp;
 2101   2189   
        self.register_operation(py, "constant_query_string", func)
 2102   2190   
    }
        2191  +
    /// Method to register `content_type_parameters` Python implementation inside the handlers map.
        2192  +
    /// It can be used as a function decorator in Python.
        2193  +
    ///
        2194  +
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.ContentTypeParametersInput, Ctx\], typing.Union\[rest_json.output.ContentTypeParametersOutput, typing.Awaitable\[rest_json.output.ContentTypeParametersOutput\]\]\], typing.Callable\[\[rest_json.input.ContentTypeParametersInput\], typing.Union\[rest_json.output.ContentTypeParametersOutput, typing.Awaitable\[rest_json.output.ContentTypeParametersOutput\]\]\]\]:
        2195  +
    /// :rtype None:
        2196  +
    #[pyo3(text_signature = "($self, func)")]
        2197  +
    pub fn content_type_parameters(
        2198  +
        &mut self,
        2199  +
        py: ::pyo3::Python,
        2200  +
        func: ::pyo3::PyObject,
        2201  +
    ) -> ::pyo3::PyResult<()> {
        2202  +
        use ::aws_smithy_http_server_python::PyApp;
        2203  +
        self.register_operation(py, "content_type_parameters", func)
        2204  +
    }
 2103   2205   
    /// Method to register `datetime_offsets` Python implementation inside the handlers map.
 2104   2206   
    /// It can be used as a function decorator in Python.
 2105   2207   
    ///
 2106   2208   
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.DatetimeOffsetsInput, Ctx\], typing.Union\[rest_json.output.DatetimeOffsetsOutput, typing.Awaitable\[rest_json.output.DatetimeOffsetsOutput\]\]\], typing.Callable\[\[rest_json.input.DatetimeOffsetsInput\], typing.Union\[rest_json.output.DatetimeOffsetsOutput, typing.Awaitable\[rest_json.output.DatetimeOffsetsOutput\]\]\]\]:
 2107   2209   
    /// :rtype None:
 2108   2210   
    #[pyo3(text_signature = "($self, func)")]
 2109   2211   
    pub fn datetime_offsets(
 2110   2212   
        &mut self,
 2111   2213   
        py: ::pyo3::Python,
 2112   2214   
        func: ::pyo3::PyObject,
@@ -3095,3197 +3154,3284 @@
 3115   3217   
    /// :rtype None:
 3116   3218   
    #[pyo3(text_signature = "($self, func)")]
 3117   3219   
    pub fn omits_serializing_empty_lists(
 3118   3220   
        &mut self,
 3119   3221   
        py: ::pyo3::Python,
 3120   3222   
        func: ::pyo3::PyObject,
 3121   3223   
    ) -> ::pyo3::PyResult<()> {
 3122   3224   
        use ::aws_smithy_http_server_python::PyApp;
 3123   3225   
        self.register_operation(py, "omits_serializing_empty_lists", func)
 3124   3226   
    }
        3227  +
    /// Method to register `operation_with_defaults` Python implementation inside the handlers map.
        3228  +
    /// It can be used as a function decorator in Python.
        3229  +
    ///
        3230  +
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.OperationWithDefaultsInput, Ctx\], typing.Union\[rest_json.output.OperationWithDefaultsOutput, typing.Awaitable\[rest_json.output.OperationWithDefaultsOutput\]\]\], typing.Callable\[\[rest_json.input.OperationWithDefaultsInput\], typing.Union\[rest_json.output.OperationWithDefaultsOutput, typing.Awaitable\[rest_json.output.OperationWithDefaultsOutput\]\]\]\]:
        3231  +
    /// :rtype None:
        3232  +
    #[pyo3(text_signature = "($self, func)")]
        3233  +
    pub fn operation_with_defaults(
        3234  +
        &mut self,
        3235  +
        py: ::pyo3::Python,
        3236  +
        func: ::pyo3::PyObject,
        3237  +
    ) -> ::pyo3::PyResult<()> {
        3238  +
        use ::aws_smithy_http_server_python::PyApp;
        3239  +
        self.register_operation(py, "operation_with_defaults", func)
        3240  +
    }
        3241  +
    /// Method to register `operation_with_nested_structure` Python implementation inside the handlers map.
        3242  +
    /// It can be used as a function decorator in Python.
        3243  +
    ///
        3244  +
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.OperationWithNestedStructureInput, Ctx\], typing.Union\[rest_json.output.OperationWithNestedStructureOutput, typing.Awaitable\[rest_json.output.OperationWithNestedStructureOutput\]\]\], typing.Callable\[\[rest_json.input.OperationWithNestedStructureInput\], typing.Union\[rest_json.output.OperationWithNestedStructureOutput, typing.Awaitable\[rest_json.output.OperationWithNestedStructureOutput\]\]\]\]:
        3245  +
    /// :rtype None:
        3246  +
    #[pyo3(text_signature = "($self, func)")]
        3247  +
    pub fn operation_with_nested_structure(
        3248  +
        &mut self,
        3249  +
        py: ::pyo3::Python,
        3250  +
        func: ::pyo3::PyObject,
        3251  +
    ) -> ::pyo3::PyResult<()> {
        3252  +
        use ::aws_smithy_http_server_python::PyApp;
        3253  +
        self.register_operation(py, "operation_with_nested_structure", func)
        3254  +
    }
 3125   3255   
    /// Method to register `post_player_action` Python implementation inside the handlers map.
 3126   3256   
    /// It can be used as a function decorator in Python.
 3127   3257   
    ///
 3128   3258   
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.PostPlayerActionInput, Ctx\], typing.Union\[rest_json.output.PostPlayerActionOutput, typing.Awaitable\[rest_json.output.PostPlayerActionOutput\]\]\], typing.Callable\[\[rest_json.input.PostPlayerActionInput\], typing.Union\[rest_json.output.PostPlayerActionOutput, typing.Awaitable\[rest_json.output.PostPlayerActionOutput\]\]\]\]:
 3129   3259   
    /// :rtype None:
 3130   3260   
    #[pyo3(text_signature = "($self, func)")]
 3131   3261   
    pub fn post_player_action(
 3132   3262   
        &mut self,
 3133   3263   
        py: ::pyo3::Python,
 3134   3264   
        func: ::pyo3::PyObject,
@@ -3291,3421 +3350,3494 @@
 3311   3441   
    /// :rtype None:
 3312   3442   
    #[pyo3(text_signature = "($self, func)")]
 3313   3443   
    pub fn test_body_structure(
 3314   3444   
        &mut self,
 3315   3445   
        py: ::pyo3::Python,
 3316   3446   
        func: ::pyo3::PyObject,
 3317   3447   
    ) -> ::pyo3::PyResult<()> {
 3318   3448   
        use ::aws_smithy_http_server_python::PyApp;
 3319   3449   
        self.register_operation(py, "test_body_structure", func)
 3320   3450   
    }
        3451  +
    /// Method to register `test_no_input_no_payload` Python implementation inside the handlers map.
        3452  +
    /// It can be used as a function decorator in Python.
        3453  +
    ///
        3454  +
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.TestNoInputNoPayloadInput, Ctx\], typing.Union\[rest_json.output.TestNoInputNoPayloadOutput, typing.Awaitable\[rest_json.output.TestNoInputNoPayloadOutput\]\]\], typing.Callable\[\[rest_json.input.TestNoInputNoPayloadInput\], typing.Union\[rest_json.output.TestNoInputNoPayloadOutput, typing.Awaitable\[rest_json.output.TestNoInputNoPayloadOutput\]\]\]\]:
        3455  +
    /// :rtype None:
        3456  +
    #[pyo3(text_signature = "($self, func)")]
        3457  +
    pub fn test_no_input_no_payload(
        3458  +
        &mut self,
        3459  +
        py: ::pyo3::Python,
        3460  +
        func: ::pyo3::PyObject,
        3461  +
    ) -> ::pyo3::PyResult<()> {
        3462  +
        use ::aws_smithy_http_server_python::PyApp;
        3463  +
        self.register_operation(py, "test_no_input_no_payload", func)
        3464  +
    }
 3321   3465   
    /// Method to register `test_no_payload` Python implementation inside the handlers map.
 3322   3466   
    /// It can be used as a function decorator in Python.
 3323   3467   
    ///
 3324   3468   
    /// :param func typing.Union\[typing.Callable\[\[rest_json.input.TestNoPayloadInput, Ctx\], typing.Union\[rest_json.output.TestNoPayloadOutput, typing.Awaitable\[rest_json.output.TestNoPayloadOutput\]\]\], typing.Callable\[\[rest_json.input.TestNoPayloadInput\], typing.Union\[rest_json.output.TestNoPayloadOutput, typing.Awaitable\[rest_json.output.TestNoPayloadOutput\]\]\]\]:
 3325   3469   
    /// :rtype None:
 3326   3470   
    #[pyo3(text_signature = "($self, func)")]
 3327   3471   
    pub fn test_no_payload(
 3328   3472   
        &mut self,
 3329   3473   
        py: ::pyo3::Python,
 3330   3474   
        func: ::pyo3::PyObject,

tmp-codegen-diff/codegen-server-test-python/rest_json/rust-server-codegen-python/src/service.rs

@@ -1,1 +38,39 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// The service builder for [`RestJson`].
    3      3   
///
    4      4   
/// Constructed via [`RestJson::builder`].
    5      5   
pub struct RestJsonBuilder<Body, L, HttpPl, ModelPl> {
    6      6   
    all_query_string_types: Option<::aws_smithy_http_server::routing::Route<Body>>,
    7      7   
    constant_and_variable_query_string: Option<::aws_smithy_http_server::routing::Route<Body>>,
    8      8   
    constant_query_string: Option<::aws_smithy_http_server::routing::Route<Body>>,
           9  +
    content_type_parameters: Option<::aws_smithy_http_server::routing::Route<Body>>,
    9     10   
    datetime_offsets: Option<::aws_smithy_http_server::routing::Route<Body>>,
   10     11   
    document_type: Option<::aws_smithy_http_server::routing::Route<Body>>,
   11     12   
    document_type_as_map_value: Option<::aws_smithy_http_server::routing::Route<Body>>,
   12     13   
    document_type_as_payload: Option<::aws_smithy_http_server::routing::Route<Body>>,
   13     14   
    empty_input_and_empty_output: Option<::aws_smithy_http_server::routing::Route<Body>>,
   14     15   
    endpoint_operation: Option<::aws_smithy_http_server::routing::Route<Body>>,
   15     16   
    endpoint_with_host_label_operation: Option<::aws_smithy_http_server::routing::Route<Body>>,
   16     17   
    fractional_seconds: Option<::aws_smithy_http_server::routing::Route<Body>>,
   17     18   
    greeting_with_errors: Option<::aws_smithy_http_server::routing::Route<Body>>,
   18     19   
    host_with_path_operation: Option<::aws_smithy_http_server::routing::Route<Body>>,
@@ -54,55 +127,131 @@
   74     75   
    malformed_timestamp_query_epoch: Option<::aws_smithy_http_server::routing::Route<Body>>,
   75     76   
    malformed_timestamp_query_http_date: Option<::aws_smithy_http_server::routing::Route<Body>>,
   76     77   
    malformed_union: Option<::aws_smithy_http_server::routing::Route<Body>>,
   77     78   
    media_type_header: Option<::aws_smithy_http_server::routing::Route<Body>>,
   78     79   
    no_input_and_no_output: Option<::aws_smithy_http_server::routing::Route<Body>>,
   79     80   
    no_input_and_output: Option<::aws_smithy_http_server::routing::Route<Body>>,
   80     81   
    null_and_empty_headers_client: Option<::aws_smithy_http_server::routing::Route<Body>>,
   81     82   
    null_and_empty_headers_server: Option<::aws_smithy_http_server::routing::Route<Body>>,
   82     83   
    omits_null_serializes_empty_string: Option<::aws_smithy_http_server::routing::Route<Body>>,
   83     84   
    omits_serializing_empty_lists: Option<::aws_smithy_http_server::routing::Route<Body>>,
          85  +
    operation_with_defaults: Option<::aws_smithy_http_server::routing::Route<Body>>,
          86  +
    operation_with_nested_structure: Option<::aws_smithy_http_server::routing::Route<Body>>,
   84     87   
    post_player_action: Option<::aws_smithy_http_server::routing::Route<Body>>,
   85     88   
    post_union_with_json_name: Option<::aws_smithy_http_server::routing::Route<Body>>,
   86     89   
    put_with_content_encoding: Option<::aws_smithy_http_server::routing::Route<Body>>,
   87     90   
    query_idempotency_token_auto_fill: Option<::aws_smithy_http_server::routing::Route<Body>>,
   88     91   
    query_params_as_string_list_map: Option<::aws_smithy_http_server::routing::Route<Body>>,
   89     92   
    query_precedence: Option<::aws_smithy_http_server::routing::Route<Body>>,
   90     93   
    recursive_shapes: Option<::aws_smithy_http_server::routing::Route<Body>>,
   91     94   
    simple_scalar_properties: Option<::aws_smithy_http_server::routing::Route<Body>>,
   92     95   
    sparse_json_lists: Option<::aws_smithy_http_server::routing::Route<Body>>,
   93     96   
    sparse_json_maps: Option<::aws_smithy_http_server::routing::Route<Body>>,
   94     97   
    streaming_traits: Option<::aws_smithy_http_server::routing::Route<Body>>,
   95     98   
    streaming_traits_require_length: Option<::aws_smithy_http_server::routing::Route<Body>>,
   96     99   
    streaming_traits_with_media_type: Option<::aws_smithy_http_server::routing::Route<Body>>,
   97    100   
    test_body_structure: Option<::aws_smithy_http_server::routing::Route<Body>>,
         101  +
    test_no_input_no_payload: Option<::aws_smithy_http_server::routing::Route<Body>>,
   98    102   
    test_no_payload: Option<::aws_smithy_http_server::routing::Route<Body>>,
   99    103   
    test_payload_blob: Option<::aws_smithy_http_server::routing::Route<Body>>,
  100    104   
    test_payload_structure: Option<::aws_smithy_http_server::routing::Route<Body>>,
  101    105   
    timestamp_format_headers: Option<::aws_smithy_http_server::routing::Route<Body>>,
  102    106   
    unit_input_and_output: Option<::aws_smithy_http_server::routing::Route<Body>>,
  103    107   
    layer: L,
  104    108   
    http_plugin: HttpPl,
  105    109   
    model_plugin: ModelPl,
  106    110   
}
  107    111   
@@ -530,534 +589,743 @@
  550    554   
                Error = ::std::convert::Infallible,
  551    555   
            > + Clone
  552    556   
            + Send
  553    557   
            + 'static,
  554    558   
        S::Future: Send + 'static,
  555    559   
    {
  556    560   
        self.constant_query_string = Some(::aws_smithy_http_server::routing::Route::new(svc));
  557    561   
        self
  558    562   
    }
  559    563   
         564  +
    /// Sets the [`ContentTypeParameters`](crate::operation_shape::ContentTypeParameters) operation.
         565  +
    ///
         566  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
         567  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
         568  +
    ///
         569  +
    /// # Example
         570  +
    ///
         571  +
    /// ```no_run
         572  +
    /// use rest_json::{RestJson, RestJsonConfig};
         573  +
    ///
         574  +
    /// use rest_json::{input, output, error};
         575  +
    ///
         576  +
    /// async fn handler(input: input::ContentTypeParametersInput) -> Result<output::ContentTypeParametersOutput, error::ContentTypeParametersError> {
         577  +
    ///     todo!()
         578  +
    /// }
         579  +
    ///
         580  +
    /// let config = RestJsonConfig::builder().build();
         581  +
    /// let app = RestJson::builder(config)
         582  +
    ///     .content_type_parameters(handler)
         583  +
    ///     /* Set other handlers */
         584  +
    ///     .build()
         585  +
    ///     .unwrap();
         586  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
         587  +
    /// ```
         588  +
    ///
         589  +
                    pub fn content_type_parameters<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
         590  +
                    where
         591  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::ContentTypeParameters, HandlerExtractors>,
         592  +
         593  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
         594  +
                            RestJson<L>,
         595  +
                            crate::operation_shape::ContentTypeParameters,
         596  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::ContentTypeParameters, HandlerType>
         597  +
                        >,
         598  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
         599  +
                            RestJson<L>,
         600  +
                            crate::operation_shape::ContentTypeParameters,
         601  +
                            ModelPl::Output
         602  +
                        >,
         603  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
         604  +
                            RestJson<L>,
         605  +
                            crate::operation_shape::ContentTypeParameters,
         606  +
                            <
         607  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
         608  +
                                as ::aws_smithy_http_server::plugin::Plugin<
         609  +
                                    RestJson<L>,
         610  +
                                    crate::operation_shape::ContentTypeParameters,
         611  +
                                    ModelPl::Output
         612  +
                                >
         613  +
                            >::Output
         614  +
                        >,
         615  +
         616  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
         617  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
         618  +
         619  +
                    {
         620  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
         621  +
        use ::aws_smithy_http_server::plugin::Plugin;
         622  +
        let svc = crate::operation_shape::ContentTypeParameters::from_handler(handler);
         623  +
        let svc = self.model_plugin.apply(svc);
         624  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
         625  +
            .apply(svc);
         626  +
        let svc = self.http_plugin.apply(svc);
         627  +
        self.content_type_parameters_custom(svc)
         628  +
    }
         629  +
         630  +
    /// Sets the [`ContentTypeParameters`](crate::operation_shape::ContentTypeParameters) operation.
         631  +
    ///
         632  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
         633  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
         634  +
    ///
         635  +
    /// # Example
         636  +
    ///
         637  +
    /// ```no_run
         638  +
    /// use rest_json::{RestJson, RestJsonConfig};
         639  +
    ///
         640  +
    /// use rest_json::{input, output, error};
         641  +
    ///
         642  +
    /// async fn handler(input: input::ContentTypeParametersInput) -> Result<output::ContentTypeParametersOutput, error::ContentTypeParametersError> {
         643  +
    ///     todo!()
         644  +
    /// }
         645  +
    ///
         646  +
    /// let config = RestJsonConfig::builder().build();
         647  +
    /// let svc = ::tower::util::service_fn(handler);
         648  +
    /// let app = RestJson::builder(config)
         649  +
    ///     .content_type_parameters_service(svc)
         650  +
    ///     /* Set other handlers */
         651  +
    ///     .build()
         652  +
    ///     .unwrap();
         653  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
         654  +
    /// ```
         655  +
    ///
         656  +
                    pub fn content_type_parameters_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
         657  +
                    where
         658  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::ContentTypeParameters, ServiceExtractors>,
         659  +
         660  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
         661  +
                            RestJson<L>,
         662  +
                            crate::operation_shape::ContentTypeParameters,
         663  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::ContentTypeParameters, S>
         664  +
                        >,
         665  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
         666  +
                            RestJson<L>,
         667  +
                            crate::operation_shape::ContentTypeParameters,
         668  +
                            ModelPl::Output
         669  +
                        >,
         670  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
         671  +
                            RestJson<L>,
         672  +
                            crate::operation_shape::ContentTypeParameters,
         673  +
                            <
         674  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
         675  +
                                as ::aws_smithy_http_server::plugin::Plugin<
         676  +
                                    RestJson<L>,
         677  +
                                    crate::operation_shape::ContentTypeParameters,
         678  +
                                    ModelPl::Output
         679  +
                                >
         680  +
                            >::Output
         681  +
                        >,
         682  +
         683  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
         684  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
         685  +
         686  +
                    {
         687  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
         688  +
        use ::aws_smithy_http_server::plugin::Plugin;
         689  +
        let svc = crate::operation_shape::ContentTypeParameters::from_service(service);
         690  +
        let svc = self.model_plugin.apply(svc);
         691  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
         692  +
            .apply(svc);
         693  +
        let svc = self.http_plugin.apply(svc);
         694  +
        self.content_type_parameters_custom(svc)
         695  +
    }
         696  +
         697  +
    /// Sets the [`ContentTypeParameters`](crate::operation_shape::ContentTypeParameters) to a custom [`Service`](tower::Service).
         698  +
    /// not constrained by the Smithy contract.
         699  +
    fn content_type_parameters_custom<S>(mut self, svc: S) -> Self
         700  +
    where
         701  +
        S: ::tower::Service<
         702  +
                ::http::Request<Body>,
         703  +
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
         704  +
                Error = ::std::convert::Infallible,
         705  +
            > + Clone
         706  +
            + Send
         707  +
            + 'static,
         708  +
        S::Future: Send + 'static,
         709  +
    {
         710  +
        self.content_type_parameters = Some(::aws_smithy_http_server::routing::Route::new(svc));
         711  +
        self
         712  +
    }
         713  +
  560    714   
    /// Sets the [`DatetimeOffsets`](crate::operation_shape::DatetimeOffsets) operation.
  561    715   
    ///
  562    716   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
  563    717   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
  564    718   
    ///
  565    719   
    /// # Example
  566    720   
    ///
  567    721   
    /// ```no_run
  568    722   
    /// use rest_json::{RestJson, RestJsonConfig};
  569    723   
    ///
@@ -11516,11670 +12089,12544 @@
11536  11690   
            > + Clone
11537  11691   
            + Send
11538  11692   
            + 'static,
11539  11693   
        S::Future: Send + 'static,
11540  11694   
    {
11541  11695   
        self.omits_serializing_empty_lists =
11542  11696   
            Some(::aws_smithy_http_server::routing::Route::new(svc));
11543  11697   
        self
11544  11698   
    }
11545  11699   
11546         -
    /// Sets the [`PostPlayerAction`](crate::operation_shape::PostPlayerAction) operation.
       11700  +
    /// Sets the [`OperationWithDefaults`](crate::operation_shape::OperationWithDefaults) operation.
11547  11701   
    ///
11548  11702   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11549  11703   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
11550  11704   
    ///
11551  11705   
    /// # Example
11552  11706   
    ///
11553  11707   
    /// ```no_run
11554  11708   
    /// use rest_json::{RestJson, RestJsonConfig};
11555  11709   
    ///
11556  11710   
    /// use rest_json::{input, output, error};
11557  11711   
    ///
11558         -
    /// async fn handler(input: input::PostPlayerActionInput) -> Result<output::PostPlayerActionOutput, error::PostPlayerActionError> {
       11712  +
    /// async fn handler(input: input::OperationWithDefaultsInput) -> Result<output::OperationWithDefaultsOutput, error::OperationWithDefaultsError> {
11559  11713   
    ///     todo!()
11560  11714   
    /// }
11561  11715   
    ///
11562  11716   
    /// let config = RestJsonConfig::builder().build();
11563  11717   
    /// let app = RestJson::builder(config)
11564         -
    ///     .post_player_action(handler)
       11718  +
    ///     .operation_with_defaults(handler)
11565  11719   
    ///     /* Set other handlers */
11566  11720   
    ///     .build()
11567  11721   
    ///     .unwrap();
11568  11722   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
11569  11723   
    /// ```
11570  11724   
    ///
11571         -
                    pub fn post_player_action<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       11725  +
                    pub fn operation_with_defaults<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
11572  11726   
                    where
11573         -
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::PostPlayerAction, HandlerExtractors>,
       11727  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::OperationWithDefaults, HandlerExtractors>,
11574  11728   
11575  11729   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
11576  11730   
                            RestJson<L>,
11577         -
                            crate::operation_shape::PostPlayerAction,
11578         -
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::PostPlayerAction, HandlerType>
       11731  +
                            crate::operation_shape::OperationWithDefaults,
       11732  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::OperationWithDefaults, HandlerType>
11579  11733   
                        >,
11580  11734   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
11581  11735   
                            RestJson<L>,
11582         -
                            crate::operation_shape::PostPlayerAction,
       11736  +
                            crate::operation_shape::OperationWithDefaults,
11583  11737   
                            ModelPl::Output
11584  11738   
                        >,
11585  11739   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
11586  11740   
                            RestJson<L>,
11587         -
                            crate::operation_shape::PostPlayerAction,
       11741  +
                            crate::operation_shape::OperationWithDefaults,
11588  11742   
                            <
11589  11743   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
11590  11744   
                                as ::aws_smithy_http_server::plugin::Plugin<
11591  11745   
                                    RestJson<L>,
11592         -
                                    crate::operation_shape::PostPlayerAction,
       11746  +
                                    crate::operation_shape::OperationWithDefaults,
11593  11747   
                                    ModelPl::Output
11594  11748   
                                >
11595  11749   
                            >::Output
11596  11750   
                        >,
11597  11751   
11598  11752   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
11599  11753   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
11600  11754   
11601  11755   
                    {
11602  11756   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
11603  11757   
        use ::aws_smithy_http_server::plugin::Plugin;
11604         -
        let svc = crate::operation_shape::PostPlayerAction::from_handler(handler);
       11758  +
        let svc = crate::operation_shape::OperationWithDefaults::from_handler(handler);
11605  11759   
        let svc = self.model_plugin.apply(svc);
11606  11760   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
11607  11761   
            .apply(svc);
11608  11762   
        let svc = self.http_plugin.apply(svc);
11609         -
        self.post_player_action_custom(svc)
       11763  +
        self.operation_with_defaults_custom(svc)
11610  11764   
    }
11611  11765   
11612         -
    /// Sets the [`PostPlayerAction`](crate::operation_shape::PostPlayerAction) operation.
       11766  +
    /// Sets the [`OperationWithDefaults`](crate::operation_shape::OperationWithDefaults) operation.
11613  11767   
    ///
11614  11768   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11615  11769   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
11616  11770   
    ///
11617  11771   
    /// # Example
11618  11772   
    ///
11619  11773   
    /// ```no_run
11620  11774   
    /// use rest_json::{RestJson, RestJsonConfig};
11621  11775   
    ///
11622  11776   
    /// use rest_json::{input, output, error};
11623  11777   
    ///
11624         -
    /// async fn handler(input: input::PostPlayerActionInput) -> Result<output::PostPlayerActionOutput, error::PostPlayerActionError> {
       11778  +
    /// async fn handler(input: input::OperationWithDefaultsInput) -> Result<output::OperationWithDefaultsOutput, error::OperationWithDefaultsError> {
11625  11779   
    ///     todo!()
11626  11780   
    /// }
11627  11781   
    ///
11628  11782   
    /// let config = RestJsonConfig::builder().build();
11629  11783   
    /// let svc = ::tower::util::service_fn(handler);
11630  11784   
    /// let app = RestJson::builder(config)
11631         -
    ///     .post_player_action_service(svc)
       11785  +
    ///     .operation_with_defaults_service(svc)
11632  11786   
    ///     /* Set other handlers */
11633  11787   
    ///     .build()
11634  11788   
    ///     .unwrap();
11635  11789   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
11636  11790   
    /// ```
11637  11791   
    ///
11638         -
                    pub fn post_player_action_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       11792  +
                    pub fn operation_with_defaults_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
11639  11793   
                    where
11640         -
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::PostPlayerAction, ServiceExtractors>,
       11794  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::OperationWithDefaults, ServiceExtractors>,
11641  11795   
11642  11796   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
11643  11797   
                            RestJson<L>,
11644         -
                            crate::operation_shape::PostPlayerAction,
11645         -
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::PostPlayerAction, S>
       11798  +
                            crate::operation_shape::OperationWithDefaults,
       11799  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::OperationWithDefaults, S>
11646  11800   
                        >,
11647  11801   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
11648  11802   
                            RestJson<L>,
11649         -
                            crate::operation_shape::PostPlayerAction,
       11803  +
                            crate::operation_shape::OperationWithDefaults,
11650  11804   
                            ModelPl::Output
11651  11805   
                        >,
11652  11806   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
11653  11807   
                            RestJson<L>,
11654         -
                            crate::operation_shape::PostPlayerAction,
       11808  +
                            crate::operation_shape::OperationWithDefaults,
11655  11809   
                            <
11656  11810   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
11657  11811   
                                as ::aws_smithy_http_server::plugin::Plugin<
11658  11812   
                                    RestJson<L>,
11659         -
                                    crate::operation_shape::PostPlayerAction,
       11813  +
                                    crate::operation_shape::OperationWithDefaults,
11660  11814   
                                    ModelPl::Output
11661  11815   
                                >
11662  11816   
                            >::Output
11663  11817   
                        >,
11664  11818   
11665  11819   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
11666  11820   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
11667  11821   
11668  11822   
                    {
11669  11823   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
11670  11824   
        use ::aws_smithy_http_server::plugin::Plugin;
11671         -
        let svc = crate::operation_shape::PostPlayerAction::from_service(service);
       11825  +
        let svc = crate::operation_shape::OperationWithDefaults::from_service(service);
11672  11826   
        let svc = self.model_plugin.apply(svc);
11673  11827   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
11674  11828   
            .apply(svc);
11675  11829   
        let svc = self.http_plugin.apply(svc);
11676         -
        self.post_player_action_custom(svc)
       11830  +
        self.operation_with_defaults_custom(svc)
11677  11831   
    }
11678  11832   
11679         -
    /// Sets the [`PostPlayerAction`](crate::operation_shape::PostPlayerAction) to a custom [`Service`](tower::Service).
       11833  +
    /// Sets the [`OperationWithDefaults`](crate::operation_shape::OperationWithDefaults) to a custom [`Service`](tower::Service).
11680  11834   
    /// not constrained by the Smithy contract.
11681         -
    fn post_player_action_custom<S>(mut self, svc: S) -> Self
       11835  +
    fn operation_with_defaults_custom<S>(mut self, svc: S) -> Self
11682  11836   
    where
11683  11837   
        S: ::tower::Service<
11684  11838   
                ::http::Request<Body>,
11685  11839   
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
11686  11840   
                Error = ::std::convert::Infallible,
11687  11841   
            > + Clone
11688  11842   
            + Send
11689  11843   
            + 'static,
11690  11844   
        S::Future: Send + 'static,
11691  11845   
    {
11692         -
        self.post_player_action = Some(::aws_smithy_http_server::routing::Route::new(svc));
       11846  +
        self.operation_with_defaults = Some(::aws_smithy_http_server::routing::Route::new(svc));
11693  11847   
        self
11694  11848   
    }
11695  11849   
11696         -
    /// Sets the [`PostUnionWithJsonName`](crate::operation_shape::PostUnionWithJsonName) operation.
       11850  +
    /// Sets the [`OperationWithNestedStructure`](crate::operation_shape::OperationWithNestedStructure) operation.
11697  11851   
    ///
11698  11852   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11699  11853   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
11700  11854   
    ///
11701  11855   
    /// # Example
11702  11856   
    ///
11703  11857   
    /// ```no_run
11704  11858   
    /// use rest_json::{RestJson, RestJsonConfig};
11705  11859   
    ///
11706  11860   
    /// use rest_json::{input, output, error};
11707  11861   
    ///
11708         -
    /// async fn handler(input: input::PostUnionWithJsonNameInput) -> Result<output::PostUnionWithJsonNameOutput, error::PostUnionWithJsonNameError> {
       11862  +
    /// async fn handler(input: input::OperationWithNestedStructureInput) -> Result<output::OperationWithNestedStructureOutput, error::OperationWithNestedStructureError> {
11709  11863   
    ///     todo!()
11710  11864   
    /// }
11711  11865   
    ///
11712  11866   
    /// let config = RestJsonConfig::builder().build();
11713  11867   
    /// let app = RestJson::builder(config)
11714         -
    ///     .post_union_with_json_name(handler)
       11868  +
    ///     .operation_with_nested_structure(handler)
11715  11869   
    ///     /* Set other handlers */
11716  11870   
    ///     .build()
11717  11871   
    ///     .unwrap();
11718  11872   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
11719  11873   
    /// ```
11720  11874   
    ///
11721         -
                    pub fn post_union_with_json_name<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       11875  +
                    pub fn operation_with_nested_structure<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
11722  11876   
                    where
11723         -
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::PostUnionWithJsonName, HandlerExtractors>,
       11877  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::OperationWithNestedStructure, HandlerExtractors>,
11724  11878   
11725  11879   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
11726  11880   
                            RestJson<L>,
11727         -
                            crate::operation_shape::PostUnionWithJsonName,
11728         -
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::PostUnionWithJsonName, HandlerType>
       11881  +
                            crate::operation_shape::OperationWithNestedStructure,
       11882  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::OperationWithNestedStructure, HandlerType>
11729  11883   
                        >,
11730  11884   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
11731  11885   
                            RestJson<L>,
11732         -
                            crate::operation_shape::PostUnionWithJsonName,
       11886  +
                            crate::operation_shape::OperationWithNestedStructure,
11733  11887   
                            ModelPl::Output
11734  11888   
                        >,
11735  11889   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
11736  11890   
                            RestJson<L>,
11737         -
                            crate::operation_shape::PostUnionWithJsonName,
       11891  +
                            crate::operation_shape::OperationWithNestedStructure,
11738  11892   
                            <
11739  11893   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
11740  11894   
                                as ::aws_smithy_http_server::plugin::Plugin<
11741  11895   
                                    RestJson<L>,
11742         -
                                    crate::operation_shape::PostUnionWithJsonName,
       11896  +
                                    crate::operation_shape::OperationWithNestedStructure,
11743  11897   
                                    ModelPl::Output
11744  11898   
                                >
11745  11899   
                            >::Output
11746  11900   
                        >,
11747  11901   
11748  11902   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
11749  11903   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
11750  11904   
11751  11905   
                    {
11752  11906   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
11753  11907   
        use ::aws_smithy_http_server::plugin::Plugin;
11754         -
        let svc = crate::operation_shape::PostUnionWithJsonName::from_handler(handler);
       11908  +
        let svc = crate::operation_shape::OperationWithNestedStructure::from_handler(handler);
11755  11909   
        let svc = self.model_plugin.apply(svc);
11756  11910   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
11757  11911   
            .apply(svc);
11758  11912   
        let svc = self.http_plugin.apply(svc);
11759         -
        self.post_union_with_json_name_custom(svc)
       11913  +
        self.operation_with_nested_structure_custom(svc)
11760  11914   
    }
11761  11915   
11762         -
    /// Sets the [`PostUnionWithJsonName`](crate::operation_shape::PostUnionWithJsonName) operation.
       11916  +
    /// Sets the [`OperationWithNestedStructure`](crate::operation_shape::OperationWithNestedStructure) operation.
11763  11917   
    ///
11764  11918   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11765  11919   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
11766  11920   
    ///
11767  11921   
    /// # Example
11768  11922   
    ///
11769  11923   
    /// ```no_run
11770  11924   
    /// use rest_json::{RestJson, RestJsonConfig};
11771  11925   
    ///
11772  11926   
    /// use rest_json::{input, output, error};
11773  11927   
    ///
11774         -
    /// async fn handler(input: input::PostUnionWithJsonNameInput) -> Result<output::PostUnionWithJsonNameOutput, error::PostUnionWithJsonNameError> {
       11928  +
    /// async fn handler(input: input::OperationWithNestedStructureInput) -> Result<output::OperationWithNestedStructureOutput, error::OperationWithNestedStructureError> {
11775  11929   
    ///     todo!()
11776  11930   
    /// }
11777  11931   
    ///
11778  11932   
    /// let config = RestJsonConfig::builder().build();
11779  11933   
    /// let svc = ::tower::util::service_fn(handler);
11780  11934   
    /// let app = RestJson::builder(config)
11781         -
    ///     .post_union_with_json_name_service(svc)
       11935  +
    ///     .operation_with_nested_structure_service(svc)
11782  11936   
    ///     /* Set other handlers */
11783  11937   
    ///     .build()
11784  11938   
    ///     .unwrap();
11785  11939   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
11786  11940   
    /// ```
11787  11941   
    ///
11788         -
                    pub fn post_union_with_json_name_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       11942  +
                    pub fn operation_with_nested_structure_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
11789  11943   
                    where
11790         -
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::PostUnionWithJsonName, ServiceExtractors>,
       11944  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::OperationWithNestedStructure, ServiceExtractors>,
11791  11945   
11792  11946   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
11793  11947   
                            RestJson<L>,
11794         -
                            crate::operation_shape::PostUnionWithJsonName,
11795         -
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::PostUnionWithJsonName, S>
       11948  +
                            crate::operation_shape::OperationWithNestedStructure,
       11949  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::OperationWithNestedStructure, S>
11796  11950   
                        >,
11797  11951   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
11798  11952   
                            RestJson<L>,
11799         -
                            crate::operation_shape::PostUnionWithJsonName,
       11953  +
                            crate::operation_shape::OperationWithNestedStructure,
11800  11954   
                            ModelPl::Output
11801  11955   
                        >,
11802  11956   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
11803  11957   
                            RestJson<L>,
11804         -
                            crate::operation_shape::PostUnionWithJsonName,
       11958  +
                            crate::operation_shape::OperationWithNestedStructure,
11805  11959   
                            <
11806  11960   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
11807  11961   
                                as ::aws_smithy_http_server::plugin::Plugin<
11808  11962   
                                    RestJson<L>,
11809         -
                                    crate::operation_shape::PostUnionWithJsonName,
       11963  +
                                    crate::operation_shape::OperationWithNestedStructure,
11810  11964   
                                    ModelPl::Output
11811  11965   
                                >
11812  11966   
                            >::Output
11813  11967   
                        >,
11814  11968   
11815  11969   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
11816  11970   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
11817  11971   
11818  11972   
                    {
11819  11973   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
11820  11974   
        use ::aws_smithy_http_server::plugin::Plugin;
11821         -
        let svc = crate::operation_shape::PostUnionWithJsonName::from_service(service);
       11975  +
        let svc = crate::operation_shape::OperationWithNestedStructure::from_service(service);
11822  11976   
        let svc = self.model_plugin.apply(svc);
11823  11977   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
11824  11978   
            .apply(svc);
11825  11979   
        let svc = self.http_plugin.apply(svc);
11826         -
        self.post_union_with_json_name_custom(svc)
       11980  +
        self.operation_with_nested_structure_custom(svc)
11827  11981   
    }
11828  11982   
11829         -
    /// Sets the [`PostUnionWithJsonName`](crate::operation_shape::PostUnionWithJsonName) to a custom [`Service`](tower::Service).
       11983  +
    /// Sets the [`OperationWithNestedStructure`](crate::operation_shape::OperationWithNestedStructure) to a custom [`Service`](tower::Service).
11830  11984   
    /// not constrained by the Smithy contract.
11831         -
    fn post_union_with_json_name_custom<S>(mut self, svc: S) -> Self
       11985  +
    fn operation_with_nested_structure_custom<S>(mut self, svc: S) -> Self
11832  11986   
    where
11833  11987   
        S: ::tower::Service<
11834  11988   
                ::http::Request<Body>,
11835  11989   
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
11836  11990   
                Error = ::std::convert::Infallible,
11837  11991   
            > + Clone
11838  11992   
            + Send
11839  11993   
            + 'static,
11840  11994   
        S::Future: Send + 'static,
11841  11995   
    {
11842         -
        self.post_union_with_json_name = Some(::aws_smithy_http_server::routing::Route::new(svc));
       11996  +
        self.operation_with_nested_structure =
       11997  +
            Some(::aws_smithy_http_server::routing::Route::new(svc));
11843  11998   
        self
11844  11999   
    }
11845  12000   
11846         -
    /// Sets the [`PutWithContentEncoding`](crate::operation_shape::PutWithContentEncoding) operation.
       12001  +
    /// Sets the [`PostPlayerAction`](crate::operation_shape::PostPlayerAction) operation.
11847  12002   
    ///
11848  12003   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11849  12004   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
11850  12005   
    ///
11851  12006   
    /// # Example
11852  12007   
    ///
11853  12008   
    /// ```no_run
11854  12009   
    /// use rest_json::{RestJson, RestJsonConfig};
11855  12010   
    ///
11856  12011   
    /// use rest_json::{input, output, error};
11857  12012   
    ///
11858         -
    /// async fn handler(input: input::PutWithContentEncodingInput) -> Result<output::PutWithContentEncodingOutput, error::PutWithContentEncodingError> {
       12013  +
    /// async fn handler(input: input::PostPlayerActionInput) -> Result<output::PostPlayerActionOutput, error::PostPlayerActionError> {
11859  12014   
    ///     todo!()
11860  12015   
    /// }
11861  12016   
    ///
11862  12017   
    /// let config = RestJsonConfig::builder().build();
11863  12018   
    /// let app = RestJson::builder(config)
11864         -
    ///     .put_with_content_encoding(handler)
       12019  +
    ///     .post_player_action(handler)
11865  12020   
    ///     /* Set other handlers */
11866  12021   
    ///     .build()
11867  12022   
    ///     .unwrap();
11868  12023   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
11869  12024   
    /// ```
11870  12025   
    ///
11871         -
                    pub fn put_with_content_encoding<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       12026  +
                    pub fn post_player_action<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
11872  12027   
                    where
11873         -
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::PutWithContentEncoding, HandlerExtractors>,
       12028  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::PostPlayerAction, HandlerExtractors>,
11874  12029   
11875  12030   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
11876  12031   
                            RestJson<L>,
11877         -
                            crate::operation_shape::PutWithContentEncoding,
11878         -
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::PutWithContentEncoding, HandlerType>
       12032  +
                            crate::operation_shape::PostPlayerAction,
       12033  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::PostPlayerAction, HandlerType>
11879  12034   
                        >,
11880  12035   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
11881  12036   
                            RestJson<L>,
11882         -
                            crate::operation_shape::PutWithContentEncoding,
       12037  +
                            crate::operation_shape::PostPlayerAction,
11883  12038   
                            ModelPl::Output
11884  12039   
                        >,
11885  12040   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
11886  12041   
                            RestJson<L>,
11887         -
                            crate::operation_shape::PutWithContentEncoding,
       12042  +
                            crate::operation_shape::PostPlayerAction,
11888  12043   
                            <
11889  12044   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
11890  12045   
                                as ::aws_smithy_http_server::plugin::Plugin<
11891  12046   
                                    RestJson<L>,
11892         -
                                    crate::operation_shape::PutWithContentEncoding,
       12047  +
                                    crate::operation_shape::PostPlayerAction,
11893  12048   
                                    ModelPl::Output
11894  12049   
                                >
11895  12050   
                            >::Output
11896  12051   
                        >,
11897  12052   
11898  12053   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
11899  12054   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
11900  12055   
11901  12056   
                    {
11902  12057   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
11903  12058   
        use ::aws_smithy_http_server::plugin::Plugin;
11904         -
        let svc = crate::operation_shape::PutWithContentEncoding::from_handler(handler);
       12059  +
        let svc = crate::operation_shape::PostPlayerAction::from_handler(handler);
11905  12060   
        let svc = self.model_plugin.apply(svc);
11906  12061   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
11907  12062   
            .apply(svc);
11908  12063   
        let svc = self.http_plugin.apply(svc);
11909         -
        self.put_with_content_encoding_custom(svc)
       12064  +
        self.post_player_action_custom(svc)
11910  12065   
    }
11911  12066   
11912         -
    /// Sets the [`PutWithContentEncoding`](crate::operation_shape::PutWithContentEncoding) operation.
       12067  +
    /// Sets the [`PostPlayerAction`](crate::operation_shape::PostPlayerAction) operation.
11913  12068   
    ///
11914  12069   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11915  12070   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
11916  12071   
    ///
11917  12072   
    /// # Example
11918  12073   
    ///
11919  12074   
    /// ```no_run
11920  12075   
    /// use rest_json::{RestJson, RestJsonConfig};
11921  12076   
    ///
11922  12077   
    /// use rest_json::{input, output, error};
11923  12078   
    ///
11924         -
    /// async fn handler(input: input::PutWithContentEncodingInput) -> Result<output::PutWithContentEncodingOutput, error::PutWithContentEncodingError> {
       12079  +
    /// async fn handler(input: input::PostPlayerActionInput) -> Result<output::PostPlayerActionOutput, error::PostPlayerActionError> {
11925  12080   
    ///     todo!()
11926  12081   
    /// }
11927  12082   
    ///
11928  12083   
    /// let config = RestJsonConfig::builder().build();
11929  12084   
    /// let svc = ::tower::util::service_fn(handler);
11930  12085   
    /// let app = RestJson::builder(config)
11931         -
    ///     .put_with_content_encoding_service(svc)
       12086  +
    ///     .post_player_action_service(svc)
11932  12087   
    ///     /* Set other handlers */
11933  12088   
    ///     .build()
11934  12089   
    ///     .unwrap();
11935  12090   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
11936  12091   
    /// ```
11937  12092   
    ///
11938         -
                    pub fn put_with_content_encoding_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       12093  +
                    pub fn post_player_action_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
11939  12094   
                    where
11940         -
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::PutWithContentEncoding, ServiceExtractors>,
       12095  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::PostPlayerAction, ServiceExtractors>,
11941  12096   
11942  12097   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
11943  12098   
                            RestJson<L>,
11944         -
                            crate::operation_shape::PutWithContentEncoding,
11945         -
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::PutWithContentEncoding, S>
       12099  +
                            crate::operation_shape::PostPlayerAction,
       12100  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::PostPlayerAction, S>
11946  12101   
                        >,
11947  12102   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
11948  12103   
                            RestJson<L>,
11949         -
                            crate::operation_shape::PutWithContentEncoding,
       12104  +
                            crate::operation_shape::PostPlayerAction,
11950  12105   
                            ModelPl::Output
11951  12106   
                        >,
11952  12107   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
11953  12108   
                            RestJson<L>,
11954         -
                            crate::operation_shape::PutWithContentEncoding,
       12109  +
                            crate::operation_shape::PostPlayerAction,
11955  12110   
                            <
11956  12111   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
11957  12112   
                                as ::aws_smithy_http_server::plugin::Plugin<
11958  12113   
                                    RestJson<L>,
11959         -
                                    crate::operation_shape::PutWithContentEncoding,
       12114  +
                                    crate::operation_shape::PostPlayerAction,
11960  12115   
                                    ModelPl::Output
11961  12116   
                                >
11962  12117   
                            >::Output
11963  12118   
                        >,
11964  12119   
11965  12120   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
11966  12121   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
11967  12122   
11968  12123   
                    {
11969  12124   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
11970  12125   
        use ::aws_smithy_http_server::plugin::Plugin;
11971         -
        let svc = crate::operation_shape::PutWithContentEncoding::from_service(service);
       12126  +
        let svc = crate::operation_shape::PostPlayerAction::from_service(service);
11972  12127   
        let svc = self.model_plugin.apply(svc);
11973  12128   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
11974  12129   
            .apply(svc);
11975  12130   
        let svc = self.http_plugin.apply(svc);
11976         -
        self.put_with_content_encoding_custom(svc)
       12131  +
        self.post_player_action_custom(svc)
11977  12132   
    }
11978  12133   
11979         -
    /// Sets the [`PutWithContentEncoding`](crate::operation_shape::PutWithContentEncoding) to a custom [`Service`](tower::Service).
       12134  +
    /// Sets the [`PostPlayerAction`](crate::operation_shape::PostPlayerAction) to a custom [`Service`](tower::Service).
11980  12135   
    /// not constrained by the Smithy contract.
11981         -
    fn put_with_content_encoding_custom<S>(mut self, svc: S) -> Self
       12136  +
    fn post_player_action_custom<S>(mut self, svc: S) -> Self
11982  12137   
    where
11983  12138   
        S: ::tower::Service<
11984  12139   
                ::http::Request<Body>,
11985  12140   
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
11986  12141   
                Error = ::std::convert::Infallible,
11987  12142   
            > + Clone
11988  12143   
            + Send
11989  12144   
            + 'static,
11990  12145   
        S::Future: Send + 'static,
11991  12146   
    {
11992         -
        self.put_with_content_encoding = Some(::aws_smithy_http_server::routing::Route::new(svc));
       12147  +
        self.post_player_action = Some(::aws_smithy_http_server::routing::Route::new(svc));
11993  12148   
        self
11994  12149   
    }
11995  12150   
11996         -
    /// Sets the [`QueryIdempotencyTokenAutoFill`](crate::operation_shape::QueryIdempotencyTokenAutoFill) operation.
       12151  +
    /// Sets the [`PostUnionWithJsonName`](crate::operation_shape::PostUnionWithJsonName) operation.
11997  12152   
    ///
11998  12153   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
11999  12154   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
12000  12155   
    ///
12001  12156   
    /// # Example
12002  12157   
    ///
12003  12158   
    /// ```no_run
12004  12159   
    /// use rest_json::{RestJson, RestJsonConfig};
12005  12160   
    ///
12006  12161   
    /// use rest_json::{input, output, error};
12007  12162   
    ///
12008         -
    /// async fn handler(input: input::QueryIdempotencyTokenAutoFillInput) -> Result<output::QueryIdempotencyTokenAutoFillOutput, error::QueryIdempotencyTokenAutoFillError> {
       12163  +
    /// async fn handler(input: input::PostUnionWithJsonNameInput) -> Result<output::PostUnionWithJsonNameOutput, error::PostUnionWithJsonNameError> {
12009  12164   
    ///     todo!()
12010  12165   
    /// }
12011  12166   
    ///
12012  12167   
    /// let config = RestJsonConfig::builder().build();
12013  12168   
    /// let app = RestJson::builder(config)
12014         -
    ///     .query_idempotency_token_auto_fill(handler)
       12169  +
    ///     .post_union_with_json_name(handler)
12015  12170   
    ///     /* Set other handlers */
12016  12171   
    ///     .build()
12017  12172   
    ///     .unwrap();
12018  12173   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
12019  12174   
    /// ```
12020  12175   
    ///
12021         -
                    pub fn query_idempotency_token_auto_fill<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       12176  +
                    pub fn post_union_with_json_name<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
12022  12177   
                    where
12023         -
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::QueryIdempotencyTokenAutoFill, HandlerExtractors>,
       12178  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::PostUnionWithJsonName, HandlerExtractors>,
12024  12179   
12025  12180   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
12026  12181   
                            RestJson<L>,
12027         -
                            crate::operation_shape::QueryIdempotencyTokenAutoFill,
12028         -
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::QueryIdempotencyTokenAutoFill, HandlerType>
       12182  +
                            crate::operation_shape::PostUnionWithJsonName,
       12183  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::PostUnionWithJsonName, HandlerType>
12029  12184   
                        >,
12030  12185   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
12031  12186   
                            RestJson<L>,
12032         -
                            crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12187  +
                            crate::operation_shape::PostUnionWithJsonName,
12033  12188   
                            ModelPl::Output
12034  12189   
                        >,
12035  12190   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
12036  12191   
                            RestJson<L>,
12037         -
                            crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12192  +
                            crate::operation_shape::PostUnionWithJsonName,
12038  12193   
                            <
12039  12194   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
12040  12195   
                                as ::aws_smithy_http_server::plugin::Plugin<
12041  12196   
                                    RestJson<L>,
12042         -
                                    crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12197  +
                                    crate::operation_shape::PostUnionWithJsonName,
12043  12198   
                                    ModelPl::Output
12044  12199   
                                >
12045  12200   
                            >::Output
12046  12201   
                        >,
12047  12202   
12048  12203   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
12049  12204   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
12050  12205   
12051  12206   
                    {
12052  12207   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
12053  12208   
        use ::aws_smithy_http_server::plugin::Plugin;
12054         -
        let svc = crate::operation_shape::QueryIdempotencyTokenAutoFill::from_handler(handler);
       12209  +
        let svc = crate::operation_shape::PostUnionWithJsonName::from_handler(handler);
12055  12210   
        let svc = self.model_plugin.apply(svc);
12056  12211   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
12057  12212   
            .apply(svc);
12058  12213   
        let svc = self.http_plugin.apply(svc);
12059         -
        self.query_idempotency_token_auto_fill_custom(svc)
       12214  +
        self.post_union_with_json_name_custom(svc)
       12215  +
    }
       12216  +
       12217  +
    /// Sets the [`PostUnionWithJsonName`](crate::operation_shape::PostUnionWithJsonName) operation.
       12218  +
    ///
       12219  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
       12220  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
       12221  +
    ///
       12222  +
    /// # Example
       12223  +
    ///
       12224  +
    /// ```no_run
       12225  +
    /// use rest_json::{RestJson, RestJsonConfig};
       12226  +
    ///
       12227  +
    /// use rest_json::{input, output, error};
       12228  +
    ///
       12229  +
    /// async fn handler(input: input::PostUnionWithJsonNameInput) -> Result<output::PostUnionWithJsonNameOutput, error::PostUnionWithJsonNameError> {
       12230  +
    ///     todo!()
       12231  +
    /// }
       12232  +
    ///
       12233  +
    /// let config = RestJsonConfig::builder().build();
       12234  +
    /// let svc = ::tower::util::service_fn(handler);
       12235  +
    /// let app = RestJson::builder(config)
       12236  +
    ///     .post_union_with_json_name_service(svc)
       12237  +
    ///     /* Set other handlers */
       12238  +
    ///     .build()
       12239  +
    ///     .unwrap();
       12240  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
       12241  +
    /// ```
       12242  +
    ///
       12243  +
                    pub fn post_union_with_json_name_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       12244  +
                    where
       12245  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::PostUnionWithJsonName, ServiceExtractors>,
       12246  +
       12247  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
       12248  +
                            RestJson<L>,
       12249  +
                            crate::operation_shape::PostUnionWithJsonName,
       12250  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::PostUnionWithJsonName, S>
       12251  +
                        >,
       12252  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
       12253  +
                            RestJson<L>,
       12254  +
                            crate::operation_shape::PostUnionWithJsonName,
       12255  +
                            ModelPl::Output
       12256  +
                        >,
       12257  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
       12258  +
                            RestJson<L>,
       12259  +
                            crate::operation_shape::PostUnionWithJsonName,
       12260  +
                            <
       12261  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
       12262  +
                                as ::aws_smithy_http_server::plugin::Plugin<
       12263  +
                                    RestJson<L>,
       12264  +
                                    crate::operation_shape::PostUnionWithJsonName,
       12265  +
                                    ModelPl::Output
       12266  +
                                >
       12267  +
                            >::Output
       12268  +
                        >,
       12269  +
       12270  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
       12271  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
       12272  +
       12273  +
                    {
       12274  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
       12275  +
        use ::aws_smithy_http_server::plugin::Plugin;
       12276  +
        let svc = crate::operation_shape::PostUnionWithJsonName::from_service(service);
       12277  +
        let svc = self.model_plugin.apply(svc);
       12278  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
       12279  +
            .apply(svc);
       12280  +
        let svc = self.http_plugin.apply(svc);
       12281  +
        self.post_union_with_json_name_custom(svc)
       12282  +
    }
       12283  +
       12284  +
    /// Sets the [`PostUnionWithJsonName`](crate::operation_shape::PostUnionWithJsonName) to a custom [`Service`](tower::Service).
       12285  +
    /// not constrained by the Smithy contract.
       12286  +
    fn post_union_with_json_name_custom<S>(mut self, svc: S) -> Self
       12287  +
    where
       12288  +
        S: ::tower::Service<
       12289  +
                ::http::Request<Body>,
       12290  +
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
       12291  +
                Error = ::std::convert::Infallible,
       12292  +
            > + Clone
       12293  +
            + Send
       12294  +
            + 'static,
       12295  +
        S::Future: Send + 'static,
       12296  +
    {
       12297  +
        self.post_union_with_json_name = Some(::aws_smithy_http_server::routing::Route::new(svc));
       12298  +
        self
       12299  +
    }
       12300  +
       12301  +
    /// Sets the [`PutWithContentEncoding`](crate::operation_shape::PutWithContentEncoding) operation.
       12302  +
    ///
       12303  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
       12304  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
       12305  +
    ///
       12306  +
    /// # Example
       12307  +
    ///
       12308  +
    /// ```no_run
       12309  +
    /// use rest_json::{RestJson, RestJsonConfig};
       12310  +
    ///
       12311  +
    /// use rest_json::{input, output, error};
       12312  +
    ///
       12313  +
    /// async fn handler(input: input::PutWithContentEncodingInput) -> Result<output::PutWithContentEncodingOutput, error::PutWithContentEncodingError> {
       12314  +
    ///     todo!()
       12315  +
    /// }
       12316  +
    ///
       12317  +
    /// let config = RestJsonConfig::builder().build();
       12318  +
    /// let app = RestJson::builder(config)
       12319  +
    ///     .put_with_content_encoding(handler)
       12320  +
    ///     /* Set other handlers */
       12321  +
    ///     .build()
       12322  +
    ///     .unwrap();
       12323  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
       12324  +
    /// ```
       12325  +
    ///
       12326  +
                    pub fn put_with_content_encoding<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       12327  +
                    where
       12328  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::PutWithContentEncoding, HandlerExtractors>,
       12329  +
       12330  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
       12331  +
                            RestJson<L>,
       12332  +
                            crate::operation_shape::PutWithContentEncoding,
       12333  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::PutWithContentEncoding, HandlerType>
       12334  +
                        >,
       12335  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
       12336  +
                            RestJson<L>,
       12337  +
                            crate::operation_shape::PutWithContentEncoding,
       12338  +
                            ModelPl::Output
       12339  +
                        >,
       12340  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
       12341  +
                            RestJson<L>,
       12342  +
                            crate::operation_shape::PutWithContentEncoding,
       12343  +
                            <
       12344  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
       12345  +
                                as ::aws_smithy_http_server::plugin::Plugin<
       12346  +
                                    RestJson<L>,
       12347  +
                                    crate::operation_shape::PutWithContentEncoding,
       12348  +
                                    ModelPl::Output
       12349  +
                                >
       12350  +
                            >::Output
       12351  +
                        >,
       12352  +
       12353  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
       12354  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
       12355  +
       12356  +
                    {
       12357  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
       12358  +
        use ::aws_smithy_http_server::plugin::Plugin;
       12359  +
        let svc = crate::operation_shape::PutWithContentEncoding::from_handler(handler);
       12360  +
        let svc = self.model_plugin.apply(svc);
       12361  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
       12362  +
            .apply(svc);
       12363  +
        let svc = self.http_plugin.apply(svc);
       12364  +
        self.put_with_content_encoding_custom(svc)
       12365  +
    }
       12366  +
       12367  +
    /// Sets the [`PutWithContentEncoding`](crate::operation_shape::PutWithContentEncoding) operation.
       12368  +
    ///
       12369  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
       12370  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
       12371  +
    ///
       12372  +
    /// # Example
       12373  +
    ///
       12374  +
    /// ```no_run
       12375  +
    /// use rest_json::{RestJson, RestJsonConfig};
       12376  +
    ///
       12377  +
    /// use rest_json::{input, output, error};
       12378  +
    ///
       12379  +
    /// async fn handler(input: input::PutWithContentEncodingInput) -> Result<output::PutWithContentEncodingOutput, error::PutWithContentEncodingError> {
       12380  +
    ///     todo!()
       12381  +
    /// }
       12382  +
    ///
       12383  +
    /// let config = RestJsonConfig::builder().build();
       12384  +
    /// let svc = ::tower::util::service_fn(handler);
       12385  +
    /// let app = RestJson::builder(config)
       12386  +
    ///     .put_with_content_encoding_service(svc)
       12387  +
    ///     /* Set other handlers */
       12388  +
    ///     .build()
       12389  +
    ///     .unwrap();
       12390  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
       12391  +
    /// ```
       12392  +
    ///
       12393  +
                    pub fn put_with_content_encoding_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       12394  +
                    where
       12395  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::PutWithContentEncoding, ServiceExtractors>,
       12396  +
       12397  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
       12398  +
                            RestJson<L>,
       12399  +
                            crate::operation_shape::PutWithContentEncoding,
       12400  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::PutWithContentEncoding, S>
       12401  +
                        >,
       12402  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
       12403  +
                            RestJson<L>,
       12404  +
                            crate::operation_shape::PutWithContentEncoding,
       12405  +
                            ModelPl::Output
       12406  +
                        >,
       12407  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
       12408  +
                            RestJson<L>,
       12409  +
                            crate::operation_shape::PutWithContentEncoding,
       12410  +
                            <
       12411  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
       12412  +
                                as ::aws_smithy_http_server::plugin::Plugin<
       12413  +
                                    RestJson<L>,
       12414  +
                                    crate::operation_shape::PutWithContentEncoding,
       12415  +
                                    ModelPl::Output
       12416  +
                                >
       12417  +
                            >::Output
       12418  +
                        >,
       12419  +
       12420  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
       12421  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
       12422  +
       12423  +
                    {
       12424  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
       12425  +
        use ::aws_smithy_http_server::plugin::Plugin;
       12426  +
        let svc = crate::operation_shape::PutWithContentEncoding::from_service(service);
       12427  +
        let svc = self.model_plugin.apply(svc);
       12428  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
       12429  +
            .apply(svc);
       12430  +
        let svc = self.http_plugin.apply(svc);
       12431  +
        self.put_with_content_encoding_custom(svc)
       12432  +
    }
       12433  +
       12434  +
    /// Sets the [`PutWithContentEncoding`](crate::operation_shape::PutWithContentEncoding) to a custom [`Service`](tower::Service).
       12435  +
    /// not constrained by the Smithy contract.
       12436  +
    fn put_with_content_encoding_custom<S>(mut self, svc: S) -> Self
       12437  +
    where
       12438  +
        S: ::tower::Service<
       12439  +
                ::http::Request<Body>,
       12440  +
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
       12441  +
                Error = ::std::convert::Infallible,
       12442  +
            > + Clone
       12443  +
            + Send
       12444  +
            + 'static,
       12445  +
        S::Future: Send + 'static,
       12446  +
    {
       12447  +
        self.put_with_content_encoding = Some(::aws_smithy_http_server::routing::Route::new(svc));
       12448  +
        self
       12449  +
    }
       12450  +
       12451  +
    /// Sets the [`QueryIdempotencyTokenAutoFill`](crate::operation_shape::QueryIdempotencyTokenAutoFill) operation.
       12452  +
    ///
       12453  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
       12454  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
       12455  +
    ///
       12456  +
    /// # Example
       12457  +
    ///
       12458  +
    /// ```no_run
       12459  +
    /// use rest_json::{RestJson, RestJsonConfig};
       12460  +
    ///
       12461  +
    /// use rest_json::{input, output, error};
       12462  +
    ///
       12463  +
    /// async fn handler(input: input::QueryIdempotencyTokenAutoFillInput) -> Result<output::QueryIdempotencyTokenAutoFillOutput, error::QueryIdempotencyTokenAutoFillError> {
       12464  +
    ///     todo!()
       12465  +
    /// }
       12466  +
    ///
       12467  +
    /// let config = RestJsonConfig::builder().build();
       12468  +
    /// let app = RestJson::builder(config)
       12469  +
    ///     .query_idempotency_token_auto_fill(handler)
       12470  +
    ///     /* Set other handlers */
       12471  +
    ///     .build()
       12472  +
    ///     .unwrap();
       12473  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
       12474  +
    /// ```
       12475  +
    ///
       12476  +
                    pub fn query_idempotency_token_auto_fill<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       12477  +
                    where
       12478  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::QueryIdempotencyTokenAutoFill, HandlerExtractors>,
       12479  +
       12480  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
       12481  +
                            RestJson<L>,
       12482  +
                            crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12483  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::QueryIdempotencyTokenAutoFill, HandlerType>
       12484  +
                        >,
       12485  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
       12486  +
                            RestJson<L>,
       12487  +
                            crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12488  +
                            ModelPl::Output
       12489  +
                        >,
       12490  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
       12491  +
                            RestJson<L>,
       12492  +
                            crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12493  +
                            <
       12494  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
       12495  +
                                as ::aws_smithy_http_server::plugin::Plugin<
       12496  +
                                    RestJson<L>,
       12497  +
                                    crate::operation_shape::QueryIdempotencyTokenAutoFill,
       12498  +
                                    ModelPl::Output
       12499  +
                                >
       12500  +
                            >::Output
       12501  +
                        >,
       12502  +
       12503  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
       12504  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
       12505  +
       12506  +
                    {
       12507  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
       12508  +
        use ::aws_smithy_http_server::plugin::Plugin;
       12509  +
        let svc = crate::operation_shape::QueryIdempotencyTokenAutoFill::from_handler(handler);
       12510  +
        let svc = self.model_plugin.apply(svc);
       12511  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
       12512  +
            .apply(svc);
       12513  +
        let svc = self.http_plugin.apply(svc);
       12514  +
        self.query_idempotency_token_auto_fill_custom(svc)
12060  12515   
    }
12061  12516   
12062  12517   
    /// Sets the [`QueryIdempotencyTokenAutoFill`](crate::operation_shape::QueryIdempotencyTokenAutoFill) operation.
12063  12518   
    ///
12064  12519   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
12065  12520   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
12066  12521   
    ///
12067  12522   
    /// # Example
12068  12523   
    ///
12069  12524   
    /// ```no_run
@@ -13253,13708 +13676,14281 @@
13273  13728   
    ///
13274  13729   
    /// use rest_json::{input, output, error};
13275  13730   
    ///
13276  13731   
    /// async fn handler(input: input::StreamingTraitsRequireLengthInput) -> Result<output::StreamingTraitsRequireLengthOutput, error::StreamingTraitsRequireLengthError> {
13277  13732   
    ///     todo!()
13278  13733   
    /// }
13279  13734   
    ///
13280  13735   
    /// let config = RestJsonConfig::builder().build();
13281  13736   
    /// let svc = ::tower::util::service_fn(handler);
13282  13737   
    /// let app = RestJson::builder(config)
13283         -
    ///     .streaming_traits_require_length_service(svc)
       13738  +
    ///     .streaming_traits_require_length_service(svc)
       13739  +
    ///     /* Set other handlers */
       13740  +
    ///     .build()
       13741  +
    ///     .unwrap();
       13742  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
       13743  +
    /// ```
       13744  +
    ///
       13745  +
                    pub fn streaming_traits_require_length_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       13746  +
                    where
       13747  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::StreamingTraitsRequireLength, ServiceExtractors>,
       13748  +
       13749  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
       13750  +
                            RestJson<L>,
       13751  +
                            crate::operation_shape::StreamingTraitsRequireLength,
       13752  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::StreamingTraitsRequireLength, S>
       13753  +
                        >,
       13754  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
       13755  +
                            RestJson<L>,
       13756  +
                            crate::operation_shape::StreamingTraitsRequireLength,
       13757  +
                            ModelPl::Output
       13758  +
                        >,
       13759  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
       13760  +
                            RestJson<L>,
       13761  +
                            crate::operation_shape::StreamingTraitsRequireLength,
       13762  +
                            <
       13763  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
       13764  +
                                as ::aws_smithy_http_server::plugin::Plugin<
       13765  +
                                    RestJson<L>,
       13766  +
                                    crate::operation_shape::StreamingTraitsRequireLength,
       13767  +
                                    ModelPl::Output
       13768  +
                                >
       13769  +
                            >::Output
       13770  +
                        >,
       13771  +
       13772  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
       13773  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
       13774  +
       13775  +
                    {
       13776  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
       13777  +
        use ::aws_smithy_http_server::plugin::Plugin;
       13778  +
        let svc = crate::operation_shape::StreamingTraitsRequireLength::from_service(service);
       13779  +
        let svc = self.model_plugin.apply(svc);
       13780  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
       13781  +
            .apply(svc);
       13782  +
        let svc = self.http_plugin.apply(svc);
       13783  +
        self.streaming_traits_require_length_custom(svc)
       13784  +
    }
       13785  +
       13786  +
    /// Sets the [`StreamingTraitsRequireLength`](crate::operation_shape::StreamingTraitsRequireLength) to a custom [`Service`](tower::Service).
       13787  +
    /// not constrained by the Smithy contract.
       13788  +
    fn streaming_traits_require_length_custom<S>(mut self, svc: S) -> Self
       13789  +
    where
       13790  +
        S: ::tower::Service<
       13791  +
                ::http::Request<Body>,
       13792  +
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
       13793  +
                Error = ::std::convert::Infallible,
       13794  +
            > + Clone
       13795  +
            + Send
       13796  +
            + 'static,
       13797  +
        S::Future: Send + 'static,
       13798  +
    {
       13799  +
        self.streaming_traits_require_length =
       13800  +
            Some(::aws_smithy_http_server::routing::Route::new(svc));
       13801  +
        self
       13802  +
    }
       13803  +
       13804  +
    /// Sets the [`StreamingTraitsWithMediaType`](crate::operation_shape::StreamingTraitsWithMediaType) operation.
       13805  +
    ///
       13806  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
       13807  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
       13808  +
    ///
       13809  +
    /// # Example
       13810  +
    ///
       13811  +
    /// ```no_run
       13812  +
    /// use rest_json::{RestJson, RestJsonConfig};
       13813  +
    ///
       13814  +
    /// use rest_json::{input, output, error};
       13815  +
    ///
       13816  +
    /// async fn handler(input: input::StreamingTraitsWithMediaTypeInput) -> Result<output::StreamingTraitsWithMediaTypeOutput, error::StreamingTraitsWithMediaTypeError> {
       13817  +
    ///     todo!()
       13818  +
    /// }
       13819  +
    ///
       13820  +
    /// let config = RestJsonConfig::builder().build();
       13821  +
    /// let app = RestJson::builder(config)
       13822  +
    ///     .streaming_traits_with_media_type(handler)
       13823  +
    ///     /* Set other handlers */
       13824  +
    ///     .build()
       13825  +
    ///     .unwrap();
       13826  +
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
       13827  +
    /// ```
       13828  +
    ///
       13829  +
                    pub fn streaming_traits_with_media_type<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       13830  +
                    where
       13831  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::StreamingTraitsWithMediaType, HandlerExtractors>,
       13832  +
       13833  +
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
       13834  +
                            RestJson<L>,
       13835  +
                            crate::operation_shape::StreamingTraitsWithMediaType,
       13836  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::StreamingTraitsWithMediaType, HandlerType>
       13837  +
                        >,
       13838  +
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
       13839  +
                            RestJson<L>,
       13840  +
                            crate::operation_shape::StreamingTraitsWithMediaType,
       13841  +
                            ModelPl::Output
       13842  +
                        >,
       13843  +
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
       13844  +
                            RestJson<L>,
       13845  +
                            crate::operation_shape::StreamingTraitsWithMediaType,
       13846  +
                            <
       13847  +
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
       13848  +
                                as ::aws_smithy_http_server::plugin::Plugin<
       13849  +
                                    RestJson<L>,
       13850  +
                                    crate::operation_shape::StreamingTraitsWithMediaType,
       13851  +
                                    ModelPl::Output
       13852  +
                                >
       13853  +
                            >::Output
       13854  +
                        >,
       13855  +
       13856  +
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
       13857  +
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
       13858  +
       13859  +
                    {
       13860  +
        use ::aws_smithy_http_server::operation::OperationShapeExt;
       13861  +
        use ::aws_smithy_http_server::plugin::Plugin;
       13862  +
        let svc = crate::operation_shape::StreamingTraitsWithMediaType::from_handler(handler);
       13863  +
        let svc = self.model_plugin.apply(svc);
       13864  +
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
       13865  +
            .apply(svc);
       13866  +
        let svc = self.http_plugin.apply(svc);
       13867  +
        self.streaming_traits_with_media_type_custom(svc)
       13868  +
    }
       13869  +
       13870  +
    /// Sets the [`StreamingTraitsWithMediaType`](crate::operation_shape::StreamingTraitsWithMediaType) operation.
       13871  +
    ///
       13872  +
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
       13873  +
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
       13874  +
    ///
       13875  +
    /// # Example
       13876  +
    ///
       13877  +
    /// ```no_run
       13878  +
    /// use rest_json::{RestJson, RestJsonConfig};
       13879  +
    ///
       13880  +
    /// use rest_json::{input, output, error};
       13881  +
    ///
       13882  +
    /// async fn handler(input: input::StreamingTraitsWithMediaTypeInput) -> Result<output::StreamingTraitsWithMediaTypeOutput, error::StreamingTraitsWithMediaTypeError> {
       13883  +
    ///     todo!()
       13884  +
    /// }
       13885  +
    ///
       13886  +
    /// let config = RestJsonConfig::builder().build();
       13887  +
    /// let svc = ::tower::util::service_fn(handler);
       13888  +
    /// let app = RestJson::builder(config)
       13889  +
    ///     .streaming_traits_with_media_type_service(svc)
13284  13890   
    ///     /* Set other handlers */
13285  13891   
    ///     .build()
13286  13892   
    ///     .unwrap();
13287  13893   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
13288  13894   
    /// ```
13289  13895   
    ///
13290         -
                    pub fn streaming_traits_require_length_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       13896  +
                    pub fn streaming_traits_with_media_type_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
13291  13897   
                    where
13292         -
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::StreamingTraitsRequireLength, ServiceExtractors>,
       13898  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::StreamingTraitsWithMediaType, ServiceExtractors>,
13293  13899   
13294  13900   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
13295  13901   
                            RestJson<L>,
13296         -
                            crate::operation_shape::StreamingTraitsRequireLength,
13297         -
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::StreamingTraitsRequireLength, S>
       13902  +
                            crate::operation_shape::StreamingTraitsWithMediaType,
       13903  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::StreamingTraitsWithMediaType, S>
13298  13904   
                        >,
13299  13905   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
13300  13906   
                            RestJson<L>,
13301         -
                            crate::operation_shape::StreamingTraitsRequireLength,
       13907  +
                            crate::operation_shape::StreamingTraitsWithMediaType,
13302  13908   
                            ModelPl::Output
13303  13909   
                        >,
13304  13910   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
13305  13911   
                            RestJson<L>,
13306         -
                            crate::operation_shape::StreamingTraitsRequireLength,
       13912  +
                            crate::operation_shape::StreamingTraitsWithMediaType,
13307  13913   
                            <
13308  13914   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
13309  13915   
                                as ::aws_smithy_http_server::plugin::Plugin<
13310  13916   
                                    RestJson<L>,
13311         -
                                    crate::operation_shape::StreamingTraitsRequireLength,
       13917  +
                                    crate::operation_shape::StreamingTraitsWithMediaType,
13312  13918   
                                    ModelPl::Output
13313  13919   
                                >
13314  13920   
                            >::Output
13315  13921   
                        >,
13316  13922   
13317  13923   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
13318  13924   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
13319  13925   
13320  13926   
                    {
13321  13927   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
13322  13928   
        use ::aws_smithy_http_server::plugin::Plugin;
13323         -
        let svc = crate::operation_shape::StreamingTraitsRequireLength::from_service(service);
       13929  +
        let svc = crate::operation_shape::StreamingTraitsWithMediaType::from_service(service);
13324  13930   
        let svc = self.model_plugin.apply(svc);
13325  13931   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
13326  13932   
            .apply(svc);
13327  13933   
        let svc = self.http_plugin.apply(svc);
13328         -
        self.streaming_traits_require_length_custom(svc)
       13934  +
        self.streaming_traits_with_media_type_custom(svc)
13329  13935   
    }
13330  13936   
13331         -
    /// Sets the [`StreamingTraitsRequireLength`](crate::operation_shape::StreamingTraitsRequireLength) to a custom [`Service`](tower::Service).
       13937  +
    /// Sets the [`StreamingTraitsWithMediaType`](crate::operation_shape::StreamingTraitsWithMediaType) to a custom [`Service`](tower::Service).
13332  13938   
    /// not constrained by the Smithy contract.
13333         -
    fn streaming_traits_require_length_custom<S>(mut self, svc: S) -> Self
       13939  +
    fn streaming_traits_with_media_type_custom<S>(mut self, svc: S) -> Self
13334  13940   
    where
13335  13941   
        S: ::tower::Service<
13336  13942   
                ::http::Request<Body>,
13337  13943   
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
13338  13944   
                Error = ::std::convert::Infallible,
13339  13945   
            > + Clone
13340  13946   
            + Send
13341  13947   
            + 'static,
13342  13948   
        S::Future: Send + 'static,
13343  13949   
    {
13344         -
        self.streaming_traits_require_length =
       13950  +
        self.streaming_traits_with_media_type =
13345  13951   
            Some(::aws_smithy_http_server::routing::Route::new(svc));
13346  13952   
        self
13347  13953   
    }
13348  13954   
13349         -
    /// Sets the [`StreamingTraitsWithMediaType`](crate::operation_shape::StreamingTraitsWithMediaType) operation.
       13955  +
    /// Sets the [`TestBodyStructure`](crate::operation_shape::TestBodyStructure) operation.
13350  13956   
    ///
13351  13957   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
13352  13958   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
13353  13959   
    ///
13354  13960   
    /// # Example
13355  13961   
    ///
13356  13962   
    /// ```no_run
13357  13963   
    /// use rest_json::{RestJson, RestJsonConfig};
13358  13964   
    ///
13359  13965   
    /// use rest_json::{input, output, error};
13360  13966   
    ///
13361         -
    /// async fn handler(input: input::StreamingTraitsWithMediaTypeInput) -> Result<output::StreamingTraitsWithMediaTypeOutput, error::StreamingTraitsWithMediaTypeError> {
       13967  +
    /// async fn handler(input: input::TestBodyStructureInput) -> Result<output::TestBodyStructureOutput, error::TestBodyStructureError> {
13362  13968   
    ///     todo!()
13363  13969   
    /// }
13364  13970   
    ///
13365  13971   
    /// let config = RestJsonConfig::builder().build();
13366  13972   
    /// let app = RestJson::builder(config)
13367         -
    ///     .streaming_traits_with_media_type(handler)
       13973  +
    ///     .test_body_structure(handler)
13368  13974   
    ///     /* Set other handlers */
13369  13975   
    ///     .build()
13370  13976   
    ///     .unwrap();
13371  13977   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
13372  13978   
    /// ```
13373  13979   
    ///
13374         -
                    pub fn streaming_traits_with_media_type<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       13980  +
                    pub fn test_body_structure<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
13375  13981   
                    where
13376         -
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::StreamingTraitsWithMediaType, HandlerExtractors>,
       13982  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::TestBodyStructure, HandlerExtractors>,
13377  13983   
13378  13984   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
13379  13985   
                            RestJson<L>,
13380         -
                            crate::operation_shape::StreamingTraitsWithMediaType,
13381         -
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::StreamingTraitsWithMediaType, HandlerType>
       13986  +
                            crate::operation_shape::TestBodyStructure,
       13987  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::TestBodyStructure, HandlerType>
13382  13988   
                        >,
13383  13989   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
13384  13990   
                            RestJson<L>,
13385         -
                            crate::operation_shape::StreamingTraitsWithMediaType,
       13991  +
                            crate::operation_shape::TestBodyStructure,
13386  13992   
                            ModelPl::Output
13387  13993   
                        >,
13388  13994   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
13389  13995   
                            RestJson<L>,
13390         -
                            crate::operation_shape::StreamingTraitsWithMediaType,
       13996  +
                            crate::operation_shape::TestBodyStructure,
13391  13997   
                            <
13392  13998   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
13393  13999   
                                as ::aws_smithy_http_server::plugin::Plugin<
13394  14000   
                                    RestJson<L>,
13395         -
                                    crate::operation_shape::StreamingTraitsWithMediaType,
       14001  +
                                    crate::operation_shape::TestBodyStructure,
13396  14002   
                                    ModelPl::Output
13397  14003   
                                >
13398  14004   
                            >::Output
13399  14005   
                        >,
13400  14006   
13401  14007   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
13402  14008   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
13403  14009   
13404  14010   
                    {
13405  14011   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
13406  14012   
        use ::aws_smithy_http_server::plugin::Plugin;
13407         -
        let svc = crate::operation_shape::StreamingTraitsWithMediaType::from_handler(handler);
       14013  +
        let svc = crate::operation_shape::TestBodyStructure::from_handler(handler);
13408  14014   
        let svc = self.model_plugin.apply(svc);
13409  14015   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
13410  14016   
            .apply(svc);
13411  14017   
        let svc = self.http_plugin.apply(svc);
13412         -
        self.streaming_traits_with_media_type_custom(svc)
       14018  +
        self.test_body_structure_custom(svc)
13413  14019   
    }
13414  14020   
13415         -
    /// Sets the [`StreamingTraitsWithMediaType`](crate::operation_shape::StreamingTraitsWithMediaType) operation.
       14021  +
    /// Sets the [`TestBodyStructure`](crate::operation_shape::TestBodyStructure) operation.
13416  14022   
    ///
13417  14023   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
13418  14024   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
13419  14025   
    ///
13420  14026   
    /// # Example
13421  14027   
    ///
13422  14028   
    /// ```no_run
13423  14029   
    /// use rest_json::{RestJson, RestJsonConfig};
13424  14030   
    ///
13425  14031   
    /// use rest_json::{input, output, error};
13426  14032   
    ///
13427         -
    /// async fn handler(input: input::StreamingTraitsWithMediaTypeInput) -> Result<output::StreamingTraitsWithMediaTypeOutput, error::StreamingTraitsWithMediaTypeError> {
       14033  +
    /// async fn handler(input: input::TestBodyStructureInput) -> Result<output::TestBodyStructureOutput, error::TestBodyStructureError> {
13428  14034   
    ///     todo!()
13429  14035   
    /// }
13430  14036   
    ///
13431  14037   
    /// let config = RestJsonConfig::builder().build();
13432  14038   
    /// let svc = ::tower::util::service_fn(handler);
13433  14039   
    /// let app = RestJson::builder(config)
13434         -
    ///     .streaming_traits_with_media_type_service(svc)
       14040  +
    ///     .test_body_structure_service(svc)
13435  14041   
    ///     /* Set other handlers */
13436  14042   
    ///     .build()
13437  14043   
    ///     .unwrap();
13438  14044   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
13439  14045   
    /// ```
13440  14046   
    ///
13441         -
                    pub fn streaming_traits_with_media_type_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       14047  +
                    pub fn test_body_structure_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
13442  14048   
                    where
13443         -
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::StreamingTraitsWithMediaType, ServiceExtractors>,
       14049  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::TestBodyStructure, ServiceExtractors>,
13444  14050   
13445  14051   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
13446  14052   
                            RestJson<L>,
13447         -
                            crate::operation_shape::StreamingTraitsWithMediaType,
13448         -
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::StreamingTraitsWithMediaType, S>
       14053  +
                            crate::operation_shape::TestBodyStructure,
       14054  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::TestBodyStructure, S>
13449  14055   
                        >,
13450  14056   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
13451  14057   
                            RestJson<L>,
13452         -
                            crate::operation_shape::StreamingTraitsWithMediaType,
       14058  +
                            crate::operation_shape::TestBodyStructure,
13453  14059   
                            ModelPl::Output
13454  14060   
                        >,
13455  14061   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
13456  14062   
                            RestJson<L>,
13457         -
                            crate::operation_shape::StreamingTraitsWithMediaType,
       14063  +
                            crate::operation_shape::TestBodyStructure,
13458  14064   
                            <
13459  14065   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
13460  14066   
                                as ::aws_smithy_http_server::plugin::Plugin<
13461  14067   
                                    RestJson<L>,
13462         -
                                    crate::operation_shape::StreamingTraitsWithMediaType,
       14068  +
                                    crate::operation_shape::TestBodyStructure,
13463  14069   
                                    ModelPl::Output
13464  14070   
                                >
13465  14071   
                            >::Output
13466  14072   
                        >,
13467  14073   
13468  14074   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
13469  14075   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
13470  14076   
13471  14077   
                    {
13472  14078   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
13473  14079   
        use ::aws_smithy_http_server::plugin::Plugin;
13474         -
        let svc = crate::operation_shape::StreamingTraitsWithMediaType::from_service(service);
       14080  +
        let svc = crate::operation_shape::TestBodyStructure::from_service(service);
13475  14081   
        let svc = self.model_plugin.apply(svc);
13476  14082   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
13477  14083   
            .apply(svc);
13478  14084   
        let svc = self.http_plugin.apply(svc);
13479         -
        self.streaming_traits_with_media_type_custom(svc)
       14085  +
        self.test_body_structure_custom(svc)
13480  14086   
    }
13481  14087   
13482         -
    /// Sets the [`StreamingTraitsWithMediaType`](crate::operation_shape::StreamingTraitsWithMediaType) to a custom [`Service`](tower::Service).
       14088  +
    /// Sets the [`TestBodyStructure`](crate::operation_shape::TestBodyStructure) to a custom [`Service`](tower::Service).
13483  14089   
    /// not constrained by the Smithy contract.
13484         -
    fn streaming_traits_with_media_type_custom<S>(mut self, svc: S) -> Self
       14090  +
    fn test_body_structure_custom<S>(mut self, svc: S) -> Self
13485  14091   
    where
13486  14092   
        S: ::tower::Service<
13487  14093   
                ::http::Request<Body>,
13488  14094   
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
13489  14095   
                Error = ::std::convert::Infallible,
13490  14096   
            > + Clone
13491  14097   
            + Send
13492  14098   
            + 'static,
13493  14099   
        S::Future: Send + 'static,
13494  14100   
    {
13495         -
        self.streaming_traits_with_media_type =
13496         -
            Some(::aws_smithy_http_server::routing::Route::new(svc));
       14101  +
        self.test_body_structure = Some(::aws_smithy_http_server::routing::Route::new(svc));
13497  14102   
        self
13498  14103   
    }
13499  14104   
13500         -
    /// Sets the [`TestBodyStructure`](crate::operation_shape::TestBodyStructure) operation.
       14105  +
    /// Sets the [`TestNoInputNoPayload`](crate::operation_shape::TestNoInputNoPayload) operation.
13501  14106   
    ///
13502  14107   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
13503  14108   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
13504  14109   
    ///
13505  14110   
    /// # Example
13506  14111   
    ///
13507  14112   
    /// ```no_run
13508  14113   
    /// use rest_json::{RestJson, RestJsonConfig};
13509  14114   
    ///
13510  14115   
    /// use rest_json::{input, output, error};
13511  14116   
    ///
13512         -
    /// async fn handler(input: input::TestBodyStructureInput) -> Result<output::TestBodyStructureOutput, error::TestBodyStructureError> {
       14117  +
    /// async fn handler(input: input::TestNoInputNoPayloadInput) -> Result<output::TestNoInputNoPayloadOutput, error::TestNoInputNoPayloadError> {
13513  14118   
    ///     todo!()
13514  14119   
    /// }
13515  14120   
    ///
13516  14121   
    /// let config = RestJsonConfig::builder().build();
13517  14122   
    /// let app = RestJson::builder(config)
13518         -
    ///     .test_body_structure(handler)
       14123  +
    ///     .test_no_input_no_payload(handler)
13519  14124   
    ///     /* Set other handlers */
13520  14125   
    ///     .build()
13521  14126   
    ///     .unwrap();
13522  14127   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
13523  14128   
    /// ```
13524  14129   
    ///
13525         -
                    pub fn test_body_structure<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
       14130  +
                    pub fn test_no_input_no_payload<HandlerType, HandlerExtractors, UpgradeExtractors>(self, handler: HandlerType) -> Self
13526  14131   
                    where
13527         -
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::TestBodyStructure, HandlerExtractors>,
       14132  +
                        HandlerType: ::aws_smithy_http_server::operation::Handler<crate::operation_shape::TestNoInputNoPayload, HandlerExtractors>,
13528  14133   
13529  14134   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
13530  14135   
                            RestJson<L>,
13531         -
                            crate::operation_shape::TestBodyStructure,
13532         -
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::TestBodyStructure, HandlerType>
       14136  +
                            crate::operation_shape::TestNoInputNoPayload,
       14137  +
                            ::aws_smithy_http_server::operation::IntoService<crate::operation_shape::TestNoInputNoPayload, HandlerType>
13533  14138   
                        >,
13534  14139   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
13535  14140   
                            RestJson<L>,
13536         -
                            crate::operation_shape::TestBodyStructure,
       14141  +
                            crate::operation_shape::TestNoInputNoPayload,
13537  14142   
                            ModelPl::Output
13538  14143   
                        >,
13539  14144   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
13540  14145   
                            RestJson<L>,
13541         -
                            crate::operation_shape::TestBodyStructure,
       14146  +
                            crate::operation_shape::TestNoInputNoPayload,
13542  14147   
                            <
13543  14148   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
13544  14149   
                                as ::aws_smithy_http_server::plugin::Plugin<
13545  14150   
                                    RestJson<L>,
13546         -
                                    crate::operation_shape::TestBodyStructure,
       14151  +
                                    crate::operation_shape::TestNoInputNoPayload,
13547  14152   
                                    ModelPl::Output
13548  14153   
                                >
13549  14154   
                            >::Output
13550  14155   
                        >,
13551  14156   
13552  14157   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
13553  14158   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
13554  14159   
13555  14160   
                    {
13556  14161   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
13557  14162   
        use ::aws_smithy_http_server::plugin::Plugin;
13558         -
        let svc = crate::operation_shape::TestBodyStructure::from_handler(handler);
       14163  +
        let svc = crate::operation_shape::TestNoInputNoPayload::from_handler(handler);
13559  14164   
        let svc = self.model_plugin.apply(svc);
13560  14165   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
13561  14166   
            .apply(svc);
13562  14167   
        let svc = self.http_plugin.apply(svc);
13563         -
        self.test_body_structure_custom(svc)
       14168  +
        self.test_no_input_no_payload_custom(svc)
13564  14169   
    }
13565  14170   
13566         -
    /// Sets the [`TestBodyStructure`](crate::operation_shape::TestBodyStructure) operation.
       14171  +
    /// Sets the [`TestNoInputNoPayload`](crate::operation_shape::TestNoInputNoPayload) operation.
13567  14172   
    ///
13568  14173   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
13569  14174   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
13570  14175   
    ///
13571  14176   
    /// # Example
13572  14177   
    ///
13573  14178   
    /// ```no_run
13574  14179   
    /// use rest_json::{RestJson, RestJsonConfig};
13575  14180   
    ///
13576  14181   
    /// use rest_json::{input, output, error};
13577  14182   
    ///
13578         -
    /// async fn handler(input: input::TestBodyStructureInput) -> Result<output::TestBodyStructureOutput, error::TestBodyStructureError> {
       14183  +
    /// async fn handler(input: input::TestNoInputNoPayloadInput) -> Result<output::TestNoInputNoPayloadOutput, error::TestNoInputNoPayloadError> {
13579  14184   
    ///     todo!()
13580  14185   
    /// }
13581  14186   
    ///
13582  14187   
    /// let config = RestJsonConfig::builder().build();
13583  14188   
    /// let svc = ::tower::util::service_fn(handler);
13584  14189   
    /// let app = RestJson::builder(config)
13585         -
    ///     .test_body_structure_service(svc)
       14190  +
    ///     .test_no_input_no_payload_service(svc)
13586  14191   
    ///     /* Set other handlers */
13587  14192   
    ///     .build()
13588  14193   
    ///     .unwrap();
13589  14194   
    /// # let app: RestJson<::aws_smithy_http_server::routing::RoutingService<::aws_smithy_http_server::protocol::rest::router::RestRouter<::aws_smithy_http_server::routing::Route>, ::aws_smithy_http_server::protocol::rest_json_1::RestJson1>> = app;
13590  14195   
    /// ```
13591  14196   
    ///
13592         -
                    pub fn test_body_structure_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
       14197  +
                    pub fn test_no_input_no_payload_service<S, ServiceExtractors, UpgradeExtractors>(self, service: S) -> Self
13593  14198   
                    where
13594         -
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::TestBodyStructure, ServiceExtractors>,
       14199  +
                        S: ::aws_smithy_http_server::operation::OperationService<crate::operation_shape::TestNoInputNoPayload, ServiceExtractors>,
13595  14200   
13596  14201   
                        ModelPl: ::aws_smithy_http_server::plugin::Plugin<
13597  14202   
                            RestJson<L>,
13598         -
                            crate::operation_shape::TestBodyStructure,
13599         -
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::TestBodyStructure, S>
       14203  +
                            crate::operation_shape::TestNoInputNoPayload,
       14204  +
                            ::aws_smithy_http_server::operation::Normalize<crate::operation_shape::TestNoInputNoPayload, S>
13600  14205   
                        >,
13601  14206   
                        ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>: ::aws_smithy_http_server::plugin::Plugin<
13602  14207   
                            RestJson<L>,
13603         -
                            crate::operation_shape::TestBodyStructure,
       14208  +
                            crate::operation_shape::TestNoInputNoPayload,
13604  14209   
                            ModelPl::Output
13605  14210   
                        >,
13606  14211   
                        HttpPl: ::aws_smithy_http_server::plugin::Plugin<
13607  14212   
                            RestJson<L>,
13608         -
                            crate::operation_shape::TestBodyStructure,
       14213  +
                            crate::operation_shape::TestNoInputNoPayload,
13609  14214   
                            <
13610  14215   
                                ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>
13611  14216   
                                as ::aws_smithy_http_server::plugin::Plugin<
13612  14217   
                                    RestJson<L>,
13613         -
                                    crate::operation_shape::TestBodyStructure,
       14218  +
                                    crate::operation_shape::TestNoInputNoPayload,
13614  14219   
                                    ModelPl::Output
13615  14220   
                                >
13616  14221   
                            >::Output
13617  14222   
                        >,
13618  14223   
13619  14224   
                        HttpPl::Output: ::tower::Service<::http::Request<Body>, Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>, Error = ::std::convert::Infallible> + Clone + Send + 'static,
13620  14225   
                        <HttpPl::Output as ::tower::Service<::http::Request<Body>>>::Future: Send + 'static,
13621  14226   
13622  14227   
                    {
13623  14228   
        use ::aws_smithy_http_server::operation::OperationShapeExt;
13624  14229   
        use ::aws_smithy_http_server::plugin::Plugin;
13625         -
        let svc = crate::operation_shape::TestBodyStructure::from_service(service);
       14230  +
        let svc = crate::operation_shape::TestNoInputNoPayload::from_service(service);
13626  14231   
        let svc = self.model_plugin.apply(svc);
13627  14232   
        let svc = ::aws_smithy_http_server::operation::UpgradePlugin::<UpgradeExtractors>::new()
13628  14233   
            .apply(svc);
13629  14234   
        let svc = self.http_plugin.apply(svc);
13630         -
        self.test_body_structure_custom(svc)
       14235  +
        self.test_no_input_no_payload_custom(svc)
13631  14236   
    }
13632  14237   
13633         -
    /// Sets the [`TestBodyStructure`](crate::operation_shape::TestBodyStructure) to a custom [`Service`](tower::Service).
       14238  +
    /// Sets the [`TestNoInputNoPayload`](crate::operation_shape::TestNoInputNoPayload) to a custom [`Service`](tower::Service).
13634  14239   
    /// not constrained by the Smithy contract.
13635         -
    fn test_body_structure_custom<S>(mut self, svc: S) -> Self
       14240  +
    fn test_no_input_no_payload_custom<S>(mut self, svc: S) -> Self
13636  14241   
    where
13637  14242   
        S: ::tower::Service<
13638  14243   
                ::http::Request<Body>,
13639  14244   
                Response = ::http::Response<::aws_smithy_http_server::body::BoxBody>,
13640  14245   
                Error = ::std::convert::Infallible,
13641  14246   
            > + Clone
13642  14247   
            + Send
13643  14248   
            + 'static,
13644  14249   
        S::Future: Send + 'static,
13645  14250   
    {
13646         -
        self.test_body_structure = Some(::aws_smithy_http_server::routing::Route::new(svc));
       14251  +
        self.test_no_input_no_payload = Some(::aws_smithy_http_server::routing::Route::new(svc));
13647  14252   
        self
13648  14253   
    }
13649  14254   
13650  14255   
    /// Sets the [`TestNoPayload`](crate::operation_shape::TestNoPayload) operation.
13651  14256   
    ///
13652  14257   
    /// This should be an async function satisfying the [`Handler`](::aws_smithy_http_server::operation::Handler) trait.
13653  14258   
    /// See the [operation module documentation](::aws_smithy_http_server::operation) for more information.
13654  14259   
    ///
13655  14260   
    /// # Example
13656  14261   
    ///
@@ -14413,15018 +14472,15083 @@
14433  15038   
                    crate::operation_shape::ConstantAndVariableQueryString::ID,
14434  15039   
                    ".constant_and_variable_query_string()",
14435  15040   
                );
14436  15041   
            }
14437  15042   
            if self.constant_query_string.is_none() {
14438  15043   
                missing_operation_names.insert(
14439  15044   
                    crate::operation_shape::ConstantQueryString::ID,
14440  15045   
                    ".constant_query_string()",
14441  15046   
                );
14442  15047   
            }
       15048  +
            if self.content_type_parameters.is_none() {
       15049  +
                missing_operation_names.insert(
       15050  +
                    crate::operation_shape::ContentTypeParameters::ID,
       15051  +
                    ".content_type_parameters()",
       15052  +
                );
       15053  +
            }
14443  15054   
            if self.datetime_offsets.is_none() {
14444  15055   
                missing_operation_names.insert(
14445  15056   
                    crate::operation_shape::DatetimeOffsets::ID,
14446  15057   
                    ".datetime_offsets()",
14447  15058   
                );
14448  15059   
            }
14449  15060   
            if self.document_type.is_none() {
14450  15061   
                missing_operation_names
14451  15062   
                    .insert(crate::operation_shape::DocumentType::ID, ".document_type()");
14452  15063   
            }
@@ -14837,15448 +14896,15519 @@
14857  15468   
                    crate::operation_shape::OmitsNullSerializesEmptyString::ID,
14858  15469   
                    ".omits_null_serializes_empty_string()",
14859  15470   
                );
14860  15471   
            }
14861  15472   
            if self.omits_serializing_empty_lists.is_none() {
14862  15473   
                missing_operation_names.insert(
14863  15474   
                    crate::operation_shape::OmitsSerializingEmptyLists::ID,
14864  15475   
                    ".omits_serializing_empty_lists()",
14865  15476   
                );
14866  15477   
            }
       15478  +
            if self.operation_with_defaults.is_none() {
       15479  +
                missing_operation_names.insert(
       15480  +
                    crate::operation_shape::OperationWithDefaults::ID,
       15481  +
                    ".operation_with_defaults()",
       15482  +
                );
       15483  +
            }
       15484  +
            if self.operation_with_nested_structure.is_none() {
       15485  +
                missing_operation_names.insert(
       15486  +
                    crate::operation_shape::OperationWithNestedStructure::ID,
       15487  +
                    ".operation_with_nested_structure()",
       15488  +
                );
       15489  +
            }
14867  15490   
            if self.post_player_action.is_none() {
14868  15491   
                missing_operation_names.insert(
14869  15492   
                    crate::operation_shape::PostPlayerAction::ID,
14870  15493   
                    ".post_player_action()",
14871  15494   
                );
14872  15495   
            }
14873  15496   
            if self.post_union_with_json_name.is_none() {
14874  15497   
                missing_operation_names.insert(
14875  15498   
                    crate::operation_shape::PostUnionWithJsonName::ID,
14876  15499   
                    ".post_union_with_json_name()",
@@ -14921,15544 +15031,15664 @@
14941  15564   
                    crate::operation_shape::StreamingTraitsWithMediaType::ID,
14942  15565   
                    ".streaming_traits_with_media_type()",
14943  15566   
                );
14944  15567   
            }
14945  15568   
            if self.test_body_structure.is_none() {
14946  15569   
                missing_operation_names.insert(
14947  15570   
                    crate::operation_shape::TestBodyStructure::ID,
14948  15571   
                    ".test_body_structure()",
14949  15572   
                );
14950  15573   
            }
       15574  +
            if self.test_no_input_no_payload.is_none() {
       15575  +
                missing_operation_names.insert(
       15576  +
                    crate::operation_shape::TestNoInputNoPayload::ID,
       15577  +
                    ".test_no_input_no_payload()",
       15578  +
                );
       15579  +
            }
14951  15580   
            if self.test_no_payload.is_none() {
14952  15581   
                missing_operation_names.insert(
14953  15582   
                    crate::operation_shape::TestNoPayload::ID,
14954  15583   
                    ".test_no_payload()",
14955  15584   
                );
14956  15585   
            }
14957  15586   
            if self.test_payload_blob.is_none() {
14958  15587   
                missing_operation_names.insert(
14959  15588   
                    crate::operation_shape::TestPayloadBlob::ID,
14960  15589   
                    ".test_payload_blob()",
14961  15590   
                );
14962  15591   
            }
14963  15592   
            if self.test_payload_structure.is_none() {
14964  15593   
                missing_operation_names.insert(
14965  15594   
                    crate::operation_shape::TestPayloadStructure::ID,
14966  15595   
                    ".test_payload_structure()",
14967  15596   
                );
14968  15597   
            }
14969  15598   
            if self.timestamp_format_headers.is_none() {
14970  15599   
                missing_operation_names.insert(
14971  15600   
                    crate::operation_shape::TimestampFormatHeaders::ID,
14972  15601   
                    ".timestamp_format_headers()",
14973  15602   
                );
14974  15603   
            }
14975  15604   
            if self.unit_input_and_output.is_none() {
14976  15605   
                missing_operation_names.insert(
14977  15606   
                    crate::operation_shape::UnitInputAndOutput::ID,
14978  15607   
                    ".unit_input_and_output()",
14979  15608   
                );
14980  15609   
            }
14981  15610   
            if !missing_operation_names.is_empty() {
14982  15611   
                return Err(MissingOperationsError {
14983  15612   
                    operation_names2setter_methods: missing_operation_names,
14984  15613   
                });
14985  15614   
            }
14986  15615   
            let unexpected_error_msg = "this should never panic since we are supposed to check beforehand that a handler has been registered for this operation; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues";
14987  15616   
14988  15617   
            ::aws_smithy_http_server::protocol::rest::router::RestRouter::from_iter([
14989  15618   
                (
14990  15619   
                    request_specs::all_query_string_types(),
14991  15620   
                    self.all_query_string_types.expect(unexpected_error_msg),
14992  15621   
                ),
14993  15622   
                (
14994  15623   
                    request_specs::constant_and_variable_query_string(),
14995  15624   
                    self.constant_and_variable_query_string
14996  15625   
                        .expect(unexpected_error_msg),
14997  15626   
                ),
14998  15627   
                (
14999  15628   
                    request_specs::constant_query_string(),
15000  15629   
                    self.constant_query_string.expect(unexpected_error_msg),
15001  15630   
                ),
       15631  +
                (
       15632  +
                    request_specs::content_type_parameters(),
       15633  +
                    self.content_type_parameters.expect(unexpected_error_msg),
       15634  +
                ),
15002  15635   
                (
15003  15636   
                    request_specs::datetime_offsets(),
15004  15637   
                    self.datetime_offsets.expect(unexpected_error_msg),
15005  15638   
                ),
15006  15639   
                (
15007  15640   
                    request_specs::document_type(),
15008  15641   
                    self.document_type.expect(unexpected_error_msg),
15009  15642   
                ),
15010  15643   
                (
15011  15644   
                    request_specs::document_type_as_map_value(),
@@ -15297,15930 +15416,16062 @@
15317  15950   
                (
15318  15951   
                    request_specs::omits_null_serializes_empty_string(),
15319  15952   
                    self.omits_null_serializes_empty_string
15320  15953   
                        .expect(unexpected_error_msg),
15321  15954   
                ),
15322  15955   
                (
15323  15956   
                    request_specs::omits_serializing_empty_lists(),
15324  15957   
                    self.omits_serializing_empty_lists
15325  15958   
                        .expect(unexpected_error_msg),
15326  15959   
                ),
       15960  +
                (
       15961  +
                    request_specs::operation_with_defaults(),
       15962  +
                    self.operation_with_defaults.expect(unexpected_error_msg),
       15963  +
                ),
       15964  +
                (
       15965  +
                    request_specs::operation_with_nested_structure(),
       15966  +
                    self.operation_with_nested_structure
       15967  +
                        .expect(unexpected_error_msg),
       15968  +
                ),
15327  15969   
                (
15328  15970   
                    request_specs::post_player_action(),
15329  15971   
                    self.post_player_action.expect(unexpected_error_msg),
15330  15972   
                ),
15331  15973   
                (
15332  15974   
                    request_specs::post_union_with_json_name(),
15333  15975   
                    self.post_union_with_json_name.expect(unexpected_error_msg),
15334  15976   
                ),
15335  15977   
                (
15336  15978   
                    request_specs::put_with_content_encoding(),
15337  15979   
                    self.put_with_content_encoding.expect(unexpected_error_msg),
15338  15980   
                ),
15339  15981   
                (
15340  15982   
                    request_specs::query_idempotency_token_auto_fill(),
15341  15983   
                    self.query_idempotency_token_auto_fill
15342  15984   
                        .expect(unexpected_error_msg),
15343  15985   
                ),
15344  15986   
                (
15345  15987   
                    request_specs::query_params_as_string_list_map(),
15346  15988   
                    self.query_params_as_string_list_map
15347  15989   
                        .expect(unexpected_error_msg),
15348  15990   
                ),
15349  15991   
                (
15350  15992   
                    request_specs::query_precedence(),
15351  15993   
                    self.query_precedence.expect(unexpected_error_msg),
15352  15994   
                ),
15353  15995   
                (
15354  15996   
                    request_specs::recursive_shapes(),
15355  15997   
                    self.recursive_shapes.expect(unexpected_error_msg),
15356  15998   
                ),
15357  15999   
                (
15358  16000   
                    request_specs::simple_scalar_properties(),
15359  16001   
                    self.simple_scalar_properties.expect(unexpected_error_msg),
15360  16002   
                ),
15361  16003   
                (
15362  16004   
                    request_specs::sparse_json_lists(),
15363  16005   
                    self.sparse_json_lists.expect(unexpected_error_msg),
15364  16006   
                ),
15365  16007   
                (
15366  16008   
                    request_specs::sparse_json_maps(),
15367  16009   
                    self.sparse_json_maps.expect(unexpected_error_msg),
15368  16010   
                ),
15369  16011   
                (
15370  16012   
                    request_specs::streaming_traits(),
15371  16013   
                    self.streaming_traits.expect(unexpected_error_msg),
15372  16014   
                ),
15373  16015   
                (
15374  16016   
                    request_specs::streaming_traits_require_length(),
15375  16017   
                    self.streaming_traits_require_length
15376  16018   
                        .expect(unexpected_error_msg),
15377  16019   
                ),
15378  16020   
                (
15379  16021   
                    request_specs::streaming_traits_with_media_type(),
15380  16022   
                    self.streaming_traits_with_media_type
15381  16023   
                        .expect(unexpected_error_msg),
15382  16024   
                ),
15383  16025   
                (
15384  16026   
                    request_specs::test_body_structure(),
15385  16027   
                    self.test_body_structure.expect(unexpected_error_msg),
15386  16028   
                ),
       16029  +
                (
       16030  +
                    request_specs::test_no_input_no_payload(),
       16031  +
                    self.test_no_input_no_payload.expect(unexpected_error_msg),
       16032  +
                ),
15387  16033   
                (
15388  16034   
                    request_specs::test_no_payload(),
15389  16035   
                    self.test_no_payload.expect(unexpected_error_msg),
15390  16036   
                ),
15391  16037   
                (
15392  16038   
                    request_specs::test_payload_blob(),
15393  16039   
                    self.test_payload_blob.expect(unexpected_error_msg),
15394  16040   
                ),
15395  16041   
                (
15396  16042   
                    request_specs::test_payload_structure(),
@@ -15429,16075 +15488,16143 @@
15449  16095   
            ),
15450  16096   
            (
15451  16097   
                request_specs::constant_query_string(),
15452  16098   
                self.constant_query_string.unwrap_or_else(|| {
15453  16099   
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
15454  16100   
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
15455  16101   
                    >::default();
15456  16102   
                    ::aws_smithy_http_server::routing::Route::new(svc)
15457  16103   
                }),
15458  16104   
            ),
       16105  +
            (
       16106  +
                request_specs::content_type_parameters(),
       16107  +
                self.content_type_parameters.unwrap_or_else(|| {
       16108  +
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
       16109  +
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
       16110  +
                    >::default();
       16111  +
                    ::aws_smithy_http_server::routing::Route::new(svc)
       16112  +
                }),
       16113  +
            ),
15459  16114   
            (
15460  16115   
                request_specs::datetime_offsets(),
15461  16116   
                self.datetime_offsets.unwrap_or_else(|| {
15462  16117   
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
15463  16118   
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
15464  16119   
                    >::default();
15465  16120   
                    ::aws_smithy_http_server::routing::Route::new(svc)
15466  16121   
                }),
15467  16122   
            ),
15468  16123   
            (
@@ -16091,16746 +16150,16823 @@
16111  16766   
            ),
16112  16767   
            (
16113  16768   
                request_specs::omits_serializing_empty_lists(),
16114  16769   
                self.omits_serializing_empty_lists.unwrap_or_else(|| {
16115  16770   
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
16116  16771   
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
16117  16772   
                    >::default();
16118  16773   
                    ::aws_smithy_http_server::routing::Route::new(svc)
16119  16774   
                }),
16120  16775   
            ),
       16776  +
            (
       16777  +
                request_specs::operation_with_defaults(),
       16778  +
                self.operation_with_defaults.unwrap_or_else(|| {
       16779  +
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
       16780  +
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
       16781  +
                    >::default();
       16782  +
                    ::aws_smithy_http_server::routing::Route::new(svc)
       16783  +
                }),
       16784  +
            ),
       16785  +
            (
       16786  +
                request_specs::operation_with_nested_structure(),
       16787  +
                self.operation_with_nested_structure.unwrap_or_else(|| {
       16788  +
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
       16789  +
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
       16790  +
                    >::default();
       16791  +
                    ::aws_smithy_http_server::routing::Route::new(svc)
       16792  +
                }),
       16793  +
            ),
16121  16794   
            (
16122  16795   
                request_specs::post_player_action(),
16123  16796   
                self.post_player_action.unwrap_or_else(|| {
16124  16797   
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
16125  16798   
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
16126  16799   
                    >::default();
16127  16800   
                    ::aws_smithy_http_server::routing::Route::new(svc)
16128  16801   
                }),
16129  16802   
            ),
16130  16803   
            (
@@ -16217,16890 +16276,16958 @@
16237  16910   
            ),
16238  16911   
            (
16239  16912   
                request_specs::test_body_structure(),
16240  16913   
                self.test_body_structure.unwrap_or_else(|| {
16241  16914   
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
16242  16915   
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
16243  16916   
                    >::default();
16244  16917   
                    ::aws_smithy_http_server::routing::Route::new(svc)
16245  16918   
                }),
16246  16919   
            ),
       16920  +
            (
       16921  +
                request_specs::test_no_input_no_payload(),
       16922  +
                self.test_no_input_no_payload.unwrap_or_else(|| {
       16923  +
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
       16924  +
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
       16925  +
                    >::default();
       16926  +
                    ::aws_smithy_http_server::routing::Route::new(svc)
       16927  +
                }),
       16928  +
            ),
16247  16929   
            (
16248  16930   
                request_specs::test_no_payload(),
16249  16931   
                self.test_no_payload.unwrap_or_else(|| {
16250  16932   
                    let svc = ::aws_smithy_http_server::operation::MissingFailure::<
16251  16933   
                        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
16252  16934   
                    >::default();
16253  16935   
                    ::aws_smithy_http_server::routing::Route::new(svc)
16254  16936   
                }),
16255  16937   
            ),
16256  16938   
            (
@@ -16349,17031 +16408,17105 @@
16369  17051   
                    ::http::Method::GET,
16370  17052   
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
16371  17053   
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
16372  17054   
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
16373  17055   
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("ConstantQueryString")),
16374  17056   
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Label,
16375  17057   
]),
16376  17058   
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
16377  17059   
    ::aws_smithy_http_server::routing::request_spec::QuerySegment::KeyValue(String::from("foo"), String::from("bar")),
16378  17060   
    ::aws_smithy_http_server::routing::request_spec::QuerySegment::Key(String::from("hello")),
       17061  +
])
       17062  +
                        )
       17063  +
                    ),
       17064  +
                )
       17065  +
    }
       17066  +
    pub(super) fn content_type_parameters(
       17067  +
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
       17068  +
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
       17069  +
                    ::http::Method::POST,
       17070  +
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
       17071  +
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
       17072  +
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
       17073  +
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("ContentTypeParameters")),
       17074  +
]),
       17075  +
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
16379  17076   
])
16380  17077   
                        )
16381  17078   
                    ),
16382  17079   
                )
16383  17080   
    }
16384  17081   
    pub(super) fn datetime_offsets() -> ::aws_smithy_http_server::routing::request_spec::RequestSpec
16385  17082   
    {
16386  17083   
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
16387  17084   
                    ::http::Method::POST,
16388  17085   
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
@@ -17465,18162 +17524,18251 @@
17485  18182   
    pub(super) fn omits_serializing_empty_lists(
17486  18183   
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
17487  18184   
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
17488  18185   
                    ::http::Method::POST,
17489  18186   
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
17490  18187   
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
17491  18188   
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
17492  18189   
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("OmitsSerializingEmptyLists")),
17493  18190   
]),
17494  18191   
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
       18192  +
])
       18193  +
                        )
       18194  +
                    ),
       18195  +
                )
       18196  +
    }
       18197  +
    pub(super) fn operation_with_defaults(
       18198  +
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
       18199  +
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
       18200  +
                    ::http::Method::POST,
       18201  +
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
       18202  +
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
       18203  +
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
       18204  +
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("OperationWithDefaults")),
       18205  +
]),
       18206  +
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
       18207  +
])
       18208  +
                        )
       18209  +
                    ),
       18210  +
                )
       18211  +
    }
       18212  +
    pub(super) fn operation_with_nested_structure(
       18213  +
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
       18214  +
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
       18215  +
                    ::http::Method::POST,
       18216  +
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
       18217  +
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
       18218  +
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
       18219  +
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("OperationWithNestedStructure")),
       18220  +
]),
       18221  +
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
17495  18222   
])
17496  18223   
                        )
17497  18224   
                    ),
17498  18225   
                )
17499  18226   
    }
17500  18227   
    pub(super) fn post_player_action(
17501  18228   
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
17502  18229   
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
17503  18230   
                    ::http::Method::POST,
17504  18231   
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
@@ -17676,18403 +17735,18477 @@
17696  18423   
    pub(super) fn test_body_structure(
17697  18424   
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
17698  18425   
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
17699  18426   
                    ::http::Method::POST,
17700  18427   
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
17701  18428   
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
17702  18429   
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
17703  18430   
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("body")),
17704  18431   
]),
17705  18432   
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
       18433  +
])
       18434  +
                        )
       18435  +
                    ),
       18436  +
                )
       18437  +
    }
       18438  +
    pub(super) fn test_no_input_no_payload(
       18439  +
    ) -> ::aws_smithy_http_server::routing::request_spec::RequestSpec {
       18440  +
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
       18441  +
                    ::http::Method::GET,
       18442  +
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
       18443  +
                        ::aws_smithy_http_server::routing::request_spec::PathAndQuerySpec::new(
       18444  +
                            ::aws_smithy_http_server::routing::request_spec::PathSpec::from_vector_unchecked(vec![
       18445  +
    ::aws_smithy_http_server::routing::request_spec::PathSegment::Literal(String::from("no_input_no_payload")),
       18446  +
]),
       18447  +
                            ::aws_smithy_http_server::routing::request_spec::QuerySpec::from_vector_unchecked(vec![
17706  18448   
])
17707  18449   
                        )
17708  18450   
                    ),
17709  18451   
                )
17710  18452   
    }
17711  18453   
    pub(super) fn test_no_payload() -> ::aws_smithy_http_server::routing::request_spec::RequestSpec
17712  18454   
    {
17713  18455   
        ::aws_smithy_http_server::routing::request_spec::RequestSpec::new(
17714  18456   
                    ::http::Method::GET,
17715  18457   
                    ::aws_smithy_http_server::routing::request_spec::UriSpec::new(
@@ -17790,18532 +17849,18592 @@
17810  18552   
        L,
17811  18553   
        HttpPl: ::aws_smithy_http_server::plugin::HttpMarker,
17812  18554   
        ModelPl: ::aws_smithy_http_server::plugin::ModelMarker,
17813  18555   
    >(
17814  18556   
        config: RestJsonConfig<L, HttpPl, ModelPl>,
17815  18557   
    ) -> RestJsonBuilder<Body, L, HttpPl, ModelPl> {
17816  18558   
        RestJsonBuilder {
17817  18559   
            all_query_string_types: None,
17818  18560   
            constant_and_variable_query_string: None,
17819  18561   
            constant_query_string: None,
       18562  +
            content_type_parameters: None,
17820  18563   
            datetime_offsets: None,
17821  18564   
            document_type: None,
17822  18565   
            document_type_as_map_value: None,
17823  18566   
            document_type_as_payload: None,
17824  18567   
            empty_input_and_empty_output: None,
17825  18568   
            endpoint_operation: None,
17826  18569   
            endpoint_with_host_label_operation: None,
17827  18570   
            fractional_seconds: None,
17828  18571   
            greeting_with_errors: None,
17829  18572   
            host_with_path_operation: None,
@@ -17863,18606 +17971,18718 @@
17883  18626   
            malformed_timestamp_query_epoch: None,
17884  18627   
            malformed_timestamp_query_http_date: None,
17885  18628   
            malformed_union: None,
17886  18629   
            media_type_header: None,
17887  18630   
            no_input_and_no_output: None,
17888  18631   
            no_input_and_output: None,
17889  18632   
            null_and_empty_headers_client: None,
17890  18633   
            null_and_empty_headers_server: None,
17891  18634   
            omits_null_serializes_empty_string: None,
17892  18635   
            omits_serializing_empty_lists: None,
       18636  +
            operation_with_defaults: None,
       18637  +
            operation_with_nested_structure: None,
17893  18638   
            post_player_action: None,
17894  18639   
            post_union_with_json_name: None,
17895  18640   
            put_with_content_encoding: None,
17896  18641   
            query_idempotency_token_auto_fill: None,
17897  18642   
            query_params_as_string_list_map: None,
17898  18643   
            query_precedence: None,
17899  18644   
            recursive_shapes: None,
17900  18645   
            simple_scalar_properties: None,
17901  18646   
            sparse_json_lists: None,
17902  18647   
            sparse_json_maps: None,
17903  18648   
            streaming_traits: None,
17904  18649   
            streaming_traits_require_length: None,
17905  18650   
            streaming_traits_with_media_type: None,
17906  18651   
            test_body_structure: None,
       18652  +
            test_no_input_no_payload: None,
17907  18653   
            test_no_payload: None,
17908  18654   
            test_payload_blob: None,
17909  18655   
            test_payload_structure: None,
17910  18656   
            timestamp_format_headers: None,
17911  18657   
            unit_input_and_output: None,
17912  18658   
            layer: config.layers,
17913  18659   
            http_plugin: config.http_plugins,
17914  18660   
            model_plugin: config.model_plugins,
17915  18661   
        }
17916  18662   
    }
17917  18663   
17918  18664   
    /// Constructs a builder for [`RestJson`].
17919  18665   
    /// You must specify what plugins should be applied to the operations in this service.
17920  18666   
    ///
17921  18667   
    /// Use [`RestJson::builder_without_plugins`] if you don't need to apply plugins.
17922  18668   
    ///
17923  18669   
    /// Check out [`HttpPlugins`](::aws_smithy_http_server::plugin::HttpPlugins) and
17924  18670   
    /// [`ModelPlugins`](::aws_smithy_http_server::plugin::ModelPlugins) if you need to apply
17925  18671   
    /// multiple plugins.
17926  18672   
    #[deprecated(
17927  18673   
        since = "0.57.0",
17928  18674   
        note = "please use the `builder` constructor and register plugins on the `RestJsonConfig` object instead; see https://github.com/smithy-lang/smithy-rs/discussions/3096"
17929  18675   
    )]
17930  18676   
    pub fn builder_with_plugins<
17931  18677   
        Body,
17932  18678   
        HttpPl: ::aws_smithy_http_server::plugin::HttpMarker,
17933  18679   
        ModelPl: ::aws_smithy_http_server::plugin::ModelMarker,
17934  18680   
    >(
17935  18681   
        http_plugin: HttpPl,
17936  18682   
        model_plugin: ModelPl,
17937  18683   
    ) -> RestJsonBuilder<Body, ::tower::layer::util::Identity, HttpPl, ModelPl> {
17938  18684   
        RestJsonBuilder {
17939  18685   
            all_query_string_types: None,
17940  18686   
            constant_and_variable_query_string: None,
17941  18687   
            constant_query_string: None,
       18688  +
            content_type_parameters: None,
17942  18689   
            datetime_offsets: None,
17943  18690   
            document_type: None,
17944  18691   
            document_type_as_map_value: None,
17945  18692   
            document_type_as_payload: None,
17946  18693   
            empty_input_and_empty_output: None,
17947  18694   
            endpoint_operation: None,
17948  18695   
            endpoint_with_host_label_operation: None,
17949  18696   
            fractional_seconds: None,
17950  18697   
            greeting_with_errors: None,
17951  18698   
            host_with_path_operation: None,
@@ -17985,18732 +18058,18808 @@
18005  18752   
            malformed_timestamp_query_epoch: None,
18006  18753   
            malformed_timestamp_query_http_date: None,
18007  18754   
            malformed_union: None,
18008  18755   
            media_type_header: None,
18009  18756   
            no_input_and_no_output: None,
18010  18757   
            no_input_and_output: None,
18011  18758   
            null_and_empty_headers_client: None,
18012  18759   
            null_and_empty_headers_server: None,
18013  18760   
            omits_null_serializes_empty_string: None,
18014  18761   
            omits_serializing_empty_lists: None,
       18762  +
            operation_with_defaults: None,
       18763  +
            operation_with_nested_structure: None,
18015  18764   
            post_player_action: None,
18016  18765   
            post_union_with_json_name: None,
18017  18766   
            put_with_content_encoding: None,
18018  18767   
            query_idempotency_token_auto_fill: None,
18019  18768   
            query_params_as_string_list_map: None,
18020  18769   
            query_precedence: None,
18021  18770   
            recursive_shapes: None,
18022  18771   
            simple_scalar_properties: None,
18023  18772   
            sparse_json_lists: None,
18024  18773   
            sparse_json_maps: None,
18025  18774   
            streaming_traits: None,
18026  18775   
            streaming_traits_require_length: None,
18027  18776   
            streaming_traits_with_media_type: None,
18028  18777   
            test_body_structure: None,
       18778  +
            test_no_input_no_payload: None,
18029  18779   
            test_no_payload: None,
18030  18780   
            test_payload_blob: None,
18031  18781   
            test_payload_structure: None,
18032  18782   
            timestamp_format_headers: None,
18033  18783   
            unit_input_and_output: None,
18034  18784   
            layer: ::tower::layer::util::Identity::new(),
18035  18785   
            http_plugin,
18036  18786   
            model_plugin,
18037  18787   
        }
18038  18788   
    }
@@ -18129,18879 +18188,18939 @@
18149  18899   
    }
18150  18900   
}
18151  18901   
18152  18902   
/// An enumeration of all [operations](https://smithy.io/2.0/spec/service-types.html#operation) in RestJson.
18153  18903   
#[allow(clippy::enum_variant_names)]
18154  18904   
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
18155  18905   
pub enum Operation {
18156  18906   
    AllQueryStringTypes,
18157  18907   
    ConstantAndVariableQueryString,
18158  18908   
    ConstantQueryString,
       18909  +
    ContentTypeParameters,
18159  18910   
    DatetimeOffsets,
18160  18911   
    DocumentType,
18161  18912   
    DocumentTypeAsMapValue,
18162  18913   
    DocumentTypeAsPayload,
18163  18914   
    EmptyInputAndEmptyOutput,
18164  18915   
    EndpointOperation,
18165  18916   
    EndpointWithHostLabelOperation,
18166  18917   
    FractionalSeconds,
18167  18918   
    GreetingWithErrors,
18168  18919   
    HostWithPathOperation,
@@ -18202,18953 +18303,19062 @@
18222  18973   
    MalformedTimestampQueryEpoch,
18223  18974   
    MalformedTimestampQueryHttpDate,
18224  18975   
    MalformedUnion,
18225  18976   
    MediaTypeHeader,
18226  18977   
    NoInputAndNoOutput,
18227  18978   
    NoInputAndOutput,
18228  18979   
    NullAndEmptyHeadersClient,
18229  18980   
    NullAndEmptyHeadersServer,
18230  18981   
    OmitsNullSerializesEmptyString,
18231  18982   
    OmitsSerializingEmptyLists,
       18983  +
    OperationWithDefaults,
       18984  +
    OperationWithNestedStructure,
18232  18985   
    PostPlayerAction,
18233  18986   
    PostUnionWithJsonName,
18234  18987   
    PutWithContentEncoding,
18235  18988   
    QueryIdempotencyTokenAutoFill,
18236  18989   
    QueryParamsAsStringListMap,
18237  18990   
    QueryPrecedence,
18238  18991   
    RecursiveShapes,
18239  18992   
    SimpleScalarProperties,
18240  18993   
    SparseJsonLists,
18241  18994   
    SparseJsonMaps,
18242  18995   
    StreamingTraits,
18243  18996   
    StreamingTraitsRequireLength,
18244  18997   
    StreamingTraitsWithMediaType,
18245  18998   
    TestBodyStructure,
       18999  +
    TestNoInputNoPayload,
18246  19000   
    TestNoPayload,
18247  19001   
    TestPayloadBlob,
18248  19002   
    TestPayloadStructure,
18249  19003   
    TimestampFormatHeaders,
18250  19004   
    UnitInputAndOutput,
18251  19005   
}
18252  19006   
18253  19007   
impl Operation {
18254  19008   
    /// Returns the [operations](https://smithy.io/2.0/spec/service-types.html#operation) [`ShapeId`](::aws_smithy_http_server::shape_id::ShapeId).
18255  19009   
    pub fn shape_id(&self) -> ::aws_smithy_http_server::shape_id::ShapeId {
18256  19010   
        match self {
18257  19011   
            Operation::AllQueryStringTypes => ::aws_smithy_http_server::shape_id::ShapeId::new(
18258  19012   
                "aws.protocoltests.restjson#AllQueryStringTypes",
18259  19013   
                "aws.protocoltests.restjson",
18260  19014   
                "AllQueryStringTypes",
18261  19015   
            ),
18262  19016   
            Operation::ConstantAndVariableQueryString => {
18263  19017   
                ::aws_smithy_http_server::shape_id::ShapeId::new(
18264  19018   
                    "aws.protocoltests.restjson#ConstantAndVariableQueryString",
18265  19019   
                    "aws.protocoltests.restjson",
18266  19020   
                    "ConstantAndVariableQueryString",
18267  19021   
                )
18268  19022   
            }
18269  19023   
            Operation::ConstantQueryString => ::aws_smithy_http_server::shape_id::ShapeId::new(
18270  19024   
                "aws.protocoltests.restjson#ConstantQueryString",
18271  19025   
                "aws.protocoltests.restjson",
18272  19026   
                "ConstantQueryString",
18273  19027   
            ),
       19028  +
            Operation::ContentTypeParameters => ::aws_smithy_http_server::shape_id::ShapeId::new(
       19029  +
                "aws.protocoltests.restjson#ContentTypeParameters",
       19030  +
                "aws.protocoltests.restjson",
       19031  +
                "ContentTypeParameters",
       19032  +
            ),
18274  19033   
            Operation::DatetimeOffsets => ::aws_smithy_http_server::shape_id::ShapeId::new(
18275  19034   
                "aws.protocoltests.restjson#DatetimeOffsets",
18276  19035   
                "aws.protocoltests.restjson",
18277  19036   
                "DatetimeOffsets",
18278  19037   
            ),
18279  19038   
            Operation::DocumentType => ::aws_smithy_http_server::shape_id::ShapeId::new(
18280  19039   
                "aws.protocoltests.restjson#DocumentType",
18281  19040   
                "aws.protocoltests.restjson",
18282  19041   
                "DocumentType",
18283  19042   
            ),
@@ -18675,19434 +18734,19505 @@
18695  19454   
                    "OmitsNullSerializesEmptyString",
18696  19455   
                )
18697  19456   
            }
18698  19457   
            Operation::OmitsSerializingEmptyLists => {
18699  19458   
                ::aws_smithy_http_server::shape_id::ShapeId::new(
18700  19459   
                    "aws.protocoltests.restjson#OmitsSerializingEmptyLists",
18701  19460   
                    "aws.protocoltests.restjson",
18702  19461   
                    "OmitsSerializingEmptyLists",
18703  19462   
                )
18704  19463   
            }
       19464  +
            Operation::OperationWithDefaults => ::aws_smithy_http_server::shape_id::ShapeId::new(
       19465  +
                "aws.protocoltests.restjson#OperationWithDefaults",
       19466  +
                "aws.protocoltests.restjson",
       19467  +
                "OperationWithDefaults",
       19468  +
            ),
       19469  +
            Operation::OperationWithNestedStructure => {
       19470  +
                ::aws_smithy_http_server::shape_id::ShapeId::new(
       19471  +
                    "aws.protocoltests.restjson#OperationWithNestedStructure",
       19472  +
                    "aws.protocoltests.restjson",
       19473  +
                    "OperationWithNestedStructure",
       19474  +
                )
       19475  +
            }
18705  19476   
            Operation::PostPlayerAction => ::aws_smithy_http_server::shape_id::ShapeId::new(
18706  19477   
                "aws.protocoltests.restjson#PostPlayerAction",
18707  19478   
                "aws.protocoltests.restjson",
18708  19479   
                "PostPlayerAction",
18709  19480   
            ),
18710  19481   
            Operation::PostUnionWithJsonName => ::aws_smithy_http_server::shape_id::ShapeId::new(
18711  19482   
                "aws.protocoltests.restjson#PostUnionWithJsonName",
18712  19483   
                "aws.protocoltests.restjson",
18713  19484   
                "PostUnionWithJsonName",
18714  19485   
            ),
@@ -18753,19524 +18861,19644 @@
18773  19544   
                    "aws.protocoltests.restjson#StreamingTraitsWithMediaType",
18774  19545   
                    "aws.protocoltests.restjson",
18775  19546   
                    "StreamingTraitsWithMediaType",
18776  19547   
                )
18777  19548   
            }
18778  19549   
            Operation::TestBodyStructure => ::aws_smithy_http_server::shape_id::ShapeId::new(
18779  19550   
                "aws.protocoltests.restjson#TestBodyStructure",
18780  19551   
                "aws.protocoltests.restjson",
18781  19552   
                "TestBodyStructure",
18782  19553   
            ),
       19554  +
            Operation::TestNoInputNoPayload => ::aws_smithy_http_server::shape_id::ShapeId::new(
       19555  +
                "aws.protocoltests.restjson#TestNoInputNoPayload",
       19556  +
                "aws.protocoltests.restjson",
       19557  +
                "TestNoInputNoPayload",
       19558  +
            ),
18783  19559   
            Operation::TestNoPayload => ::aws_smithy_http_server::shape_id::ShapeId::new(
18784  19560   
                "aws.protocoltests.restjson#TestNoPayload",
18785  19561   
                "aws.protocoltests.restjson",
18786  19562   
                "TestNoPayload",
18787  19563   
            ),
18788  19564   
            Operation::TestPayloadBlob => ::aws_smithy_http_server::shape_id::ShapeId::new(
18789  19565   
                "aws.protocoltests.restjson#TestPayloadBlob",
18790  19566   
                "aws.protocoltests.restjson",
18791  19567   
                "TestPayloadBlob",
18792  19568   
            ),
18793  19569   
            Operation::TestPayloadStructure => ::aws_smithy_http_server::shape_id::ShapeId::new(
18794  19570   
                "aws.protocoltests.restjson#TestPayloadStructure",
18795  19571   
                "aws.protocoltests.restjson",
18796  19572   
                "TestPayloadStructure",
18797  19573   
            ),
18798  19574   
            Operation::TimestampFormatHeaders => ::aws_smithy_http_server::shape_id::ShapeId::new(
18799  19575   
                "aws.protocoltests.restjson#TimestampFormatHeaders",
18800  19576   
                "aws.protocoltests.restjson",
18801  19577   
                "TimestampFormatHeaders",
18802  19578   
            ),
18803  19579   
            Operation::UnitInputAndOutput => ::aws_smithy_http_server::shape_id::ShapeId::new(
18804  19580   
                "aws.protocoltests.restjson#UnitInputAndOutput",
18805  19581   
                "aws.protocoltests.restjson",
18806  19582   
                "UnitInputAndOutput",
18807  19583   
            ),
18808  19584   
        }
18809  19585   
    }
18810  19586   
}
18811  19587   
impl<L>
18812  19588   
    ::aws_smithy_http_server::service::ContainsOperation<
18813  19589   
        crate::operation_shape::AllQueryStringTypes,
18814  19590   
    > for RestJson<L>
18815  19591   
{
18816  19592   
    const VALUE: Operation = Operation::AllQueryStringTypes;
18817  19593   
}
18818  19594   
impl<L>
18819  19595   
    ::aws_smithy_http_server::service::ContainsOperation<
18820  19596   
        crate::operation_shape::ConstantAndVariableQueryString,
18821  19597   
    > for RestJson<L>
18822  19598   
{
18823  19599   
    const VALUE: Operation = Operation::ConstantAndVariableQueryString;
18824  19600   
}
18825  19601   
impl<L>
18826  19602   
    ::aws_smithy_http_server::service::ContainsOperation<
18827  19603   
        crate::operation_shape::ConstantQueryString,
18828  19604   
    > for RestJson<L>
18829  19605   
{
18830  19606   
    const VALUE: Operation = Operation::ConstantQueryString;
18831  19607   
}
       19608  +
impl<L>
       19609  +
    ::aws_smithy_http_server::service::ContainsOperation<
       19610  +
        crate::operation_shape::ContentTypeParameters,
       19611  +
    > for RestJson<L>
       19612  +
{
       19613  +
    const VALUE: Operation = Operation::ContentTypeParameters;
       19614  +
}
18832  19615   
impl<L>
18833  19616   
    ::aws_smithy_http_server::service::ContainsOperation<crate::operation_shape::DatetimeOffsets>
18834  19617   
    for RestJson<L>
18835  19618   
{
18836  19619   
    const VALUE: Operation = Operation::DatetimeOffsets;
18837  19620   
}
18838  19621   
impl<L> ::aws_smithy_http_server::service::ContainsOperation<crate::operation_shape::DocumentType>
18839  19622   
    for RestJson<L>
18840  19623   
{
18841  19624   
    const VALUE: Operation = Operation::DocumentType;
@@ -19265,20048 +19324,20121 @@
19285  20068   
{
19286  20069   
    const VALUE: Operation = Operation::OmitsNullSerializesEmptyString;
19287  20070   
}
19288  20071   
impl<L>
19289  20072   
    ::aws_smithy_http_server::service::ContainsOperation<
19290  20073   
        crate::operation_shape::OmitsSerializingEmptyLists,
19291  20074   
    > for RestJson<L>
19292  20075   
{
19293  20076   
    const VALUE: Operation = Operation::OmitsSerializingEmptyLists;
19294  20077   
}
       20078  +
impl<L>
       20079  +
    ::aws_smithy_http_server::service::ContainsOperation<
       20080  +
        crate::operation_shape::OperationWithDefaults,
       20081  +
    > for RestJson<L>
       20082  +
{
       20083  +
    const VALUE: Operation = Operation::OperationWithDefaults;
       20084  +
}
       20085  +
impl<L>
       20086  +
    ::aws_smithy_http_server::service::ContainsOperation<
       20087  +
        crate::operation_shape::OperationWithNestedStructure,
       20088  +
    > for RestJson<L>
       20089  +
{
       20090  +
    const VALUE: Operation = Operation::OperationWithNestedStructure;
       20091  +
}
19295  20092   
impl<L>
19296  20093   
    ::aws_smithy_http_server::service::ContainsOperation<crate::operation_shape::PostPlayerAction>
19297  20094   
    for RestJson<L>
19298  20095   
{
19299  20096   
    const VALUE: Operation = Operation::PostPlayerAction;
19300  20097   
}
19301  20098   
impl<L>
19302  20099   
    ::aws_smithy_http_server::service::ContainsOperation<
19303  20100   
        crate::operation_shape::PostUnionWithJsonName,
19304  20101   
    > for RestJson<L>
@@ -19355,20152 +19414,20218 @@
19375  20172   
    > for RestJson<L>
19376  20173   
{
19377  20174   
    const VALUE: Operation = Operation::StreamingTraitsWithMediaType;
19378  20175   
}
19379  20176   
impl<L>
19380  20177   
    ::aws_smithy_http_server::service::ContainsOperation<crate::operation_shape::TestBodyStructure>
19381  20178   
    for RestJson<L>
19382  20179   
{
19383  20180   
    const VALUE: Operation = Operation::TestBodyStructure;
19384  20181   
}
       20182  +
impl<L>
       20183  +
    ::aws_smithy_http_server::service::ContainsOperation<
       20184  +
        crate::operation_shape::TestNoInputNoPayload,
       20185  +
    > for RestJson<L>
       20186  +
{
       20187  +
    const VALUE: Operation = Operation::TestNoInputNoPayload;
       20188  +
}
19385  20189   
impl<L> ::aws_smithy_http_server::service::ContainsOperation<crate::operation_shape::TestNoPayload>
19386  20190   
    for RestJson<L>
19387  20191   
{
19388  20192   
    const VALUE: Operation = Operation::TestNoPayload;
19389  20193   
}
19390  20194   
impl<L>
19391  20195   
    ::aws_smithy_http_server::service::ContainsOperation<crate::operation_shape::TestPayloadBlob>
19392  20196   
    for RestJson<L>
19393  20197   
{
19394  20198   
    const VALUE: Operation = Operation::TestPayloadBlob;
@@ -19596,20400 +19655,20468 @@
19616  20420   
19617  20421   
                        // ConstantQueryString match found, pop from both `member` and `not_member`
19618  20422   
                        (@ $ name: ident, $ contains: ident (ConstantQueryString $($ member: ident)*) ($($ temp: ident)*) (ConstantQueryString $($ not_member: ident)*)) => {
19619  20423   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
19620  20424   
                        };
19621  20425   
                        // ConstantQueryString match not found, pop from `not_member` into `temp` stack
19622  20426   
                        (@ $ name: ident, $ contains: ident (ConstantQueryString $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
19623  20427   
                            scope! { @ $ name, $ contains (ConstantQueryString $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
19624  20428   
                        };
19625  20429   
       20430  +
                        // ContentTypeParameters match found, pop from both `member` and `not_member`
       20431  +
                        (@ $ name: ident, $ contains: ident (ContentTypeParameters $($ member: ident)*) ($($ temp: ident)*) (ContentTypeParameters $($ not_member: ident)*)) => {
       20432  +
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
       20433  +
                        };
       20434  +
                        // ContentTypeParameters match not found, pop from `not_member` into `temp` stack
       20435  +
                        (@ $ name: ident, $ contains: ident (ContentTypeParameters $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
       20436  +
                            scope! { @ $ name, $ contains (ContentTypeParameters $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
       20437  +
                        };
       20438  +
19626  20439   
                        // DatetimeOffsets match found, pop from both `member` and `not_member`
19627  20440   
                        (@ $ name: ident, $ contains: ident (DatetimeOffsets $($ member: ident)*) ($($ temp: ident)*) (DatetimeOffsets $($ not_member: ident)*)) => {
19628  20441   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
19629  20442   
                        };
19630  20443   
                        // DatetimeOffsets match not found, pop from `not_member` into `temp` stack
19631  20444   
                        (@ $ name: ident, $ contains: ident (DatetimeOffsets $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
19632  20445   
                            scope! { @ $ name, $ contains (DatetimeOffsets $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
19633  20446   
                        };
19634  20447   
19635  20448   
                        // DocumentType match found, pop from both `member` and `not_member`
@@ -20253,21066 +20312,21143 @@
20273  21086   
20274  21087   
                        // OmitsSerializingEmptyLists match found, pop from both `member` and `not_member`
20275  21088   
                        (@ $ name: ident, $ contains: ident (OmitsSerializingEmptyLists $($ member: ident)*) ($($ temp: ident)*) (OmitsSerializingEmptyLists $($ not_member: ident)*)) => {
20276  21089   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20277  21090   
                        };
20278  21091   
                        // OmitsSerializingEmptyLists match not found, pop from `not_member` into `temp` stack
20279  21092   
                        (@ $ name: ident, $ contains: ident (OmitsSerializingEmptyLists $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20280  21093   
                            scope! { @ $ name, $ contains (OmitsSerializingEmptyLists $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20281  21094   
                        };
20282  21095   
       21096  +
                        // OperationWithDefaults match found, pop from both `member` and `not_member`
       21097  +
                        (@ $ name: ident, $ contains: ident (OperationWithDefaults $($ member: ident)*) ($($ temp: ident)*) (OperationWithDefaults $($ not_member: ident)*)) => {
       21098  +
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
       21099  +
                        };
       21100  +
                        // OperationWithDefaults match not found, pop from `not_member` into `temp` stack
       21101  +
                        (@ $ name: ident, $ contains: ident (OperationWithDefaults $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
       21102  +
                            scope! { @ $ name, $ contains (OperationWithDefaults $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
       21103  +
                        };
       21104  +
       21105  +
                        // OperationWithNestedStructure match found, pop from both `member` and `not_member`
       21106  +
                        (@ $ name: ident, $ contains: ident (OperationWithNestedStructure $($ member: ident)*) ($($ temp: ident)*) (OperationWithNestedStructure $($ not_member: ident)*)) => {
       21107  +
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
       21108  +
                        };
       21109  +
                        // OperationWithNestedStructure match not found, pop from `not_member` into `temp` stack
       21110  +
                        (@ $ name: ident, $ contains: ident (OperationWithNestedStructure $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
       21111  +
                            scope! { @ $ name, $ contains (OperationWithNestedStructure $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
       21112  +
                        };
       21113  +
20283  21114   
                        // PostPlayerAction match found, pop from both `member` and `not_member`
20284  21115   
                        (@ $ name: ident, $ contains: ident (PostPlayerAction $($ member: ident)*) ($($ temp: ident)*) (PostPlayerAction $($ not_member: ident)*)) => {
20285  21116   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20286  21117   
                        };
20287  21118   
                        // PostPlayerAction match not found, pop from `not_member` into `temp` stack
20288  21119   
                        (@ $ name: ident, $ contains: ident (PostPlayerAction $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20289  21120   
                            scope! { @ $ name, $ contains (PostPlayerAction $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20290  21121   
                        };
20291  21122   
20292  21123   
                        // PostUnionWithJsonName match found, pop from both `member` and `not_member`
@@ -20379,21210 +20487,21327 @@
20399  21230   
20400  21231   
                        // TestBodyStructure match found, pop from both `member` and `not_member`
20401  21232   
                        (@ $ name: ident, $ contains: ident (TestBodyStructure $($ member: ident)*) ($($ temp: ident)*) (TestBodyStructure $($ not_member: ident)*)) => {
20402  21233   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20403  21234   
                        };
20404  21235   
                        // TestBodyStructure match not found, pop from `not_member` into `temp` stack
20405  21236   
                        (@ $ name: ident, $ contains: ident (TestBodyStructure $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20406  21237   
                            scope! { @ $ name, $ contains (TestBodyStructure $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20407  21238   
                        };
20408  21239   
       21240  +
                        // TestNoInputNoPayload match found, pop from both `member` and `not_member`
       21241  +
                        (@ $ name: ident, $ contains: ident (TestNoInputNoPayload $($ member: ident)*) ($($ temp: ident)*) (TestNoInputNoPayload $($ not_member: ident)*)) => {
       21242  +
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
       21243  +
                        };
       21244  +
                        // TestNoInputNoPayload match not found, pop from `not_member` into `temp` stack
       21245  +
                        (@ $ name: ident, $ contains: ident (TestNoInputNoPayload $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
       21246  +
                            scope! { @ $ name, $ contains (TestNoInputNoPayload $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
       21247  +
                        };
       21248  +
20409  21249   
                        // TestNoPayload match found, pop from both `member` and `not_member`
20410  21250   
                        (@ $ name: ident, $ contains: ident (TestNoPayload $($ member: ident)*) ($($ temp: ident)*) (TestNoPayload $($ not_member: ident)*)) => {
20411  21251   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20412  21252   
                        };
20413  21253   
                        // TestNoPayload match not found, pop from `not_member` into `temp` stack
20414  21254   
                        (@ $ name: ident, $ contains: ident (TestNoPayload $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20415  21255   
                            scope! { @ $ name, $ contains (TestNoPayload $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20416  21256   
                        };
20417  21257   
20418  21258   
                        // TestPayloadBlob match found, pop from both `member` and `not_member`
20419  21259   
                        (@ $ name: ident, $ contains: ident (TestPayloadBlob $($ member: ident)*) ($($ temp: ident)*) (TestPayloadBlob $($ not_member: ident)*)) => {
20420  21260   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20421  21261   
                        };
20422  21262   
                        // TestPayloadBlob match not found, pop from `not_member` into `temp` stack
20423  21263   
                        (@ $ name: ident, $ contains: ident (TestPayloadBlob $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20424  21264   
                            scope! { @ $ name, $ contains (TestPayloadBlob $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20425  21265   
                        };
20426  21266   
20427  21267   
                        // TestPayloadStructure match found, pop from both `member` and `not_member`
20428  21268   
                        (@ $ name: ident, $ contains: ident (TestPayloadStructure $($ member: ident)*) ($($ temp: ident)*) (TestPayloadStructure $($ not_member: ident)*)) => {
20429  21269   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20430  21270   
                        };
20431  21271   
                        // TestPayloadStructure match not found, pop from `not_member` into `temp` stack
20432  21272   
                        (@ $ name: ident, $ contains: ident (TestPayloadStructure $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20433  21273   
                            scope! { @ $ name, $ contains (TestPayloadStructure $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20434  21274   
                        };
20435  21275   
20436  21276   
                        // TimestampFormatHeaders match found, pop from both `member` and `not_member`
20437  21277   
                        (@ $ name: ident, $ contains: ident (TimestampFormatHeaders $($ member: ident)*) ($($ temp: ident)*) (TimestampFormatHeaders $($ not_member: ident)*)) => {
20438  21278   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20439  21279   
                        };
20440  21280   
                        // TimestampFormatHeaders match not found, pop from `not_member` into `temp` stack
20441  21281   
                        (@ $ name: ident, $ contains: ident (TimestampFormatHeaders $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20442  21282   
                            scope! { @ $ name, $ contains (TimestampFormatHeaders $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20443  21283   
                        };
20444  21284   
20445  21285   
                        // UnitInputAndOutput match found, pop from both `member` and `not_member`
20446  21286   
                        (@ $ name: ident, $ contains: ident (UnitInputAndOutput $($ member: ident)*) ($($ temp: ident)*) (UnitInputAndOutput $($ not_member: ident)*)) => {
20447  21287   
                            scope! { @ $ name, $ contains ($($ member)*) ($($ temp)*) ($($ not_member)*) }
20448  21288   
                        };
20449  21289   
                        // UnitInputAndOutput match not found, pop from `not_member` into `temp` stack
20450  21290   
                        (@ $ name: ident, $ contains: ident (UnitInputAndOutput $($ member: ident)*) ($($ temp: ident)*) ($ other: ident $($ not_member: ident)*)) => {
20451  21291   
                            scope! { @ $ name, $ contains (UnitInputAndOutput $($ member)*) ($ other $($ temp)*) ($($ not_member)*) }
20452  21292   
                        };
20453  21293   
20454  21294   
                    (
20455  21295   
                        $(#[$ attrs:meta])*
20456  21296   
                        $ vis:vis struct $ name:ident {
20457  21297   
                            includes: [$($ include:ident),*]
20458  21298   
                        }
20459  21299   
                    ) => {
20460  21300   
                        use $ crate::operation_shape::*;
20461  21301   
                        ::aws_smithy_http_server::scope! {
20462  21302   
                            $(#[$ attrs])*
20463  21303   
                            $ vis struct $ name {
20464  21304   
                                includes: [$($ include),*],
20465  21305   
                                excludes: []
20466  21306   
                            }
20467  21307   
                        }
20468         -
                        scope! { @ $ name, False ($($ include)*) () (AllQueryStringTypes ConstantAndVariableQueryString ConstantQueryString DatetimeOffsets DocumentType DocumentTypeAsMapValue DocumentTypeAsPayload EmptyInputAndEmptyOutput EndpointOperation EndpointWithHostLabelOperation FractionalSeconds GreetingWithErrors HostWithPathOperation HttpChecksumRequired HttpEnumPayload HttpPayloadTraits HttpPayloadTraitsWithMediaType HttpPayloadWithStructure HttpPayloadWithUnion HttpPrefixHeaders HttpPrefixHeadersInResponse HttpRequestWithFloatLabels HttpRequestWithGreedyLabelInPath HttpRequestWithLabels HttpRequestWithLabelsAndTimestampFormat HttpRequestWithRegexLiteral HttpResponseCode HttpStringPayload IgnoreQueryParamsInResponse InputAndOutputWithHeaders JsonBlobs JsonEnums JsonIntEnums JsonLists JsonMaps JsonTimestamps JsonUnions MalformedAcceptWithBody MalformedAcceptWithGenericString MalformedAcceptWithPayload MalformedBlob MalformedBoolean MalformedByte MalformedContentTypeWithBody MalformedContentTypeWithGenericString MalformedContentTypeWithoutBody MalformedContentTypeWithPayload MalformedDouble MalformedFloat MalformedInteger MalformedList MalformedLong MalformedMap MalformedRequestBody MalformedShort MalformedString MalformedTimestampBodyDateTime MalformedTimestampBodyDefault MalformedTimestampBodyHttpDate MalformedTimestampHeaderDateTime MalformedTimestampHeaderDefault MalformedTimestampHeaderEpoch MalformedTimestampPathDefault MalformedTimestampPathEpoch MalformedTimestampPathHttpDate MalformedTimestampQueryDefault MalformedTimestampQueryEpoch MalformedTimestampQueryHttpDate MalformedUnion MediaTypeHeader NoInputAndNoOutput NoInputAndOutput NullAndEmptyHeadersClient NullAndEmptyHeadersServer OmitsNullSerializesEmptyString OmitsSerializingEmptyLists PostPlayerAction PostUnionWithJsonName PutWithContentEncoding QueryIdempotencyTokenAutoFill QueryParamsAsStringListMap QueryPrecedence RecursiveShapes SimpleScalarProperties SparseJsonLists SparseJsonMaps StreamingTraits StreamingTraitsRequireLength StreamingTraitsWithMediaType TestBodyStructure TestNoPayload TestPayloadBlob TestPayloadStructure TimestampFormatHeaders UnitInputAndOutput) }
       21308  +
                        scope! { @ $ name, False ($($ include)*) () (AllQueryStringTypes ConstantAndVariableQueryString ConstantQueryString ContentTypeParameters DatetimeOffsets DocumentType DocumentTypeAsMapValue DocumentTypeAsPayload EmptyInputAndEmptyOutput EndpointOperation EndpointWithHostLabelOperation FractionalSeconds GreetingWithErrors HostWithPathOperation HttpChecksumRequired HttpEnumPayload HttpPayloadTraits HttpPayloadTraitsWithMediaType HttpPayloadWithStructure HttpPayloadWithUnion HttpPrefixHeaders HttpPrefixHeadersInResponse HttpRequestWithFloatLabels HttpRequestWithGreedyLabelInPath HttpRequestWithLabels HttpRequestWithLabelsAndTimestampFormat HttpRequestWithRegexLiteral HttpResponseCode HttpStringPayload IgnoreQueryParamsInResponse InputAndOutputWithHeaders JsonBlobs JsonEnums JsonIntEnums JsonLists JsonMaps JsonTimestamps JsonUnions MalformedAcceptWithBody MalformedAcceptWithGenericString MalformedAcceptWithPayload MalformedBlob MalformedBoolean MalformedByte MalformedContentTypeWithBody MalformedContentTypeWithGenericString MalformedContentTypeWithoutBody MalformedContentTypeWithPayload MalformedDouble MalformedFloat MalformedInteger MalformedList MalformedLong MalformedMap MalformedRequestBody MalformedShort MalformedString MalformedTimestampBodyDateTime MalformedTimestampBodyDefault MalformedTimestampBodyHttpDate MalformedTimestampHeaderDateTime MalformedTimestampHeaderDefault MalformedTimestampHeaderEpoch MalformedTimestampPathDefault MalformedTimestampPathEpoch MalformedTimestampPathHttpDate MalformedTimestampQueryDefault MalformedTimestampQueryEpoch MalformedTimestampQueryHttpDate MalformedUnion MediaTypeHeader NoInputAndNoOutput NoInputAndOutput NullAndEmptyHeadersClient NullAndEmptyHeadersServer OmitsNullSerializesEmptyString OmitsSerializingEmptyLists OperationWithDefaults OperationWithNestedStructure PostPlayerAction PostUnionWithJsonName PutWithContentEncoding QueryIdempotencyTokenAutoFill QueryParamsAsStringListMap QueryPrecedence RecursiveShapes SimpleScalarProperties SparseJsonLists SparseJsonMaps StreamingTraits StreamingTraitsRequireLength StreamingTraitsWithMediaType TestBodyStructure TestNoInputNoPayload TestNoPayload TestPayloadBlob TestPayloadStructure TimestampFormatHeaders UnitInputAndOutput) }
20469  21309   
                    };
20470  21310   
                    (
20471  21311   
                        $(#[$ attrs:meta])*
20472  21312   
                        $ vis:vis struct $ name:ident {
20473  21313   
                            excludes: [$($ exclude:ident),*]
20474  21314   
                        }
20475  21315   
                    ) => {
20476  21316   
                        use $ crate::operation_shape::*;
20477  21317   
20478  21318   
                        ::aws_smithy_http_server::scope! {
20479  21319   
                            $(#[$ attrs])*
20480  21320   
                            $ vis struct $ name {
20481  21321   
                                includes: [],
20482  21322   
                                excludes: [$($ exclude),*]
20483  21323   
                            }
20484  21324   
                        }
20485         -
                        scope! { @ $ name, True ($($ exclude)*) () (AllQueryStringTypes ConstantAndVariableQueryString ConstantQueryString DatetimeOffsets DocumentType DocumentTypeAsMapValue DocumentTypeAsPayload EmptyInputAndEmptyOutput EndpointOperation EndpointWithHostLabelOperation FractionalSeconds GreetingWithErrors HostWithPathOperation HttpChecksumRequired HttpEnumPayload HttpPayloadTraits HttpPayloadTraitsWithMediaType HttpPayloadWithStructure HttpPayloadWithUnion HttpPrefixHeaders HttpPrefixHeadersInResponse HttpRequestWithFloatLabels HttpRequestWithGreedyLabelInPath HttpRequestWithLabels HttpRequestWithLabelsAndTimestampFormat HttpRequestWithRegexLiteral HttpResponseCode HttpStringPayload IgnoreQueryParamsInResponse InputAndOutputWithHeaders JsonBlobs JsonEnums JsonIntEnums JsonLists JsonMaps JsonTimestamps JsonUnions MalformedAcceptWithBody MalformedAcceptWithGenericString MalformedAcceptWithPayload MalformedBlob MalformedBoolean MalformedByte MalformedContentTypeWithBody MalformedContentTypeWithGenericString MalformedContentTypeWithoutBody MalformedContentTypeWithPayload MalformedDouble MalformedFloat MalformedInteger MalformedList MalformedLong MalformedMap MalformedRequestBody MalformedShort MalformedString MalformedTimestampBodyDateTime MalformedTimestampBodyDefault MalformedTimestampBodyHttpDate MalformedTimestampHeaderDateTime MalformedTimestampHeaderDefault MalformedTimestampHeaderEpoch MalformedTimestampPathDefault MalformedTimestampPathEpoch MalformedTimestampPathHttpDate MalformedTimestampQueryDefault MalformedTimestampQueryEpoch MalformedTimestampQueryHttpDate MalformedUnion MediaTypeHeader NoInputAndNoOutput NoInputAndOutput NullAndEmptyHeadersClient NullAndEmptyHeadersServer OmitsNullSerializesEmptyString OmitsSerializingEmptyLists PostPlayerAction PostUnionWithJsonName PutWithContentEncoding QueryIdempotencyTokenAutoFill QueryParamsAsStringListMap QueryPrecedence RecursiveShapes SimpleScalarProperties SparseJsonLists SparseJsonMaps StreamingTraits StreamingTraitsRequireLength StreamingTraitsWithMediaType TestBodyStructure TestNoPayload TestPayloadBlob TestPayloadStructure TimestampFormatHeaders UnitInputAndOutput) }
       21325  +
                        scope! { @ $ name, True ($($ exclude)*) () (AllQueryStringTypes ConstantAndVariableQueryString ConstantQueryString ContentTypeParameters DatetimeOffsets DocumentType DocumentTypeAsMapValue DocumentTypeAsPayload EmptyInputAndEmptyOutput EndpointOperation EndpointWithHostLabelOperation FractionalSeconds GreetingWithErrors HostWithPathOperation HttpChecksumRequired HttpEnumPayload HttpPayloadTraits HttpPayloadTraitsWithMediaType HttpPayloadWithStructure HttpPayloadWithUnion HttpPrefixHeaders HttpPrefixHeadersInResponse HttpRequestWithFloatLabels HttpRequestWithGreedyLabelInPath HttpRequestWithLabels HttpRequestWithLabelsAndTimestampFormat HttpRequestWithRegexLiteral HttpResponseCode HttpStringPayload IgnoreQueryParamsInResponse InputAndOutputWithHeaders JsonBlobs JsonEnums JsonIntEnums JsonLists JsonMaps JsonTimestamps JsonUnions MalformedAcceptWithBody MalformedAcceptWithGenericString MalformedAcceptWithPayload MalformedBlob MalformedBoolean MalformedByte MalformedContentTypeWithBody MalformedContentTypeWithGenericString MalformedContentTypeWithoutBody MalformedContentTypeWithPayload MalformedDouble MalformedFloat MalformedInteger MalformedList MalformedLong MalformedMap MalformedRequestBody MalformedShort MalformedString MalformedTimestampBodyDateTime MalformedTimestampBodyDefault MalformedTimestampBodyHttpDate MalformedTimestampHeaderDateTime MalformedTimestampHeaderDefault MalformedTimestampHeaderEpoch MalformedTimestampPathDefault MalformedTimestampPathEpoch MalformedTimestampPathHttpDate MalformedTimestampQueryDefault MalformedTimestampQueryEpoch MalformedTimestampQueryHttpDate MalformedUnion MediaTypeHeader NoInputAndNoOutput NoInputAndOutput NullAndEmptyHeadersClient NullAndEmptyHeadersServer OmitsNullSerializesEmptyString OmitsSerializingEmptyLists OperationWithDefaults OperationWithNestedStructure PostPlayerAction PostUnionWithJsonName PutWithContentEncoding QueryIdempotencyTokenAutoFill QueryParamsAsStringListMap QueryPrecedence RecursiveShapes SimpleScalarProperties SparseJsonLists SparseJsonMaps StreamingTraits StreamingTraitsRequireLength StreamingTraitsWithMediaType TestBodyStructure TestNoInputNoPayload TestNoPayload TestPayloadBlob TestPayloadStructure TimestampFormatHeaders UnitInputAndOutput) }
20486  21326   
                    };
20487  21327   
                }