diff --git a/packages/http-specs/spec-summary.md b/packages/http-specs/spec-summary.md new file mode 100644 index 0000000000..86b49c1983 --- /dev/null +++ b/packages/http-specs/spec-summary.md @@ -0,0 +1,7463 @@ +# Spec Project summary + +### Authentication_ApiKey_invalid + +- Endpoint: `get /authentication/api-key/invalid` + +Expect error code 403 and error body: + +```json +{ + "error": { + "code": "InvalidApiKey", + "message": "API key is invalid" + } +} +``` + +### Authentication_ApiKey_valid + +- Endpoint: `get /authentication/api-key/valid` + +Expects header 'x-ms-api-key': 'valid-key' + +### Authentication_Http_Custom_invalid + +- Endpoint: `get /authentication/http/custom/invalid` + +Expect error code 403 and error body: + +```json +{ + "error": "invalid-api-key" +} +``` + +### Authentication_Http_Custom_valid + +- Endpoint: `get /authentication/http/custom/valid` + +Expects header 'Authorization': 'SharedAccessKey valid-key' + +### Authentication_OAuth2_invalid + +- Endpoint: `get /authentication/oauth2/invalid` + +Expect error code 400 and error body: + +```json +{ + "message": "Expected Bearer x but got Bearer y", + "expected": "Bearer x", + "actual": "Bearer y" +} +``` + +### Authentication_OAuth2_valid + +- Endpoint: `get /authentication/oauth2/valid` + +Expects header 'authorization': 'Bearer https://security.microsoft.com/.default' + +### Authentication_Union_validKey + +- Endpoint: `get /authentication/union/validkey` + +Expects header 'x-ms-api-key': 'valid-key' + +### Authentication_Union_validToken + +- Endpoint: `get /authentication/union/validtoken` + +Expects header 'authorization': 'Bearer https://security.microsoft.com/.default' + +### Encode_Bytes_Header_base64 + +- Endpoint: `get /encode/bytes/header/base64` + +Test base64 encode for bytes header. +Expected header: +value=dGVzdA== (base64 encode of test) + +### Encode_Bytes_Header_base64url + +- Endpoint: `get /encode/bytes/header/base64url` + +Test base64url encode for bytes header. +Expected header: +value=dGVzdA (base64url encode of test) + +### Encode_Bytes_Header_base64urlArray + +- Endpoint: `get /encode/bytes/header/base64url-array` + +Test base64url encode for bytes array header. +Expected header: +value=dGVzdA,dGVzdA + +### Encode_Bytes_Header_default + +- Endpoint: `get /encode/bytes/header/default` + +Test default encode (base64) for bytes header. +Expected header: +value=dGVzdA== (base64 encode of test) + +### Encode_Bytes_Property_base64 + +- Endpoint: `post /encode/bytes/property/base64` + +Test operation with request and response model contains bytes properties with base64 encode. +Expected request body: + +```json +{ + "value": "dGVzdA==" // base64 encode of test +} +``` + +Expected response body: + +```json +{ + "value": "dGVzdA==" +} +``` + +### Encode_Bytes_Property_base64url + +- Endpoint: `post /encode/bytes/property/base64url` + +Test operation with request and response model contains bytes properties with base64url encode. +Expected request body: + +```json +{ + "value": "dGVzdA" // base64url encode of test +} +``` + +Expected response body: + +```json +{ + "value": "dGVzdA" +} +``` + +### Encode_Bytes_Property_base64urlArray + +- Endpoint: `post /encode/bytes/property/base64url-array` + +Test operation with request and response model contains bytes array properties with base64url encode. +Expected request body: + +```json +{ + "value": ["dGVzdA", "dGVzdA"] +} +``` + +Expected response body: + +```json +{ + "value": ["dGVzdA", "dGVzdA"] +} +``` + +### Encode_Bytes_Property_default + +- Endpoint: `post /encode/bytes/property/default` + +Test operation with request and response model contains bytes properties with default encode (base64). +Expected request body: + +```json +{ + "value": "dGVzdA==" // base64 encode of test +} +``` + +Expected response body: + +```json +{ + "value": "dGVzdA==" +} +``` + +### Encode_Bytes_Query_base64 + +- Endpoint: `get /encode/bytes/query/base64` + +Test base64 encode for bytes query parameter. +Expected query parameter: +value=dGVzdA== (base64 encode of test) + +### Encode_Bytes_Query_base64url + +- Endpoint: `get /encode/bytes/query/base64url` + +Test base64url encode for bytes query parameter. +Expected query parameter: +value=dGVzdA (base64url encode of test) + +### Encode_Bytes_Query_base64urlArray + +- Endpoint: `get /encode/bytes/query/base64url-array` + +Test base64url encode for bytes array query parameter. +Expected query parameter: +value=dGVzdA, dGVzdA + +### Encode_Bytes_Query_default + +- Endpoint: `get /encode/bytes/query/default` + +Test default encode (base64) for bytes query parameter. +Expected query parameter: +value=dGVzdA== (base64 encode of test) + +### Encode_Bytes_RequestBody_base64 + +- Endpoint: `post /encode/bytes/body/request/base64` + +Test base64 encode for bytes body. +Expected body: +"dGVzdA==" (base64 encode of test, in JSON string) + +### Encode_Bytes_RequestBody_base64url + +- Endpoint: `post /encode/bytes/body/request/base64url` + +Test base64url encode for bytes body. +Expected body: +"dGVzdA" (base64url encode of test, in JSON string) + +### Encode_Bytes_RequestBody_customContentType + +- Endpoint: `post /encode/bytes/body/request/custom-content-type` + +When content type is a custom type(image/png here) and body is `bytes` the payload is a binary file. +File should match packages/cadl-ranch-specs/assets/image.png + +### Encode_Bytes_RequestBody_default + +- Endpoint: `post /encode/bytes/body/request/default` + +Test default encode (base64) for bytes in a json body. +Expected body: +"dGVzdA==" (base64 encode of test, in JSON string) + +### Encode_Bytes_RequestBody_octetStream + +- Endpoint: `post /encode/bytes/body/request/octet-stream` + +When content type is application/octet-stream and body is `bytes` the payload is a binary file. +File should match packages/cadl-ranch-specs/assets/image.png + +### Encode_Bytes_ResponseBody_base64 + +- Endpoint: `get /encode/bytes/body/response/base64` + +Test base64 encode for bytes body. +Expected body: +"dGVzdA==" (base64 encode of test, in JSON string) + +### Encode_Bytes_ResponseBody_base64url + +- Endpoint: `get /encode/bytes/body/response/base64url` + +Test base64url encode for bytes body. +Expected body: +"dGVzdA" (base64url encode of test, in JSON string) + +### Encode_Bytes_ResponseBody_customContentType + +- Endpoint: `get /encode/bytes/body/response/custom-content-type` + +When content type is a custom type(image/png here) and body is `bytes` the payload is a binary file. +File should match packages/cadl-ranch-specs/assets/image.png + +### Encode_Bytes_ResponseBody_default + +- Endpoint: `get /encode/bytes/body/response/default` + +Test default encode (base64) for bytes in a json body. +Expected body: +"dGVzdA==" (base64 encode of test, in JSON string) + +### Encode_Bytes_ResponseBody_octetStream + +- Endpoint: `get /encode/bytes/body/response/octet-stream` + +When content type is application/octet-stream and body is `bytes` the payload is a binary file. +File should match packages/cadl-ranch-specs/assets/image.png + +### Encode_Datetime_Header_default + +- Endpoint: `get /encode/datetime/header/default` + +Test default encode (rfc7231) for datetime header. +Expected header: +value=Fri, 26 Aug 2022 14:38:00 GMT + +### Encode_Datetime_Header_rfc3339 + +- Endpoint: `get /encode/datetime/header/rfc3339` + +Test rfc3339 encode for datetime header. +Expected header: +value=2022-08-26T18:38:00.000Z + +### Encode_Datetime_Header_rfc7231 + +- Endpoint: `get /encode/datetime/header/rfc7231` + +Test rfc7231 encode for datetime header. +Expected header: +value=Fri, 26 Aug 2022 14:38:00 GMT + +### Encode_Datetime_Header_unixTimestamp + +- Endpoint: `get /encode/datetime/header/unix-timestamp` + +Test unixTimestamp encode for datetime header. +Expected header: +value=1686566864 + +### Encode_Datetime_Header_unixTimestampArray + +- Endpoint: `get /encode/datetime/header/unix-timestamp-array` + +Test unixTimestamp encode for datetime array header. +Expected header: +value=1686566864,1686734256 + +### Encode_Datetime_Property_default + +- Endpoint: `post /encode/datetime/property/default` + +Test operation with request and response model contains datetime property with default encode (rfc3339). +Expected request body: + +```json +{ + "value": "2022-08-26T18:38:00.000Z" +} +``` + +Expected response body: + +```json +{ + "value": "2022-08-26T18:38:00.000Z" +} +``` + +### Encode_Datetime_Property_rfc3339 + +- Endpoint: `post /encode/datetime/property/rfc3339` + +Test operation with request and response model contains datetime property with rfc3339 encode. +Expected request body: + +```json +{ + "value": "2022-08-26T18:38:00.000Z" +} +``` + +Expected response body: + +```json +{ + "value": "2022-08-26T18:38:00.000Z" +} +``` + +### Encode_Datetime_Property_rfc7231 + +- Endpoint: `post /encode/datetime/property/rfc7231` + +Test operation with request and response model contains datetime property with rfc7231 encode. +Expected request body: + +```json +{ + "value": "Fri, 26 Aug 2022 14:38:00 GMT" +} +``` + +Expected response body: + +```json +{ + "value": "Fri, 26 Aug 2022 14:38:00 GMT" +} +``` + +### Encode_Datetime_Property_unixTimestamp + +- Endpoint: `post /encode/datetime/property/unix-timestamp` + +Test operation with request and response model contains datetime property with unixTimestamp encode. +Expected request body: + +```json +{ + "value": 1686566864 +} +``` + +Expected response body: + +```json +{ + "value": 1686566864 +} +``` + +### Encode_Datetime_Property_unixTimestampArray + +- Endpoint: `post /encode/datetime/property/unix-timestamp-array` + +Test operation with request and response model contains datetime array property with unixTimestamp encode. +Expected request body:f + +```json +{ + "value": [1686566864, 1686734256] +} +``` + +Expected response body: + +```json +{ + "value": [1686566864, 1686734256] +} +``` + +### Encode_Datetime_Query_default + +- Endpoint: `get /encode/datetime/query/default` + +Test default encode (rfc3339) for datetime query parameter. +Expected query parameter: +value=2022-08-26T18:38:00.000Z + +### Encode_Datetime_Query_rfc3339 + +- Endpoint: `get /encode/datetime/query/rfc3339` + +Test rfc3339 encode for datetime query parameter. +Expected query parameter: +value=2022-08-26T18:38:00.000Z + +### Encode_Datetime_Query_rfc7231 + +- Endpoint: `get /encode/datetime/query/rfc7231` + +Test rfc7231 encode for datetime query parameter. +Expected query parameter: +value=Fri, 26 Aug 2022 14:38:00 GMT + +### Encode_Datetime_Query_unixTimestamp + +- Endpoint: `get /encode/datetime/query/unix-timestamp` + +Test unixTimestamp encode for datetime query parameter. +Expected query parameter: +value=1686566864 + +### Encode_Datetime_Query_unixTimestampArray + +- Endpoint: `get /encode/datetime/query/unix-timestamp-array` + +Test unixTimestamp encode for datetime array query parameter. +Expected query parameter: +value=1686566864, 1686734256 + +### Encode_Datetime_ResponseHeader_default + +- Endpoint: `get /encode/datetime/responseheader/default` + +Test default encode (rfc7231) for datetime header. +Expected response header: +value=Fri, 26 Aug 2022 14:38:00 GMT + +### Encode_Datetime_ResponseHeader_rfc3339 + +- Endpoint: `get /encode/datetime/responseheader/rfc3339` + +Test rfc3339 encode for datetime header. +Expected response header: +value=2022-08-26T18:38:00.000Z + +### Encode_Datetime_ResponseHeader_rfc7231 + +- Endpoint: `get /encode/datetime/responseheader/rfc7231` + +Test rfc7231 encode for datetime header. +Expected response header: +value=Fri, 26 Aug 2022 14:38:00 GMT + +### Encode_Datetime_ResponseHeader_unixTimestamp + +- Endpoint: `get /encode/datetime/responseheader/unix-timestamp` + +Test unixTimestamp encode for datetime header. +Expected response header: +value=1686566864 + +### Encode_Duration_Header_default + +- Endpoint: `get /encode/duration/header/default` + +Test default encode for a duration header. +Expected header `input=P40D` + +### Encode_Duration_Header_float64Seconds + +- Endpoint: `get /encode/duration/header/float64-seconds` + +Test float64 seconds encode for a duration header. +Expected header `duration: 35.625` + +### Encode_Duration_Header_floatSeconds + +- Endpoint: `get /encode/duration/header/float-seconds` + +Test float seconds encode for a duration header. +Expected header `duration: 35.625` + +### Encode_Duration_Header_int32Seconds + +- Endpoint: `get /encode/duration/header/int32-seconds` + +Test int32 seconds encode for a duration header. +Expected header `duration: 36` + +### Encode_Duration_Header_iso8601 + +- Endpoint: `get /encode/duration/header/iso8601` + +Test iso8601 encode for a duration header. +Expected header `duration: P40D` + +### Encode_Duration_Header_iso8601Array + +- Endpoint: `get /encode/duration/header/iso8601-array` + +Test iso8601 encode for a duration array header. +Expected header `duration: [P40D,P50D]` + +### Encode_Duration_Property_default + +- Endpoint: `post /encode/duration/property/default` + +Test operation with request and response model contains a duration property with default encode. +Expected request body: + +```json +{ + "value": "P40D" +} +``` + +Expected response body: + +```json +{ + "value": "P40D" +} +``` + +### Encode_Duration_Property_float64Seconds + +- Endpoint: `get /encode/duration/property/float64-seconds` + +Test operation with request and response model contains a duration property with float64 seconds encode. +Expected request body: + +```json +{ + "value": 35.625 +} +``` + +Expected response body: + +```json +{ + "value": 35.625 +} +``` + +### Encode_Duration_Property_floatSeconds + +- Endpoint: `get /encode/duration/property/float-seconds` + +Test operation with request and response model contains a duration property with float seconds encode. +Expected request body: + +```json +{ + "value": 35.625 +} +``` + +Expected response body: + +```json +{ + "value": 35.625 +} +``` + +### Encode_Duration_Property_floatSecondsArray + +- Endpoint: `get /encode/duration/property/float-seconds-array` + +Test operation with request and response model contains an array property which elements are duration with float seconds encode. +Expected request body: + +```json +{ + "value": [35.625, 46.75] +} +``` + +Expected response body: + +```json +{ + "value": [35.625, 46.75] +} +``` + +### Encode_Duration_Property_int32Seconds + +- Endpoint: `get /encode/duration/property/int32-seconds` + +Test operation with request and response model contains a duration property with int32 seconds encode. +Expected request body: + +```json +{ + "value": 36 +} +``` + +Expected response body: + +```json +{ + "value": 36 +} +``` + +### Encode_Duration_Property_iso8601 + +- Endpoint: `post /encode/duration/property/iso8601` + +Test operation with request and response model contains a duration property with iso8601 encode. +Expected request body: + +```json +{ + "value": "P40D" +} +``` + +Expected response body: + +```json +{ + "value": "P40D" +} +``` + +### Encode_Duration_Query_default + +- Endpoint: `get /encode/duration/query/default` + +Test default encode for a duration parameter. +Expected query parameter `input=P40D` + +### Encode_Duration_Query_float64Seconds + +- Endpoint: `get /encode/duration/query/float64-seconds` + +Test float64 seconds encode for a duration parameter. +Expected query parameter `input=35.625` + +### Encode_Duration_Query_floatSeconds + +- Endpoint: `get /encode/duration/query/float-seconds` + +Test float seconds encode for a duration parameter. +Expected query parameter `input=35.625` + +### Encode_Duration_Query_int32Seconds + +- Endpoint: `get /encode/duration/query/int32-seconds` + +Test int32 seconds encode for a duration parameter. +Expected query parameter `input=36` + +### Encode_Duration_Query_int32SecondsArray + +- Endpoint: `get /encode/duration/query/int32-seconds-array` + +Test int32 seconds encode for a duration array parameter. +Expected query parameter `input=36,47` + +### Encode_Duration_Query_iso8601 + +- Endpoint: `get /encode/duration/query/iso8601` + +Test iso8601 encode for a duration parameter. +Expected query parameter `input=P40D` + +### Encode_Numeric_Property_safeintAsString + +- Endpoint: `post /encode/numeric/property/safeint` + +Test operation with request and response model contains property of safeint type with string encode. +Expected request body: + +```json +{ + "value": "10000000000" +} +``` + +Expected response body: + +```json +{ + "value": "10000000000" +} +``` + +### Encode_Numeric_Property_uint32AsStringOptional + +- Endpoint: `post /encode/numeric/property/uint32` + +Test operation with request and response model contains property of uint32 type with string encode. +Expected request body: + +```json +{ + "value": "1" +} +``` + +Expected response body: + +```json +{ + "value": "1" +} +``` + +### Encode_Numeric_Property_uint8AsString + +- Endpoint: `post /encode/numeric/property/uint8` + +Test operation with request and response model contains property of uint8 type with string encode. +Expected request body: + +```json +{ + "value": "255" +} +``` + +Expected response body: + +```json +{ + "value": "255" +} +``` + +### Parameters_Basic_ExplicitBody_simple + +- Endpoint: `put /parameters/basic/explicit-body/simple` + +Test case for simple explicit body. + +Should generate request body model named `User`. +Should generate an operation like below: + +``` +spreadAsRequestBody(bodyParameter: BodyParameter) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Basic_ImplicitBody_simple + +- Endpoint: `put /parameters/basic/implicit-body/simple` + +Test case for simple implicit body. + +Should generate an operation like below: + +``` +simple(name: string) +``` + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_BodyOptionality_OptionalExplicit + +- Endpoints: + - `post /parameters/body-optionality/optional-explicit/set` + - `post /parameters/body-optionality/optional-explicit/omit` + +Scenario defining how an explicit optional body parameter is specified. + +Expected request body for `set` + +```json +{ "name": "foo" } +``` + +Expected no request body for `omit` + +### Parameters_BodyOptionality_requiredExplicit + +- Endpoint: `post /parameters/body-optionality/required-explicit` + +Scenario defining how an explicit required body parameter is specified. + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_BodyOptionality_requiredImplicit + +- Endpoint: `post /parameters/body-optionality/required-implicit` + +Scenario defining how an implicit required body parameter is specified. + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_CollectionFormat_Header_csv + +- Endpoint: `get /parameters/collection-format/header/csv` + +This test is testing sending a csv collection format array header parameters + +### Parameters_CollectionFormat_Query_csv + +- Endpoint: `get /parameters/collection-format/query/csv` + +This test is testing sending a csv collection format array query parameters + +### Parameters_CollectionFormat_Query_multi + +- Endpoint: `get /parameters/collection-format/query/multi` + +This test is testing sending a multi collection format array query parameters + +### Parameters_CollectionFormat_Query_pipes + +- Endpoint: `get /parameters/collection-format/query/pipes` + +This test is testing sending a pipes collection format array query parameters + +### Parameters_CollectionFormat_Query_ssv + +- Endpoint: `get /parameters/collection-format/query/ssv` + +This test is testing sending a ssv collection format array query parameters + +### Parameters_CollectionFormat_Query_tsv + +- Endpoint: `get /parameters/collection-format/query/tsv` + +This test is testing sending a tsv collection format array query parameters + +### Parameters_Spread_Alias_spreadAsRequestBody + +- Endpoint: `put /parameters/spread/alias/request-body` + +Test case for spread alias. + +Should not generate any model named `BodyParameter`. +Should generate an operation like: + +``` +spreadAsRequestBody(name: string) +``` + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Alias_spreadAsRequestParameter + +- Endpoint: `put /parameters/spread/alias/request-parameter/{id}` + +Test case for spread alias with path and header parameter. + +Should not generate any model named `RequestParameter`. +Should generate an operation like below: + +``` +spreadAsRequestParameter(id: string, x_ms_test_header: string, name: string) +``` + +Note the parameter name may be normalized and vary by language. + +Expected path parameter: id="1" +Expected header parameter: x-ms-test-header="bar" +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Alias_spreadParameterWithInnerAlias + +- Endpoint: `post /parameters/spread/alias/inner-alias-parameter` + +Test case for spread alias with contains another alias property as body. + +Should not generate any model named `InnerAlias` and `InnerAliasParameter`. +Should generate an operation like below: + +``` +spreadParameterWithInnerAlias(id: string, name: string, age: int32, x_ms_test_header: string) +``` + +Note the parameter name is guessed from the model name and it may vary by language. +Expected path parameter: id="1" +Expected header parameter: x-ms-test-header="bar" +Expected request body: + +```json +{ + "name": "foo", + "age": 1 +} +``` + +### Parameters_Spread_Alias_spreadParameterWithInnerModel + +- Endpoint: `post /parameters/spread/alias/inner-model-parameter/{id}` + +Test case for spread alias. + +Should not generate any model named `InnerModel`. +Should not generate any model named `InnerModelParameter`. +Should generate an operation like: + +``` +spreadParameterWithInnerModel(id: string, x_ms_test_header: string, name: string) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected path parameter: id="1" +Expected header parameter: x-ms-test-header="bar" +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Alias_spreadWithMultipleParameters + +- Endpoint: `put /parameters/spread/alias/multiple-parameters/{id}` + +Test case for spread alias including 6 parameters. May handle as property bag for these parameters. + +Should not generate any model named `MultipleRequestParameters`. +Since it contains both optional properties and required properties, the method signature might vary across different languages. +Note it's also acceptable if some languages handle it as property bag. + +Expected path parameter: id="1" +Expected header parameter: x-ms-test-header="bar" +Expected request body: + +```json +{ + "requiredString": "foo", + "optionalInt": 1, + "requiredIntList": [1, 2], + "optionalStringList": ["foo", "bar"] +} +``` + +### Parameters_Spread_Model_spreadAsRequestBody + +- Endpoint: `put /parameters/spread/model/request-body` + +Test case for spread named model. + +Should not generate request body model named `BodyParameter`. +Should generate an operation like below: + +``` +spreadAsRequestBody(name: string) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Model_spreadCompositeRequest + +- Endpoint: `put /parameters/spread/model/composite-request/{name}` + +Test case for spread model with all http request decorator. + +Should generate request body model named `BodyParameter`. +Should not generate model named `CompositeRequest`. +Should generate an operation like below: + +``` +spreadCompositeRequest(name: string, testHeader: string, bodyParameter: BodyParameter) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected path parameter: name="foo" +Expected header parameter: testHeader="bar" +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Model_spreadCompositeRequestMix + +- Endpoint: `put /parameters/spread/model/composite-request-mix/{name}` + +Test case for spread model with non-body http request decorator. + +Should not generate model named `CompositeRequestMix`. +Should generate an operation like below: + +``` +spreadCompositeRequestMix(name: string, testHeader: string, prop: string) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected path parameter: name="foo" +Expected header parameter: testHeader="bar" +Expected request body: + +```json +{ "prop": "foo" } +``` + +### Parameters_Spread_Model_spreadCompositeRequestOnlyWithBody + +- Endpoint: `put /parameters/spread/model/composite-request-only-with-body` + +Test case for spread model only with `@body` property. + +Should generate request body model named `BodyParameter`. +Should not generate model named `CompositeRequestOnlyWithBody`. +Should generate an operation like below: + +``` +spreadCompositeRequestOnlyWithBody(bodyParameter: BodyParameter) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Model_spreadCompositeRequestWithoutBody + +- Endpoint: `put /parameters/spread/model/composite-request-without-body/{name}` + +Test case for spread model without `@body` property. + +Should not generate model named `CompositeRequestOnlyWithBody`. +Should generate an operation like below: + +``` +spreadCompositeRequestWithoutBody(name: string, testHeader: string) +``` + +Expected path parameter: name="foo" +Expected header parameter: testHeader="bar" + +### Payload_ContentNegotiation_DifferentBody + +- Endpoints: + - `get /content-negotiation/different-body` + - `get /content-negotiation/different-body` + +Scenario that a different payload depending on the accept header. + +- application/json return a png image in a Json object +- image/png return the png image + +### Payload_ContentNegotiation_SameBody + +- Endpoints: + - `get /content-negotiation/same-body` + - `get /content-negotiation/same-body` + +Scenario that returns a different file encoding depending on the accept header. + +- image/png return a png image +- image/jpeg return a jpeg image + +### Payload_JsonMergePatch_createResource + +- Endpoint: `put /json-merge-patch/create/resource` + +Expected input body: + +```json +{ + "name": "Madge", + "description": "desc", + "map": { + "key": { + "name": "InnerMadge", + "description": "innerDesc" + } + }, + "array": [ + { + "name": "InnerMadge", + "description": "innerDesc" + } + ], + "intValue": 1, + "floatValue": 1.1, + "innerModel": { + "name": "InnerMadge", + "description": "innerDesc" + }, + "intArray": [1, 2, 3] +} +``` + +Expected response body: + +```json +{ + "name": "Madge", + "description": "desc", + "map": { + "key": { + "name": "InnerMadge", + "description": "innerDesc" + } + }, + "array": [ + { + "name": "InnerMadge", + "description": "innerDesc" + } + ], + "intValue": 1, + "floatValue": 1.1, + "innerModel": { + "name": "InnerMadge", + "description": "innerDesc" + }, + "intArray": [1, 2, 3] +} +``` + +### Payload_JsonMergePatch_updateOptionalResource + +- Endpoint: `patch /json-merge-patch/update/resource/optional` + +Should serialize null values with merge-patch+json enabled. + +Expected input body: + +```json +{ + "description": null, + "map": { + "key": { + "description": null + }, + "key2": null + }, + "array": null, + "intValue": null, + "floatValue": null, + "innerModel": null, + "intArray": null +} +``` + +Expected response body: + +```json +{ + "name": "Madge", + "map": { + "key": { + "name": "InnerMadge" + } + } +} +``` + +### Payload_JsonMergePatch_updateResource + +- Endpoint: `patch /json-merge-patch/update/resource` + +Should serialize null values with merge-patch+json enabled. + +Expected input body: + +```json +{ + "description": null, + "map": { + "key": { + "description": null + }, + "key2": null + }, + "array": null, + "intValue": null, + "floatValue": null, + "innerModel": null, + "intArray": null +} +``` + +Expected response body: + +```json +{ + "name": "Madge", + "map": { + "key": { + "name": "InnerMadge" + } + } +} +``` + +### Payload_MediaType_StringBody_getAsJson + +- Endpoint: `get /payload/media-type/string-body/getAsJson` + +Expected response body is "foo". + +### Payload_MediaType_StringBody_getAsText + +- Endpoint: `get /payload/media-type/string-body/getAsText` + +Expected response body is a string '{cat}'. + +### Payload_MediaType_StringBody_sendAsJson + +- Endpoint: `post /payload/media-type/string-body/sendAsJson` + +Expected request body is "foo". + +### Payload_MediaType_StringBody_sendAsText + +- Endpoint: `post /payload/media-type/string-body/sendAsText` + +Expected request body is a string '{cat}'. + +### Payload_MultiPart_FormData_anonymousModel + +- Endpoint: `post /multipart/form-data/anonymous-model` + +Expect request ( + +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with + appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it. +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied. + If there are duplicated filename in same filedName, cadl-ranch can't parse them all. + ): + +``` +POST /multipart/form-data/anonymous-model HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream; + +{…file content of .jpg file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_basic + +- Endpoint: `post /multipart/form-data/mixed-parts` + +Expect request ( + +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with + appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it. +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied. + If there are duplicated filename in same fieldName, cadl-ranch can't parse them all. + ): + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="id" +Content-Type: text/plain + +123 +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream; + +{…file content of .jpg file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_binaryArrayParts + +- Endpoint: `post /multipart/form-data/binary-array-parts` + +Expect request ( + +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with + appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it. +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied. + If there are duplicated filename in same fieldName, cadl-ranch can't parse them all. + ): + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="id" +Content-Type: text/plain + +123 +--abcde12345 +Content-Disposition: form-data; name="pictures"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345 +Content-Disposition: form-data; name="pictures"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_checkFileNameAndContentType + +- Endpoint: `post /multipart/form-data/check-filename-and-content-type` + +this case will check filename and content-type of file part, so expect request: + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="id" +Content-Type: text/plain + +123 +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="hello.jpg" +Content-Type: image/jpg + +{…file content of .jpg file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_fileArrayAndBasic + +- Endpoint: `post /multipart/form-data/complex-parts` + +Expect request ( + +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with + appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it. +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied. + If there are duplicated filename in same fieldName, cadl-ranch can't parse them all. + ): + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="id" +Content-Type: text/plain + +123 +--abcde12345 +Content-Disposition: form-data; name="address" +Content-Type: application/json + +{ + "city": "X" +} +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream + +{…file content of .jpg file…} +--abcde12345-- +Content-Disposition: form-data; name="previousAddresses" +Content-Type: application/json + +[{ + "city": "Y" +},{ + "city": "Z" +}] +--abcde12345 +Content-Disposition: form-data; name="pictures"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345 +Content-Disposition: form-data; name="pictures"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_HttpParts_ContentType_imageJpegContentType + +- Endpoint: `post /multipart/form-data/check-filename-and-specific-content-type-with-httppart` + +This case will check filename and specific content-type of file part, so expect request: + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="hello.jpg" +Content-Type: image/jpg + +{…file content of .jpg file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_HttpParts_ContentType_optionalContentType + +- Endpoint: `post /multipart/form-data/file-with-http-part-optional-content-type` + +Please send request twice, first time with no content-type and second time with content-type "application/octet-stream". Expect request: + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream + +{…file content of .jpg file…} +--abcde12345 +``` + +### Payload_MultiPart_FormData_HttpParts_ContentType_requiredContentType + +- Endpoint: `post /multipart/form-data/check-filename-and-required-content-type-with-httppart` + +This case will check required content-type of file part, so expect request: + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream + +{…file content of .jpg file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_HttpParts_jsonArrayAndFileArray + +- Endpoint: `post /multipart/form-data/complex-parts-with-httppart` + +For File part, filename will not be checked but it is necessary otherwise cadl-ranch can't parse it; +content-type will be checked with value "application/octet-stream". Expect request: + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="id" +Content-Type: text/plain + +123 +--abcde12345 +Content-Disposition: form-data; name="address" +Content-Type: application/json + +{ + "city": "X" +} +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream + +{…file content of .jpg file…} +--abcde12345-- +Content-Disposition: form-data; name="previousAddresses" +Content-Type: application/json + +[{ + "city": "Y" +},{ + "city": "Z" +}] +--abcde12345 +Content-Disposition: form-data; name="pictures"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345 +Content-Disposition: form-data; name="pictures"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_HttpParts_NonString_float + +- Endpoint: `post /multipart/form-data/non-string-float` + +Expect request: + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="temperature" +Content-Type: text/plain + +0.5 +--abcde12345 +``` + +### Payload_MultiPart_FormData_jsonPart + +- Endpoint: `post /multipart/form-data/json-part` + +Expect request ( + +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with + appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it. +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied. + If there are duplicated filename in same fieldName, cadl-ranch can't parse them all. + ): + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="address" +Content-Type: application/json + +{ + "city": "X" +} +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream + +{…file content of .jpg file…} +--abcde12345-- +``` + +### Payload_MultiPart_FormData_multiBinaryParts + +- Endpoint: `post /multipart/form-data/multi-binary-parts` + +Please send request twice, first time with only profileImage, second time with both profileImage and picture( + +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with + appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it. +- according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied. + If there are duplicated filename in same fieldName, cadl-ranch can't parse them all. + ): + +``` +POST /upload HTTP/1.1 +Content-Length: 428 +Content-Type: multipart/form-data; boundary=abcde12345 + +--abcde12345 +Content-Disposition: form-data; name="profileImage"; filename="" +Content-Type: application/octet-stream + +{…file content of .jpg file…} +--abcde12345 +Content-Disposition: form-data; name="picture"; filename="" +Content-Type: application/octet-stream + +{…file content of .png file…} +--abcde12345-- +``` + +### Payload_Xml_ModelWithArrayOfModelValue_get + +- Endpoint: `get /payload/xml/modelWithArrayOfModel` + +Expected response body: + +```xml + + + + foo + 123 + + + bar + 456 + + + +``` + +### Payload_Xml_ModelWithArrayOfModelValue_put + +- Endpoint: `put /payload/xml/modelWithArrayOfModel` + +Expected request body: + +```xml + + + + foo + 123 + + + bar + 456 + + + +``` + +### Payload_Xml_ModelWithAttributesValue_get + +- Endpoint: `get /payload/xml/modelWithAttributes` + +Expected response body: + +```xml + + true + +``` + +### Payload_Xml_ModelWithAttributesValue_put + +- Endpoint: `put /payload/xml/modelWithAttributes` + +Expected request body: + +```xml + + true + +``` + +### Payload_Xml_ModelWithDictionaryValue_get + +- Endpoint: `get /payload/xml/modelWithDictionary` + +Expected response body: + +```xml + + + blue + 123 + false + + +``` + +### Payload_Xml_ModelWithDictionaryValue_put + +- Endpoint: `put /payload/xml/modelWithDictionary` + +Expected request body: + +```xml + + + blue + 123 + false + + +``` + +### Payload_Xml_ModelWithEmptyArrayValue_get + +- Endpoint: `get /payload/xml/modelWithEmptyArray` + +Expected response body: + +```xml + + + +``` + +### Payload_Xml_ModelWithEmptyArrayValue_put + +- Endpoint: `put /payload/xml/modelWithEmptyArray` + +Expected request body: + +```xml + + + +``` + +### Payload_Xml_ModelWithEncodedNamesValue_get + +- Endpoint: `get /payload/xml/modelWithEncodedNames` + +Expected response body: + +```xml + + + foo + 123 + + + red + green + blue + + +``` + +### Payload_Xml_ModelWithEncodedNamesValue_put + +- Endpoint: `put /payload/xml/modelWithEncodedNames` + +Expected request body: + +```xml + + + foo + 123 + + + red + green + blue + + +``` + +### Payload_Xml_ModelWithOptionalFieldValue_get + +- Endpoint: `get /payload/xml/modelWithOptionalField` + +Expected response body: + +```xml + + widget + +``` + +### Payload_Xml_ModelWithOptionalFieldValue_put + +- Endpoint: `put /payload/xml/modelWithOptionalField` + +Expected request body: + +```xml + + widget + +``` + +### Payload_Xml_ModelWithRenamedArraysValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedArrays` + +Expected response body: + +```xml + + red + green + blue + + 1 + 2 + + +``` + +### Payload_Xml_ModelWithRenamedArraysValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedArrays` + +Expected request body: + +```xml + + red + green + blue + + 1 + 2 + + +``` + +### Payload_Xml_ModelWithRenamedFieldsValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedFields` + +Expected response body: + +```xml + + + foo + 123 + + + bar + 456 + + +``` + +### Payload_Xml_ModelWithRenamedFieldsValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedFields` + +Expected request body: + +```xml + + + foo + 123 + + + bar + 456 + + +``` + +### Payload_Xml_ModelWithSimpleArraysValue_get + +- Endpoint: `get /payload/xml/modelWithSimpleArrays` + +Expected response body: + +```xml + + + red + green + blue + + + 1 + 2 + + +``` + +### Payload_Xml_ModelWithSimpleArraysValue_put + +- Endpoint: `put /payload/xml/modelWithSimpleArrays` + +Expected request body: + +```xml + + + red + green + blue + + + 1 + 2 + + +``` + +### Payload_Xml_ModelWithTextValue_get + +- Endpoint: `get /payload/xml/modelWithText` + +Expected response body: + +```xml + + This is some text. + +``` + +### Payload_Xml_ModelWithTextValue_put + +- Endpoint: `put /payload/xml/modelWithText` + +Expected request body: + +```xml + + This is some text. + +``` + +### Payload_Xml_ModelWithUnwrappedArrayValue_get + +- Endpoint: `get /payload/xml/modelWithUnwrappedArray` + +Expected response body: + +```xml + + red + green + blue + + 1 + 2 + + +``` + +### Payload_Xml_ModelWithUnwrappedArrayValue_put + +- Endpoint: `put /payload/xml/modelWithUnwrappedArray` + +Expected request body: + +```xml + + red + green + blue + + 1 + 2 + + +``` + +### Payload_Xml_SimpleModelValue_get + +- Endpoint: `get /payload/xml/simpleModel` + +Expected response body: + +```xml + + foo + 123 + +``` + +### Payload_Xml_SimpleModelValue_put + +- Endpoint: `put /payload/xml/simpleModel` + +Expected request body: + +```xml + + foo + 123 + +``` + +### Routes_fixed + +- Endpoint: `get /routes/fixed` + +Simple operation at a fixed in an interface +Expected path: /routes/fixed + +### Routes_InInterface + +- Endpoint: `get /routes/in-interface/fixed` + +Simple operation at a fixed in an interface +Expected path: /routes/in-interface/fixed + +### Routes_PathParameters_annotationOnly + +- Endpoint: `get /routes/path/annotation-only` + +Path parameter annotated with @path but not defined explicitly in the route +Value: "a" +Expected path: /routes/path/annotation-only/a + +### Routes_PathParameters_explicit + +- Endpoint: `get /routes/path/explicit/{param}` + +Path parameter defined explicitly +Value: "a" +Expected path: /routes/path/explicit/a + +### Routes_PathParameters_LabelExpansion_Explode_array + +- Endpoint: `get /routes/path/label/explode/array{.param*}` + +Test label expansion with explode: true when passed an array value. +Param value: ["a","b"] +Expected path: /routes/label/explode/array.a.b + +### Routes_PathParameters_LabelExpansion_Explode_primitive + +- Endpoint: `get /routes/path/label/explode/primitive{.param*}` + +Test label expansion with explode: true when passed a primitive value. +Param value: "a" +Expected path: /routes/label/explode/primitive.a + +### Routes_PathParameters_LabelExpansion_Explode_record + +- Endpoint: `get /routes/path/label/explode/record{.param*}` + +Test label expansion with explode: true when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/label/explode/record.a=1.b=2 + +### Routes_PathParameters_LabelExpansion_Standard_array + +- Endpoint: `get /routes/path/label/standard/array{.param}` + +Test label expansion with explode: false when passed an array value. +Param value: ["a","b"] +Expected path: /routes/label/standard/array.a,b + +### Routes_PathParameters_LabelExpansion_Standard_primitive + +- Endpoint: `get /routes/path/label/standard/primitive{.param}` + +Test label expansion with explode: false when passed a primitive value. +Param value: "a" +Expected path: /routes/label/standard/primitive.a + +### Routes_PathParameters_LabelExpansion_Standard_record + +- Endpoint: `get /routes/path/label/standard/record{.param}` + +Test label expansion with explode: false when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/label/standard/record.a,1,b,2 + +### Routes_PathParameters_MatrixExpansion_Explode_array + +- Endpoint: `get /routes/path/matrix/explode/array{;param*}` + +Test matrix expansion with explode: true when passed an array value. +Param value: ["a","b"] +Expected path: /routes/matrix/explode/array;a.b + +### Routes_PathParameters_MatrixExpansion_Explode_primitive + +- Endpoint: `get /routes/path/matrix/explode/primitive{;param*}` + +Test matrix expansion with explode: true when passed a primitive value. +Param value: "a" +Expected path: /routes/matrix/explode/primitive;a + +### Routes_PathParameters_MatrixExpansion_Explode_record + +- Endpoint: `get /routes/path/matrix/explode/record{;param*}` + +Test matrix expansion with explode: true when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/matrix/explode/record;a=1;b=2 + +### Routes_PathParameters_MatrixExpansion_Standard_array + +- Endpoint: `get /routes/path/matrix/standard/array{;param}` + +Test matrix expansion with explode: false when passed an array value. +Param value: ["a","b"] +Expected path: /routes/matrix/standard/array;a,b + +### Routes_PathParameters_MatrixExpansion_Standard_primitive + +- Endpoint: `get /routes/path/matrix/standard/primitive{;param}` + +Test matrix expansion with explode: false when passed a primitive value. +Param value: "a" +Expected path: /routes/matrix/standard/primitive;a + +### Routes_PathParameters_MatrixExpansion_Standard_record + +- Endpoint: `get /routes/path/matrix/standard/record{;param}` + +Test matrix expansion with explode: false when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/matrix/standard/record;a,1,b,2 + +### Routes_PathParameters_PathExpansion_Explode_array + +- Endpoint: `get /routes/path/path/explode/array{/param*}` + +Test path expansion with explode: true when passed an array value. +Param value: ["a","b"] +Expected path: /routes/path/explode/array/a/b + +### Routes_PathParameters_PathExpansion_Explode_primitive + +- Endpoint: `get /routes/path/path/explode/primitive{/param*}` + +Test path expansion with explode: true when passed a primitive value. +Param value: "a" +Expected path: /routes/path/explode/primitive/a + +### Routes_PathParameters_PathExpansion_Explode_record + +- Endpoint: `get /routes/path/path/explode/record{/param*}` + +Test path expansion with explode: true when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/path/explode/record/a=1/b=2 + +### Routes_PathParameters_PathExpansion_Standard_array + +- Endpoint: `get /routes/path/path/standard/array{/param}` + +Test path expansion with explode: false when passed an array value. +Param value: ["a","b"] +Expected path: /routes/path/standard/array/a,b + +### Routes_PathParameters_PathExpansion_Standard_primitive + +- Endpoint: `get /routes/path/path/standard/primitive{/param}` + +Test path expansion with explode: false when passed a primitive value. +Param value: "a" +Expected path: /routes/path/standard/primitive/a + +### Routes_PathParameters_PathExpansion_Standard_record + +- Endpoint: `get /routes/path/path/standard/record{/param}` + +Test path expansion with explode: false when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/path/standard/record/a,1,b,2 + +### Routes_PathParameters_ReservedExpansion_annotation + +- Endpoint: `get /routes/path/reserved-expansion/annotation` + +Defines a path parameter that shouldn't encode reserved characters. It should however still encode the other url characters. +Param value: "foo/bar baz" +Expected path: "/routes/path/reserved-expansion/annotation/foo/bar%20baz" + +### Routes_PathParameters_ReservedExpansion_template + +- Endpoint: `get /routes/path/reserved-expansion/template/{+param}` + +Defines a path parameter that shouldn't encode reserved characters. It should however still encode the other url characters. +Param value: "foo/bar baz" +Expected path: "/routes/path/reserved-expansion/template/foo/bar%20baz" + +### Routes_PathParameters_SimpleExpansion_Explode_array + +- Endpoint: `get /routes/path/simple/explode/array{param*}` + +Test simple expansion with explode: true when passed an array value. +Param value: ["a","b"] +Expected path: /routes/simple/explode/arraya.b + +### Routes_PathParameters_SimpleExpansion_Explode_primitive + +- Endpoint: `get /routes/path/simple/explode/primitive{param*}` + +Test simple expansion with explode: true when passed a primitive value. +Param value: "a" +Expected path: /routes/simple/explode/primitivea + +### Routes_PathParameters_SimpleExpansion_Explode_record + +- Endpoint: `get /routes/path/simple/explode/record{param*}` + +Test simple expansion with explode: true when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/simple/explode/recorda=1,b=2 + +### Routes_PathParameters_SimpleExpansion_Standard_array + +- Endpoint: `get /routes/path/simple/standard/array{param}` + +Test simple expansion with explode: false when passed an array value. +Param value: ["a","b"] +Expected path: /routes/simple/standard/arraya,b + +### Routes_PathParameters_SimpleExpansion_Standard_primitive + +- Endpoint: `get /routes/path/simple/standard/primitive{param}` + +Test simple expansion with explode: false when passed a primitive value. +Param value: "a" +Expected path: /routes/simple/standard/primitivea + +### Routes_PathParameters_SimpleExpansion_Standard_record + +- Endpoint: `get /routes/path/simple/standard/record{param}` + +Test simple expansion with explode: false when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/simple/standard/recorda,1,b,2 + +### Routes_PathParameters_templateOnly + +- Endpoint: `get /routes/path/template-only/{param}` + +Path parameter defined implicitly +Value: "a" +Expected path: /routes/path/template-only/a + +### Routes_QueryParameters_annotationOnly + +- Endpoint: `get /routes/query/annotation-only` + +Query parameter annotated with @query but not defined explicitly in the route + +### Routes_QueryParameters_explicit + +- Endpoint: `get /routes/query/explicit{?param}` + +Query parameter marked with explicit @query + +### Routes_QueryParameters_QueryContinuation_Explode_array + +- Endpoint: `get /routes/query/query-continuation/explode/array?fixed=true{¶m*}` + +Test query continuation expansion with explode: true when passed an array value. +Param value: ["a","b"] +Expected path: /routes/query/query-continuation/explode/array?fixed=true¶m=a¶m=b + +### Routes_QueryParameters_QueryContinuation_Explode_primitive + +- Endpoint: `get /routes/query/query-continuation/explode/primitive?fixed=true{¶m*}` + +Test query continuation expansion with explode: true when passed a primitive value. +Param value: "a" +Expected path: /routes/query/query-continuation/explode/primitive?fixed=true¶m=a + +### Routes_QueryParameters_QueryContinuation_Explode_record + +- Endpoint: `get /routes/query/query-continuation/explode/record?fixed=true{¶m*}` + +Test query continuation expansion with explode: true when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/query/query-continuation/explode/record?fixed=true&a=1&b=2 + +### Routes_QueryParameters_QueryContinuation_Standard_array + +- Endpoint: `get /routes/query/query-continuation/standard/array?fixed=true{¶m}` + +Test query continuation expansion with explode: false when passed an array value. +Param value: ["a","b"] +Expected path: /routes/query/query-continuation/standard/array?fixed=true¶m=a,b + +### Routes_QueryParameters_QueryContinuation_Standard_primitive + +- Endpoint: `get /routes/query/query-continuation/standard/primitive?fixed=true{¶m}` + +Test query continuation expansion with explode: false when passed a primitive value. +Param value: "a" +Expected path: /routes/query/query-continuation/standard/primitive?fixed=true¶m=a + +### Routes_QueryParameters_QueryContinuation_Standard_record + +- Endpoint: `get /routes/query/query-continuation/standard/record?fixed=true{¶m}` + +Test query continuation expansion with explode: false when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/query/query-continuation/standard/record?fixed=true¶m=a,1,b,2 + +### Routes_QueryParameters_QueryExpansion_Explode_array + +- Endpoint: `get /routes/query/query-expansion/explode/array{?param*}` + +Test query expansion with explode: true when passed an array value. +Param value: ["a","b"] +Expected path: /routes/query/query-expansion/explode/array?param=a¶m=b + +### Routes_QueryParameters_QueryExpansion_Explode_primitive + +- Endpoint: `get /routes/query/query-expansion/explode/primitive{?param*}` + +Test query expansion with explode: true when passed a primitive value. +Param value: "a" +Expected path: /routes/query/query-expansion/explode/primitive?param=a + +### Routes_QueryParameters_QueryExpansion_Explode_record + +- Endpoint: `get /routes/query/query-expansion/explode/record{?param*}` + +Test query expansion with explode: true when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/query/query-expansion/explode/record?a=1&b=2 + +### Routes_QueryParameters_QueryExpansion_Standard_array + +- Endpoint: `get /routes/query/query-expansion/standard/array{?param}` + +Test query expansion with explode: false when passed an array value. +Param value: ["a","b"] +Expected path: /routes/query/query-expansion/standard/array?param=a,b + +### Routes_QueryParameters_QueryExpansion_Standard_primitive + +- Endpoint: `get /routes/query/query-expansion/standard/primitive{?param}` + +Test query expansion with explode: false when passed a primitive value. +Param value: "a" +Expected path: /routes/query/query-expansion/standard/primitive?param=a + +### Routes_QueryParameters_QueryExpansion_Standard_record + +- Endpoint: `get /routes/query/query-expansion/standard/record{?param}` + +Test query expansion with explode: false when passed a record value. +Param value: {a: 1, b: 2} +Expected path: /routes/query/query-expansion/standard/record?param=a,1,b,2 + +### Routes_QueryParameters_templateOnly + +- Endpoint: `get /routes/query/template-only{?param}` + +Query parameter defined implicitly + +### Serialization_EncodedName_Json_Property_get + +- Endpoint: `get /serialization/encoded-name/json/property` + +Testing that you deserialize the right json name over the wire. + +Your generated SDK should generate JsonEncodedNameModel with one property `defaultName` with wire name `wireName`. + +Expected response body: + +```json +{ "wireName": true } +``` + +### Serialization_EncodedName_Json_Property_send + +- Endpoint: `post /serialization/encoded-name/json/property` + +Testing that you send the right JSON name on the wire. +Your generated SDK should generate JsonEncodedNameModel with one property `defaultName` with wire name `wireName`. + +Expected request body: + +```json +{ "wireName": true } +``` + +### Server_Endpoint_NotDefined_valid + +- Endpoint: `head /server/endpoint/not-defined/valid` + +A simple operation in a server without defining a endpoint. Expected uri: '/valid' + +### Server_Path_Multiple_noOperationParams + +- Endpoint: `get /server/path/multiple/{apiVersion}` + +Operation with client path parameters. + +Expected path parameter: apiVersion=v1.0 + +### Server_Path_Multiple_withOperationPathParam + +- Endpoint: `get /server/path/multiple/{apiVersion}` + +Operation with client and method path parameters. + +Expected path parameter: apiVersion=v1.0, keyword=test + +### Server_Path_Single_myOp + +- Endpoint: `head /server/path/single/myOp` + +An simple operation in a parameterized server. + +### Server_Versions_NotVersioned_withoutApiVersion + +- Endpoint: `head /server/versions/not-versioned/without-api-version` + +A simple operation without api-version. Expected url: '/without-api-version', it should not contain any api-version. + +### Server_Versions_NotVersioned_withPathApiVersion + +- Endpoint: `head /server/versions/not-versioned/with-path-api-version` + +A simple operation with path api-version, which doesn't have any default value. Expected url: '/with-path-api-version/v1.0'. + +### Server_Versions_NotVersioned_withQueryApiVersion + +- Endpoint: `head /server/versions/not-versioned/with-query-api-version` + +A simple operation with query api-version, which doesn't have any default value. Expected url: '/with-query-api-version?api-version=v1.0'. + +### Server_Versions_Versioned_withoutApiVersion + +- Endpoint: `head /server/versions/versioned/without-api-version` + +A simple operation without api-version. Expected url: '/without-api-version', it should not contain any api-version. + +### Server_Versions_Versioned_withPathApiVersion + +- Endpoint: `head /server/versions/versioned/with-path-api-version` + +A simple operation with path api-version, whose default value is defined as '2022-12-01-preview'. Expected url: '/with-path-api-version/2022-12-01-preview'. + +### Server_Versions_Versioned_withQueryApiVersion + +- Endpoint: `head /server/versions/versioned/with-query-api-version` + +A simple operation with query api-version, whose default value is defined as '2022-12-01-preview'. Expected url: '/with-query-api-version?api-version=2022-12-01-preview'. + +### Server_Versions_Versioned_withQueryOldApiVersion + +- Endpoint: `head /server/versions/versioned/with-query-old-api-version` + +A simple operation with query api-version, that do NOT use the default but '2021-01-01-preview'. It's expected to be set at the client level. Expected url: '/with-old-query-api-version?api-version=2021-01-01-preview'. + +### SpecialHeaders_ConditionalRequest_headIfModifiedSince + +- Endpoint: `head /special-headers/conditional-request/if-modified-since` + +Check when only If-Modified-Since in header is defined. +Expected header parameters: + +- if-modified-since=Fri, 26 Aug 2022 14:38:00 GMT + +### SpecialHeaders_ConditionalRequest_postIfMatch + +- Endpoint: `post /special-headers/conditional-request/if-match` + +Check when only If-Match in header is defined. +Expected header parameters: + +- if-match="valid" + +### SpecialHeaders_ConditionalRequest_postIfNoneMatch + +- Endpoint: `post /special-headers/conditional-request/if-none-match` + +Check when only If-None-Match in header is defined. +Expected header parameters: + +- if-nonematch="invalid" + +### SpecialHeaders_ConditionalRequest_postIfUnmodifiedSince + +- Endpoint: `post /special-headers/conditional-request/if-unmodified-since` + +Check when only If-Unmodified-Since in header is defined. +Expected header parameters: + +- if-unmodified-since=Fri, 26 Aug 2022 14:38:00 GMT + +### SpecialHeaders_Repeatability_immediateSuccess + +- Endpoint: `post /special-headers/repeatability/immediateSuccess` + +Check we recognize Repeatability-Request-ID and Repeatability-First-Sent. + +### SpecialWords_ModelProperties_sameAsModel + +- Endpoint: `get /special-words/model-properties/same-as-model` + +Verify that a property can be called the same as the model name. This can be an issue in some languages where the class name is the constructor. + +Send + +```json +{ "SameAsModel": "ok" } +``` + +### SpecialWords_Models_and + +- Endpoint: `get /special-words/models/and` + +Verify that the name "and" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_as + +- Endpoint: `get /special-words/models/as` + +Verify that the name "as" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_assert + +- Endpoint: `get /special-words/models/assert` + +Verify that the name "assert" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_async + +- Endpoint: `get /special-words/models/async` + +Verify that the name "async" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_await + +- Endpoint: `get /special-words/models/await` + +Verify that the name "await" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_break + +- Endpoint: `get /special-words/models/break` + +Verify that the name "break" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_class + +- Endpoint: `get /special-words/models/class` + +Verify that the name "class" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_constructor + +- Endpoint: `get /special-words/models/constructor` + +Verify that the name "constructor" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_continue + +- Endpoint: `get /special-words/models/continue` + +Verify that the name "continue" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_def + +- Endpoint: `get /special-words/models/def` + +Verify that the name "def" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_del + +- Endpoint: `get /special-words/models/del` + +Verify that the name "del" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_elif + +- Endpoint: `get /special-words/models/elif` + +Verify that the name "elif" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_else + +- Endpoint: `get /special-words/models/else` + +Verify that the name "else" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_except + +- Endpoint: `get /special-words/models/except` + +Verify that the name "except" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_exec + +- Endpoint: `get /special-words/models/exec` + +Verify that the name "exec" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_finally + +- Endpoint: `get /special-words/models/finally` + +Verify that the name "finally" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_for + +- Endpoint: `get /special-words/models/for` + +Verify that the name "for" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_from + +- Endpoint: `get /special-words/models/from` + +Verify that the name "from" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_global + +- Endpoint: `get /special-words/models/global` + +Verify that the name "global" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_if + +- Endpoint: `get /special-words/models/if` + +Verify that the name "if" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_import + +- Endpoint: `get /special-words/models/import` + +Verify that the name "import" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_in + +- Endpoint: `get /special-words/models/in` + +Verify that the name "in" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_is + +- Endpoint: `get /special-words/models/is` + +Verify that the name "is" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_lambda + +- Endpoint: `get /special-words/models/lambda` + +Verify that the name "lambda" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_not + +- Endpoint: `get /special-words/models/not` + +Verify that the name "not" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_or + +- Endpoint: `get /special-words/models/or` + +Verify that the name "or" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_pass + +- Endpoint: `get /special-words/models/pass` + +Verify that the name "pass" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_raise + +- Endpoint: `get /special-words/models/raise` + +Verify that the name "raise" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_return + +- Endpoint: `get /special-words/models/return` + +Verify that the name "return" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_try + +- Endpoint: `get /special-words/models/try` + +Verify that the name "try" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_while + +- Endpoint: `get /special-words/models/while` + +Verify that the name "while" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_with + +- Endpoint: `get /special-words/models/with` + +Verify that the name "with" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Models_yield + +- Endpoint: `get /special-words/models/yield` + +Verify that the name "yield" works. Send + +```json +{ "name": "ok" } +``` + +### SpecialWords_Operations_and + +- Endpoint: `get /special-words/operations/and` + +Verify that the name "and" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_as + +- Endpoint: `get /special-words/operations/as` + +Verify that the name "as" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_assert + +- Endpoint: `get /special-words/operations/assert` + +Verify that the name "assert" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_async + +- Endpoint: `get /special-words/operations/async` + +Verify that the name "async" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_await + +- Endpoint: `get /special-words/operations/await` + +Verify that the name "await" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_break + +- Endpoint: `get /special-words/operations/break` + +Verify that the name "break" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_class + +- Endpoint: `get /special-words/operations/class` + +Verify that the name "class" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_constructor + +- Endpoint: `get /special-words/operations/constructor` + +Verify that the name "constructor" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_continue + +- Endpoint: `get /special-words/operations/continue` + +Verify that the name "continue" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_def + +- Endpoint: `get /special-words/operations/def` + +Verify that the name "def" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_del + +- Endpoint: `get /special-words/operations/del` + +Verify that the name "del" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_elif + +- Endpoint: `get /special-words/operations/elif` + +Verify that the name "elif" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_else + +- Endpoint: `get /special-words/operations/else` + +Verify that the name "else" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_except + +- Endpoint: `get /special-words/operations/except` + +Verify that the name "except" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_exec + +- Endpoint: `get /special-words/operations/exec` + +Verify that the name "exec" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_finally + +- Endpoint: `get /special-words/operations/finally` + +Verify that the name "finally" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_for + +- Endpoint: `get /special-words/operations/for` + +Verify that the name "for" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_from + +- Endpoint: `get /special-words/operations/from` + +Verify that the name "from" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_global + +- Endpoint: `get /special-words/operations/global` + +Verify that the name "global" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_if + +- Endpoint: `get /special-words/operations/if` + +Verify that the name "if" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_import + +- Endpoint: `get /special-words/operations/import` + +Verify that the name "import" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_in + +- Endpoint: `get /special-words/operations/in` + +Verify that the name "in" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_is + +- Endpoint: `get /special-words/operations/is` + +Verify that the name "is" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_lambda + +- Endpoint: `get /special-words/operations/lambda` + +Verify that the name "lambda" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_not + +- Endpoint: `get /special-words/operations/not` + +Verify that the name "not" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_or + +- Endpoint: `get /special-words/operations/or` + +Verify that the name "or" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_pass + +- Endpoint: `get /special-words/operations/pass` + +Verify that the name "pass" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_raise + +- Endpoint: `get /special-words/operations/raise` + +Verify that the name "raise" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_return + +- Endpoint: `get /special-words/operations/return` + +Verify that the name "return" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_try + +- Endpoint: `get /special-words/operations/try` + +Verify that the name "try" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_while + +- Endpoint: `get /special-words/operations/while` + +Verify that the name "while" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_with + +- Endpoint: `get /special-words/operations/with` + +Verify that the name "with" works as an operation name. Call this operation to pass. + +### SpecialWords_Operations_yield + +- Endpoint: `get /special-words/operations/yield` + +Verify that the name "yield" works as an operation name. Call this operation to pass. + +### SpecialWords_Parameters_and + +- Endpoint: `get /special-words/parameters/and` + +Verify that the name "and" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_as + +- Endpoint: `get /special-words/parameters/as` + +Verify that the name "as" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_assert + +- Endpoint: `get /special-words/parameters/assert` + +Verify that the name "assert" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_async + +- Endpoint: `get /special-words/parameters/async` + +Verify that the name "async" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_await + +- Endpoint: `get /special-words/parameters/await` + +Verify that the name "await" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_break + +- Endpoint: `get /special-words/parameters/break` + +Verify that the name "break" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_cancellationToken + +- Endpoint: `get /special-words/parameters/cancellationToken` + +Verify that the name "cancellationToken" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_class + +- Endpoint: `get /special-words/parameters/class` + +Verify that the name "class" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_constructor + +- Endpoint: `get /special-words/parameters/constructor` + +Verify that the name "constructor" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_continue + +- Endpoint: `get /special-words/parameters/continue` + +Verify that the name "continue" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_def + +- Endpoint: `get /special-words/parameters/def` + +Verify that the name "def" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_del + +- Endpoint: `get /special-words/parameters/del` + +Verify that the name "del" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_elif + +- Endpoint: `get /special-words/parameters/elif` + +Verify that the name "elif" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_else + +- Endpoint: `get /special-words/parameters/else` + +Verify that the name "else" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_except + +- Endpoint: `get /special-words/parameters/except` + +Verify that the name "except" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_exec + +- Endpoint: `get /special-words/parameters/exec` + +Verify that the name "exec" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_finally + +- Endpoint: `get /special-words/parameters/finally` + +Verify that the name "finally" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_for + +- Endpoint: `get /special-words/parameters/for` + +Verify that the name "for" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_from + +- Endpoint: `get /special-words/parameters/from` + +Verify that the name "from" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_global + +- Endpoint: `get /special-words/parameters/global` + +Verify that the name "global" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_if + +- Endpoint: `get /special-words/parameters/if` + +Verify that the name "if" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_import + +- Endpoint: `get /special-words/parameters/import` + +Verify that the name "import" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_in + +- Endpoint: `get /special-words/parameters/in` + +Verify that the name "in" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_is + +- Endpoint: `get /special-words/parameters/is` + +Verify that the name "is" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_lambda + +- Endpoint: `get /special-words/parameters/lambda` + +Verify that the name "lambda" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_not + +- Endpoint: `get /special-words/parameters/not` + +Verify that the name "not" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_or + +- Endpoint: `get /special-words/parameters/or` + +Verify that the name "or" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_pass + +- Endpoint: `get /special-words/parameters/pass` + +Verify that the name "pass" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_raise + +- Endpoint: `get /special-words/parameters/raise` + +Verify that the name "raise" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_return + +- Endpoint: `get /special-words/parameters/return` + +Verify that the name "return" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_try + +- Endpoint: `get /special-words/parameters/try` + +Verify that the name "try" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_while + +- Endpoint: `get /special-words/parameters/while` + +Verify that the name "while" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_with + +- Endpoint: `get /special-words/parameters/with` + +Verify that the name "with" works. Send this parameter to pass with value `ok`. + +### SpecialWords_Parameters_yield + +- Endpoint: `get /special-words/parameters/yield` + +Verify that the name "yield" works. Send this parameter to pass with value `ok`. + +### Type_Array_BooleanValue_get + +- Endpoint: `get /type/array/boolean` + +Expected Array response body: + +```json +[true, false] +``` + +### Type_Array_BooleanValue_put + +- Endpoint: `put /type/array/boolean` + +Expected Array input body: + +```json +[true, false] +``` + +### Type_Array_DatetimeValue_get + +- Endpoint: `get /type/array/datetime` + +Expected Array response body: + +```json +["2022-08-26T18:38:00Z"] +``` + +### Type_Array_DatetimeValue_put + +- Endpoint: `put /type/array/datetime` + +Expected Array input body: + +```json +["2022-08-26T18:38:00Z"] +``` + +### Type_Array_DurationValue_get + +- Endpoint: `get /type/array/duration` + +Expected Array response body: + +```json +["P123DT22H14M12.011S"] +``` + +### Type_Array_DurationValue_put + +- Endpoint: `put /type/array/duration` + +Expected Array input body: + +```json +["P123DT22H14M12.011S"] +``` + +### Type_Array_Float32Value_get + +- Endpoint: `get /type/array/float32` + +Expected Array response body: + +```json +[43.125] +``` + +### Type_Array_Float32Value_put + +- Endpoint: `put /type/array/float32` + +Expected Array input body: + +```json +[43.125] +``` + +### Type_Array_Int32Value_get + +- Endpoint: `get /type/array/int32` + +Expected Array response body: + +```json +[1, 2] +``` + +### Type_Array_Int32Value_put + +- Endpoint: `put /type/array/int32` + +Expected Array input body: + +```json +[1, 2] +``` + +### Type_Array_Int64Value_get + +- Endpoint: `get /type/array/int64` + +Expected Array response body: + +```json +[0x7fffffffffffffff, -0x7fffffffffffffff] +``` + +### Type_Array_Int64Value_put + +- Endpoint: `put /type/array/int64` + +Expected Array input body: + +```json +[0x7fffffffffffffff, -0x7fffffffffffffff] +``` + +### Type_Array_ModelValue_get + +- Endpoint: `get /type/array/model` + +Expected Array response body: + +```json +[{ "property": "hello" }, { "property": "world" }] +``` + +### Type_Array_ModelValue_put + +- Endpoint: `put /type/array/model` + +Expected Array input body: + +```json +[{ "property": "hello" }, { "property": "world" }] +``` + +### Type_Array_NullableBooleanValue_get + +- Endpoint: `get /type/array/nullable-boolean` + +Expected Array response body: + +```json +[true, null, false] +``` + +### Type_Array_NullableBooleanValue_put + +- Endpoint: `put /type/array/nullable-boolean` + +Expected Array input body: + +```json +[true, null, false] +``` + +### Type_Array_NullableFloatValue_get + +- Endpoint: `get /type/array/nullable-float` + +Expected Array response body: + +```json +[1.25, null, 3.0] +``` + +### Type_Array_NullableFloatValue_put + +- Endpoint: `put /type/array/nullable-float` + +Expected Array input body: + +```json +[1.25, null, 3.0] +``` + +### Type_Array_NullableInt32Value_get + +- Endpoint: `get /type/array/nullable-int32` + +Expected Array response body: + +```json +[1, null, 3] +``` + +### Type_Array_NullableInt32Value_put + +- Endpoint: `put /type/array/nullable-int32` + +Expected Array input body: + +```json +[1, null, 3] +``` + +### Type_Array_NullableModelValue_get + +- Endpoint: `get /type/array/nullable-model` + +Expected Array response body: + +```json +[{ "property": "hello" }, null, { "property": "world" }] +``` + +### Type_Array_NullableModelValue_put + +- Endpoint: `put /type/array/nullable-model` + +Expected Array input body: + +```json +[{ "property": "hello" }, null, { "property": "world" }] +``` + +### Type_Array_NullableStringValue_get + +- Endpoint: `get /type/array/nullable-string` + +Expected Array response body: + +```json +["hello", null, "world"] +``` + +### Type_Array_NullableStringValue_put + +- Endpoint: `put /type/array/nullable-string` + +Expected Array input body: + +```json +["hello", null, "world"] +``` + +### Type_Array_StringValue_get + +- Endpoint: `get /type/array/string` + +Expected Array response body: + +```json +["hello", ""] +``` + +### Type_Array_StringValue_put + +- Endpoint: `put /type/array/string` + +Expected Array input body: + +```json +["hello", ""] +``` + +### Type_Array_UnknownValue_get + +- Endpoint: `get /type/array/unknown` + +Expected Array response body: + +```json +[1, 'hello', 'k3': null] +``` + +### Type_Array_UnknownValue_put + +- Endpoint: `put /type/array/unknown` + +Expected Array input body: + +```json +[1, 'hello', 'k3': null] +``` + +### Type_Dictionary_BooleanValue_get + +- Endpoint: `get /type/dictionary/boolean` + +Expected dictionary response body: + +```json +{ "k1": true, "k2": false } +``` + +### Type_Dictionary_BooleanValue_put + +- Endpoint: `put /type/dictionary/boolean` + +Expected dictionary input body: + +```json +{ "k1": true, "k2": false } +``` + +### Type_Dictionary_DatetimeValue_get + +- Endpoint: `get /type/dictionary/datetime` + +Expected dictionary response body: + +```json +{ "k1": "2022-08-26T18:38:00Z" } +``` + +### Type_Dictionary_DatetimeValue_put + +- Endpoint: `put /type/dictionary/datetime` + +Expected dictionary input body: + +```json +{ "k1": "2022-08-26T18:38:00Z" } +``` + +### Type_Dictionary_DurationValue_get + +- Endpoint: `get /type/dictionary/duration` + +Expected dictionary response body: + +```json +{ "k1": "P123DT22H14M12.011S" } +``` + +### Type_Dictionary_DurationValue_put + +- Endpoint: `put /type/dictionary/duration` + +Expected dictionary input body: + +```json +{ "k1": "P123DT22H14M12.011S" } +``` + +### Type_Dictionary_Float32Value_get + +- Endpoint: `get /type/dictionary/float32` + +Expected dictionary response body: + +```json +{ "k1": 43.125 } +``` + +### Type_Dictionary_Float32Value_put + +- Endpoint: `put /type/dictionary/float32` + +Expected dictionary input body: + +```json +{ "k1": 43.125 } +``` + +### Type_Dictionary_Int32Value_get + +- Endpoint: `get /type/dictionary/int32` + +Expected dictionary response body: + +```json +{ "k1": 1, "k2": 2 } +``` + +### Type_Dictionary_Int32Value_put + +- Endpoint: `put /type/dictionary/int32` + +Expected dictionary input body: + +```json +{ "k1": 1, "k2": 2 } +``` + +### Type_Dictionary_Int64Value_get + +- Endpoint: `get /type/dictionary/int64` + +Expected dictionary response body: + +```json +{ "k1": 0x7fffffffffffffff, "k2": -0x7fffffffffffffff } +``` + +### Type_Dictionary_Int64Value_put + +- Endpoint: `put /type/dictionary/int64` + +Expected dictionary input body: + +```json +{ "k1": 0x7fffffffffffffff, "k2": -0x7fffffffffffffff } +``` + +### Type_Dictionary_ModelValue_get + +- Endpoint: `get /type/dictionary/model` + +Expected dictionary response body: + +```json +{ "k1": { "property": "hello" }, "k2": { "property": "world" } } +``` + +### Type_Dictionary_ModelValue_put + +- Endpoint: `put /type/dictionary/model` + +Expected dictionary input body: + +```json +{ "k1": { "property": "hello" }, "k2": { "property": "world" } } +``` + +### Type_Dictionary_NullableFloatValue_get + +- Endpoint: `get /type/dictionary/nullable-float` + +Expected dictionary response body: + +```json +{ "k1": 1.25, "k2": 0.5, "k3": null } +``` + +### Type_Dictionary_NullableFloatValue_put + +- Endpoint: `put /type/dictionary/nullable-float` + +Expected dictionary input body: + +```json +{ "k1": 1.25, "k2": 0.5, "k3": null } +``` + +### Type_Dictionary_RecursiveModelValue_get + +- Endpoint: `get /type/dictionary/model/recursive` + +Expected dictionary response body: + +```json +{ + "k1": { "property": "hello", "children": {} }, + "k2": { + "property": "world", + "children": { "k2.1": { "property": "inner world" } } + } +} +``` + +### Type_Dictionary_RecursiveModelValue_put + +- Endpoint: `put /type/dictionary/model/recursive` + +Expected dictionary input body: + +```json +{ + "k1": { "property": "hello", "children": {} }, + "k2": { + "property": "world", + "children": { "k2.1": { "property": "inner world" } } + } +} +``` + +### Type_Dictionary_StringValue_get + +- Endpoint: `get /type/dictionary/string` + +Expected dictionary response body: + +```json +{ "k1": "hello", "k2": "" } +``` + +### Type_Dictionary_StringValue_put + +- Endpoint: `put /type/dictionary/string` + +Expected dictionary input body: + +```json +{ "k1": "hello", "k2": "" } +``` + +### Type_Dictionary_UnknownValue_get + +- Endpoint: `get /type/dictionary/unknown` + +Expected dictionary response body: + +```json +{ "k1": 1, "k2": "hello", "k3": null } +``` + +### Type_Dictionary_UnknownValue_put + +- Endpoint: `put /type/dictionary/unknown` + +Expected dictionary input body: + +```json +{ "k1": 1, "k2": "hello", "k3": null } +``` + +### Type_Enum_Extensible_String_getKnownValue + +- Endpoint: `get /type/enum/extensible/string/known-value` + +Expect to handle a known value. Mock api will return 'Monday' + +### Type_Enum_Extensible_String_getUnknownValue + +- Endpoint: `get /type/enum/extensible/string/unknown-value` + +Expect to handle an unknown value. Mock api will return 'Weekend' + +### Type_Enum_Extensible_String_putKnownValue + +- Endpoint: `put /type/enum/extensible/string/known-value` + +Expect to send a known value. Mock api expect to receive 'Monday' + +### Type_Enum_Extensible_String_putUnknownValue + +- Endpoint: `put /type/enum/extensible/string/unknown-value` + +Expect to handle an unknown value. Mock api expect to receive 'Weekend' + +### Type_Enum_Fixed_String_getKnownValue + +- Endpoint: `get /type/enum/fixed/string/known-value` + +Expect to handle a known value. Mock api will return 'Monday' + +### Type_Enum_Fixed_String_putKnownValue + +- Endpoint: `put /type/enum/fixed/string/known-value` + +Expect to send a known value. Mock api expect to receive 'Monday' + +### Type_Enum_Fixed_String_putUnknownValue + +- Endpoint: `put /type/enum/fixed/string/unknown-value` + +Expect to handle an unknown value. Mock api expect to receive 'Weekend' + +### Type_Model_Empty_getEmpty + +- Endpoint: `get /type/model/empty/alone` + +Send a GET request which returns the following body {} + +### Type_Model_Empty_postRoundTripEmpty + +- Endpoint: `post /type/model/empty/round-trip` + +Send a POST request with the following body {} which returns the same. + +### Type_Model_Empty_putEmpty + +- Endpoint: `put /type/model/empty/alone` + +Send a PUT request with the following body {} + +### Type_Model_Inheritance_EnumDiscriminator_getExtensibleModel + +- Endpoint: `get /type/model/inheritance/enum-discriminator/extensible-enum` + +Receive model with extensible enum discriminator type. +Expected response body: + +```json +{ "kind": "golden", "weight": 10 } +``` + +### Type_Model_Inheritance_EnumDiscriminator_getExtensibleModelMissingDiscriminator + +- Endpoint: `get /type/model/inheritance/enum-discriminator/extensible-enum/missingdiscriminator` + +Get a model omitting the discriminator. +Expected response body: + +```json +{ "weight": 10 } +``` + +### Type_Model_Inheritance_EnumDiscriminator_getExtensibleModelWrongDiscriminator + +- Endpoint: `get /type/model/inheritance/enum-discriminator/extensible-enum/wrongdiscriminator` + +Get a model containing discriminator value never defined. +Expected response body: + +```json +{ "weight": 8, "kind": "wrongKind" } +``` + +### Type_Model_Inheritance_EnumDiscriminator_getFixedModel + +- Endpoint: `get /type/model/inheritance/enum-discriminator/fixed-enum` + +Receive model with fixed enum discriminator type. +Expected response body: + +```json +{ "kind": "cobra", "length": 10 } +``` + +### Type_Model_Inheritance_EnumDiscriminator_getFixedModelMissingDiscriminator + +- Endpoint: `get /type/model/inheritance/enum-discriminator/fixed-enum/missingdiscriminator` + +Get a model omitting the discriminator. +Expected response body: + +```json +{ "length": 10 } +``` + +### Type_Model_Inheritance_EnumDiscriminator_getFixedModelWrongDiscriminator + +- Endpoint: `get /type/model/inheritance/enum-discriminator/fixed-enum/wrongdiscriminator` + +Get a model containing discriminator value never defined. +Expected response body: + +```json +{ "length": 8, "kind": "wrongKind" } +``` + +### Type_Model_Inheritance_EnumDiscriminator_putExtensibleModel + +- Endpoint: `put /type/model/inheritance/enum-discriminator/extensible-enum` + +Send model with extensible enum discriminator type. +Expected request body: + +```json +{ "kind": "golden", "weight": 10 } +``` + +### Type_Model_Inheritance_EnumDiscriminator_putFixedModel + +- Endpoint: `put /type/model/inheritance/enum-discriminator/fixed-enum` + +Send model with fixed enum discriminator type. +Expected request body: + +```json +{ "kind": "cobra", "length": 10 } +``` + +### Type_Model_Inheritance_NestedDiscriminator_getMissingDiscriminator + +- Endpoint: `get /type/model/inheritance/nested-discriminator/missingdiscriminator` + +Get a model omitting the discriminator. +Expected response body: + +```json +{ "age": 1 } +``` + +### Type_Model_Inheritance_NestedDiscriminator_getModel + +- Endpoint: `get /type/model/inheritance/nested-discriminator/model` + +Generate and receive polymorphic model in multiple levels inheritance with 2 discriminators. +Expected response body: + +```json +{ "age": 1, "kind": "shark", "sharktype": "goblin" } +``` + +### Type_Model_Inheritance_NestedDiscriminator_getRecursiveModel + +- Endpoint: `get /type/model/inheritance/nested-discriminator/recursivemodel` + +Generate and receive polymorphic models has collection and dictionary properties referring to other polymorphic models. +Expected response body: + +```json +{ + "age": 1, + "kind": "salmon", + "partner": { + "age": 2, + "kind": "shark", + "sharktype": "saw" + }, + "friends": [ + { + "age": 2, + "kind": "salmon", + "partner": { + "age": 3, + "kind": "salmon" + }, + "hate": { + "key1": { + "age": 4, + "kind": "salmon" + }, + "key2": { + "age": 2, + "kind": "shark", + "sharktype": "goblin" + } + } + }, + { + "age": 3, + "kind": "shark", + "sharktype": "goblin" + } + ], + "hate": { + "key3": { + "age": 3, + "kind": "shark", + "sharktype": "saw" + }, + "key4": { + "age": 2, + "kind": "salmon", + "friends": [ + { + "age": 1, + "kind": "salmon" + }, + { + "age": 4, + "kind": "shark", + "sharktype": "goblin" + } + ] + } + } +} +``` + +### Type_Model_Inheritance_NestedDiscriminator_getWrongDiscriminator + +- Endpoint: `get /type/model/inheritance/nested-discriminator/wrongdiscriminator` + +Get a model containing discriminator value never defined. +Expected response body: + +```json +{ "age": 1, "kind": "wrongKind" } +``` + +### Type_Model_Inheritance_NestedDiscriminator_putModel + +- Endpoint: `put /type/model/inheritance/nested-discriminator/model` + +Generate and send polymorphic model in multiple levels inheritance with 2 discriminators. +Expected input body: + +```json +{ "age": 1, "kind": "shark", "sharktype": "goblin" } +``` + +### Type_Model_Inheritance_NestedDiscriminator_putRecursiveModel + +- Endpoint: `put /type/model/inheritance/nested-discriminator/recursivemodel` + +Generate and send polymorphic models has collection and dictionary properties referring to other polymorphic models. +Expected input body: + +```json +{ + "age": 1, + "kind": "salmon", + "partner": { + "age": 2, + "kind": "shark", + "sharktype": "saw" + }, + "friends": [ + { + "age": 2, + "kind": "salmon", + "partner": { + "age": 3, + "kind": "salmon" + }, + "hate": { + "key1": { + "age": 4, + "kind": "salmon" + }, + "key2": { + "age": 2, + "kind": "shark", + "sharktype": "goblin" + } + } + }, + { + "age": 3, + "kind": "shark", + "sharktype": "goblin" + } + ], + "hate": { + "key3": { + "age": 3, + "kind": "shark", + "sharktype": "saw" + }, + "key4": { + "age": 2, + "kind": "salmon", + "friends": [ + { + "age": 1, + "kind": "salmon" + }, + { + "age": 4, + "kind": "shark", + "sharktype": "goblin" + } + ] + } + } +} +``` + +### Type_Model_Inheritance_NotDiscriminated_getValid + +- Endpoint: `get /type/model/inheritance/not-discriminated/valid` + +Generate and receive model. +Expected response body: + +```json +{ "name": "abc", "age": 32, "smart": true } +``` + +### Type_Model_Inheritance_NotDiscriminated_postValid + +- Endpoint: `post /type/model/inheritance/not-discriminated/valid` + +Generate and send model. +Expected input body: + +```json +{ "name": "abc", "age": 32, "smart": true } +``` + +### Type_Model_Inheritance_NotDiscriminated_putValid + +- Endpoint: `put /type/model/inheritance/not-discriminated/valid` + +Generate, send, and receive round-trip bottom model. + +### Type_Model_Inheritance_Recursive_get + +- Endpoint: `get /type/model/inheritance/recursive` + +Send a GET request which returns the following body: +Expected response body: + +```json +{ + "level": 0, + "extension": [ + { + "level": 1, + "extension": [ + { + "level": 2 + } + ] + }, + { + "level": 1 + } + ] +} +``` + +### Type_Model_Inheritance_Recursive_put + +- Endpoint: `put /type/model/inheritance/recursive` + +Send a PUT request with the following body: +Expected input body: + +```json +{ + "level": 0, + "extension": [ + { + "level": 1, + "extension": [ + { + "level": 2 + } + ] + }, + { + "level": 1 + } + ] +} +``` + +### Type_Model_Inheritance_SingleDiscriminator_getLegacyModel + +- Endpoint: `get /type/model/inheritance/single-discriminator/legacy-model` + +Generate and receive polymorphic model defined in legacy way. +Expected response body: + +```json +{ "size": 20, "kind": "t-rex" } +``` + +### Type_Model_Inheritance_SingleDiscriminator_getMissingDiscriminator + +- Endpoint: `get /type/model/inheritance/single-discriminator/missingdiscriminator` + +Get a model omitting the discriminator. +Expected response body: + +```json +{ "wingspan": 1 } +``` + +### Type_Model_Inheritance_SingleDiscriminator_getModel + +- Endpoint: `get /type/model/inheritance/single-discriminator/model` + +Generate and receive polymorphic model in single level inheritance with 1 discriminator. +Expected response body: + +```json +{ "wingspan": 1, "kind": "sparrow" } +``` + +### Type_Model_Inheritance_SingleDiscriminator_getRecursiveModel + +- Endpoint: `get /type/model/inheritance/single-discriminator/recursivemodel` + +Generate and receive polymorphic models has collection and dictionary properties referring to other polymorphic models. +Expected response body: + +```json +{ + "wingspan": 5, + "kind": "eagle", + "partner": { + "wingspan": 2, + "kind": "goose" + }, + "friends": [ + { + "wingspan": 2, + "kind": "seagull" + } + ], + "hate": { + "key3": { + "wingspan": 1, + "kind": "sparrow" + } + } +} +``` + +### Type_Model_Inheritance_SingleDiscriminator_getWrongDiscriminator + +- Endpoint: `get /type/model/inheritance/single-discriminator/wrongdiscriminator` + +Get a model containing discriminator value never defined. +Expected response body: + +```json +{ "wingspan": 1, "kind": "wrongKind" } +``` + +### Type_Model_Inheritance_SingleDiscriminator_putModel + +- Endpoint: `put /type/model/inheritance/single-discriminator/model` + +Generate and send polymorphic model in single level inheritance with 1 discriminator. +Expected input body: + +```json +{ "wingspan": 1, "kind": "sparrow" } +``` + +### Type_Model_Inheritance_SingleDiscriminator_putRecursiveModel + +- Endpoint: `put /type/model/inheritance/single-discriminator/recursivemodel` + +Generate and send polymorphic models has collection and dictionary properties referring to other polymorphic models. +Expected input body: + +```json +{ + "wingspan": 5, + "kind": "eagle", + "partner": { + "wingspan": 2, + "kind": "goose" + }, + "friends": [ + { + "wingspan": 2, + "kind": "seagull" + } + ], + "hate": { + "key3": { + "wingspan": 1, + "kind": "sparrow" + } + } +} +``` + +### Type_Model_Templated_float32Type + +- Endpoint: `put /type/model/templated/float32ValuesType` + +Expected input body: + +```json +{ + "kind": "Float32Values", + "values": [0.5], + "value": 0.5 +} +``` + +Expected response body: + +```json +{ + "kind": "Float32Values", + "values": [0.5], + "value": 0.5 +} +``` + +### Type_Model_Templated_int32Type + +- Endpoint: `put /type/model/templated/int32ValuesType` + +Expected input body: + +```json +{ + "kind": "Int32Values", + "values": [1234], + "value": 1234 +} +``` + +Expected response body: + +```json +{ + "kind": "Int32Values", + "values": [1234], + "value": 1234 +} +``` + +### Type_Model_Templated_numericType + +- Endpoint: `put /type/model/templated/numericType` + +Expected input body: + +```json +{ + "kind": "Int32Values", + "values": [1234], + "value": 1234 +} +``` + +Expected response body: + +```json +{ + "values": [1234], + "value": 1234 +} +``` + +### Type_Model_Usage_input + +- Endpoint: `get /type/model/usage/input` + +Send a POST request with the following body {requiredProp: "example-value"} + +### Type_Model_Usage_inputAndOutput + +- Endpoint: `get /type/model/usage/input-output` + +Send a POST request which return the following body {requiredProp: "example-value"} and return the same. + +### Type_Model_Usage_output + +- Endpoint: `get /type/model/usage/output` + +Send a GET request which return the following body {requiredProp: "example-value"} + +### Type_Model_Visibility_deleteModel + +- Endpoint: `delete /type/model/visibility` + +Generate abd send put model with write/create properties. +Expected input body: + +```json +{ + "deleteProp": true +} +``` + +### Type_Model_Visibility_getModel + +- Endpoint: `get /type/model/visibility` + +Generate and receive output model with readonly properties. +Expected input body: + +```json +{ + "queryProp": 123 +} +``` + +Expected response body: + +```json +{ + "readProp": "abc" +} +``` + +### Type_Model_Visibility_headModel + +- Endpoint: `head /type/model/visibility` + +Generate abd send put model with write/create properties. +Expected input body: + +```json +{ + "queryProp": 123 +} +``` + +### Type_Model_Visibility_patchModel + +- Endpoint: `patch /type/model/visibility` + +Generate abd send put model with write/update properties. +Expected input body: + +```json +{ + "updateProp": [1, 2] +} +``` + +### Type_Model_Visibility_postModel + +- Endpoint: `post /type/model/visibility` + +Generate abd send put model with write/create properties. +Expected input body: + +```json +{ + "createProp": ["foo", "bar"] +} +``` + +### Type_Model_Visibility_putModel + +- Endpoint: `put /type/model/visibility` + +Generate abd send put model with write/create/update properties. +Expected input body: + +```json +{ + "createProp": ["foo", "bar"], + "updateProp": [1, 2] +} +``` + +### Type_Model_Visibility_putReadOnlyModel + +- Endpoint: `put /type/model/visibility/readonlyroundtrip` + +Generate and receive output model with readonly properties. + +Expected input body: + +```json +{} +``` + +Expected response body: + +```json +{ + "optionalNullableIntList": [1, 2, 3], + "optionalStringRecord": { "k1": "value1", "k2": "value2" } +} +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadFloat_get + +- Endpoint: `get /type/property/additionalProperties/extendsDifferentSpreadFloat` + +Expected response body: + +```json +{ "name": "abc", "prop": 43.125, "derivedProp": 43.125 } +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadFloat_put + +- Endpoint: `put /type/property/additionalProperties/extendsDifferentSpreadFloat` + +Expected input body: + +```json +{ "name": "abc", "prop": 43.125, "derivedProp": 43.125 } +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadModel_get + +- Endpoint: `get /type/property/additionalProperties/extendsDifferentSpreadModel` + +Expected response body: + +```json +{ + "knownProp": "abc", + "prop": { "state": "ok" }, + "derivedProp": { "state": "ok" } +} +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadModel_put + +- Endpoint: `put /type/property/additionalProperties/extendsDifferentSpreadModel` + +Expected input body: + +```json +{ + "knownProp": "abc", + "prop": { "state": "ok" }, + "derivedProp": { "state": "ok" } +} +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadModelArray_get + +- Endpoint: `get /type/property/additionalProperties/extendsDifferentSpreadModelArray` + +Expected response body: + +```json +{ + "knownProp": "abc", + "prop": [{ "state": "ok" }, { "state": "ok" }], + "derivedProp": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadModelArray_put + +- Endpoint: `put /type/property/additionalProperties/extendsDifferentSpreadModelArray` + +Expected input body: + +```json +{ + "knownProp": "abc", + "prop": [{ "state": "ok" }, { "state": "ok" }], + "derivedProp": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadString_get + +- Endpoint: `get /type/property/additionalProperties/extendsDifferentSpreadString` + +Expected response body: + +```json +{ "id": 43.125, "prop": "abc", "derivedProp": "abc" } +``` + +### Type_Property_AdditionalProperties_ExtendsDifferentSpreadString_put + +- Endpoint: `put /type/property/additionalProperties/extendsDifferentSpreadString` + +Expected input body: + +```json +{ "id": 43.125, "prop": "abc", "derivedProp": "abc" } +``` + +### Type_Property_AdditionalProperties_ExtendsFloat_get + +- Endpoint: `get /type/property/additionalProperties/extendsRecordFloat` + +Expected response body: + +```json +{ "id": 43.125, "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_ExtendsFloat_put + +- Endpoint: `put /type/property/additionalProperties/extendsRecordFloat` + +Expected input body: + +```json +{ "id": 43.125, "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_ExtendsModel_get + +- Endpoint: `get /type/property/additionalProperties/extendsRecordModel` + +Expected response body: + +```json +{ "knownProp": { "state": "ok" }, "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_ExtendsModel_put + +- Endpoint: `put /type/property/additionalProperties/extendsRecordModel` + +Expected input body: + +```json +{ "knownProp": { "state": "ok" }, "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_ExtendsModelArray_get + +- Endpoint: `get /type/property/additionalProperties/extendsRecordModelArray` + +Expected response body: + +```json +{ + "knownProp": [{ "state": "ok" }, { "state": "ok" }], + "prop": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_ExtendsModelArray_put + +- Endpoint: `put /type/property/additionalProperties/extendsRecordModelArray` + +Expected input body: + +```json +{ + "knownProp": [{ "state": "ok" }, { "state": "ok" }], + "prop": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_ExtendsString_get + +- Endpoint: `get /type/property/additionalProperties/extendsRecordString` + +Expected response body: + +```json +{ "name": "ExtendsStringAdditionalProperties", "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_ExtendsString_put + +- Endpoint: `put /type/property/additionalProperties/extendsRecordString` + +Expected input body: + +```json +{ "name": "ExtendsStringAdditionalProperties", "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_ExtendsUnknown_get + +- Endpoint: `get /type/property/additionalProperties/extendsRecordUnknown` + +Expected response body: + +```json +{ + "name": "ExtendsUnknownAdditionalProperties", + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_ExtendsUnknown_put + +- Endpoint: `put /type/property/additionalProperties/extendsRecordUnknown` + +Expected input body: + +```json +{ + "name": "ExtendsUnknownAdditionalProperties", + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_ExtendsUnknownDerived_get + +- Endpoint: `get /type/property/additionalProperties/extendsRecordUnknownDerived` + +Expected response body: + +```json +{ + "name": "ExtendsUnknownAdditionalProperties", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_ExtendsUnknownDerived_put + +- Endpoint: `put /type/property/additionalProperties/extendsRecordUnknownDerived` + +Expected input body: + +```json +{ + "name": "ExtendsUnknownAdditionalProperties", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_ExtendsUnknownDiscriminated_get + +- Endpoint: `get /type/property/additionalProperties/extendsUnknownDiscriminated` + +Expected response body: + +```json +{ + "kind": "derived", + "name": "Derived", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_ExtendsUnknownDiscriminated_put + +- Endpoint: `put /type/property/additionalProperties/extendsUnknownDiscriminated` + +Expected input body: + +```json +{ + "kind": "derived", + "name": "Derived", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_IsFloat_get + +- Endpoint: `get /type/property/additionalProperties/isRecordFloat` + +Expected response body: + +```json +{ "id": 43.125, "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_IsFloat_put + +- Endpoint: `put /type/property/additionalProperties/isRecordFloat` + +Expected input body: + +```json +{ "id": 43.125, "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_IsModel_get + +- Endpoint: `get /type/property/additionalProperties/isRecordModel` + +Expected response body: + +```json +{ "knownProp": { "state": "ok" }, "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_IsModel_put + +- Endpoint: `put /type/property/additionalProperties/isRecordModel` + +Expected input body: + +```json +{ "knownProp": { "state": "ok" }, "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_IsModelArray_get + +- Endpoint: `get /type/property/additionalProperties/isRecordModelArray` + +Expected response body: + +```json +{ + "knownProp": [{ "state": "ok" }, { "state": "ok" }], + "prop": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_IsModelArray_put + +- Endpoint: `put /type/property/additionalProperties/isRecordModelArray` + +Expected input body: + +```json +{ + "knownProp": [{ "state": "ok" }, { "state": "ok" }], + "prop": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_IsString_get + +- Endpoint: `get /type/property/additionalProperties/isRecordstring` + +Expected response body: + +```json +{ "name": "IsStringAdditionalProperties", "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_IsString_put + +- Endpoint: `put /type/property/additionalProperties/isRecordstring` + +Expected input body: + +```json +{ "name": "IsStringAdditionalProperties", "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_IsUnknown_get + +- Endpoint: `get /type/property/additionalProperties/isRecordUnknown` + +Expected response body: + +```json +{ + "name": "IsUnknownAdditionalProperties", + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_IsUnknown_put + +- Endpoint: `put /type/property/additionalProperties/isRecordUnknown` + +Expected input body: + +```json +{ + "name": "IsUnknownAdditionalProperties", + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_IsUnknownDerived_get + +- Endpoint: `get /type/property/additionalProperties/isRecordUnknownDerived` + +Expected response body: + +```json +{ + "name": "IsUnknownAdditionalProperties", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_IsUnknownDerived_put + +- Endpoint: `put /type/property/additionalProperties/isRecordUnknownDerived` + +Expected input body: + +```json +{ + "name": "IsUnknownAdditionalProperties", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_IsUnknownDiscriminated_get + +- Endpoint: `get /type/property/additionalProperties/isUnknownDiscriminated` + +Expected response body: + +```json +{ + "kind": "derived", + "name": "Derived", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_IsUnknownDiscriminated_put + +- Endpoint: `put /type/property/additionalProperties/isUnknownDiscriminated` + +Expected input body: + +```json +{ + "kind": "derived", + "name": "Derived", + "index": 314, + "age": 2.71875, + "prop1": 32, + "prop2": true, + "prop3": "abc" +} +``` + +### Type_Property_AdditionalProperties_MultipleSpread_get + +- Endpoint: `get /type/property/additionalProperties/multipleSpreadRecord` + +Expected response body: + +```json +{ "flag": true, "prop1": "abc", "prop2": 43.125 } +``` + +### Type_Property_AdditionalProperties_MultipleSpread_put + +- Endpoint: `put /type/property/additionalProperties/multipleSpreadRecord` + +Expected input body: + +```json +{ "flag": true, "prop1": "abc", "prop2": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentFloat_get + +- Endpoint: `get /type/property/additionalProperties/spreadDifferentRecordFloat` + +Expected response body: + +```json +{ "name": "abc", "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentFloat_put + +- Endpoint: `put /type/property/additionalProperties/spreadDifferentRecordFloat` + +Expected input body: + +```json +{ "name": "abc", "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentModel_get + +- Endpoint: `get /type/property/additionalProperties/spreadDifferentRecordModel` + +Expected response body: + +```json +{ "knownProp": "abc", "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentModel_put + +- Endpoint: `put /type/property/additionalProperties/spreadDifferentRecordModel` + +Expected input body: + +```json +{ "knownProp": "abc", "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentModelArray_get + +- Endpoint: `get /type/property/additionalProperties/spreadDifferentRecordModelArray` + +Expected response body: + +```json +{ "knownProp": "abc", "prop": [{ "state": "ok" }, { "state": "ok" }] } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentModelArray_put + +- Endpoint: `put /type/property/additionalProperties/spreadDifferentRecordModelArray` + +Expected input body: + +```json +{ "knownProp": "abc", "prop": [{ "state": "ok" }, { "state": "ok" }] } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentString_get + +- Endpoint: `get /type/property/additionalProperties/spreadDifferentRecordString` + +Expected response body: + +```json +{ "id": 43.125, "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_SpreadDifferentString_put + +- Endpoint: `put /type/property/additionalProperties/spreadDifferentRecordString` + +Expected input body: + +```json +{ "id": 43.125, "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_SpreadFloat_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordFloat` + +Expected response body: + +```json +{ "id": 43.125, "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadFloat_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordFloat` + +Expected input body: + +```json +{ "id": 43.125, "prop": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadModel_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordModel` + +Expected response body: + +```json +{ "knownProp": { "state": "ok" }, "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_SpreadModel_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordModel` + +Expected input body: + +```json +{ "knownProp": { "state": "ok" }, "prop": { "state": "ok" } } +``` + +### Type_Property_AdditionalProperties_SpreadModelArray_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordModelArray` + +Expected response body: + +```json +{ + "knownProp": [{ "state": "ok" }, { "state": "ok" }], + "prop": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_SpreadModelArray_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordModelArray` + +Expected input body: + +```json +{ + "knownProp": [{ "state": "ok" }, { "state": "ok" }], + "prop": [{ "state": "ok" }, { "state": "ok" }] +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordDiscriminatedUnion` + +Expected response body: + +```json +{ + "name": "abc", + "prop1": { "kind": "kind0", "fooProp": "abc" }, + "prop2": { + "kind": "kind1", + "start": "2021-01-01T00:00:00Z", + "end": "2021-01-02T00:00:00Z" + } +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordDiscriminatedUnion` + +Expected input body: + +```json +{ + "name": "abc", + "prop1": { "kind": "kind0", "fooProp": "abc" }, + "prop2": { + "kind": "kind1", + "start": "2021-01-01T00:00:00Z", + "end": "2021-01-02T00:00:00Z" + } +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion` + +Expected response body: + +```json +{ + "name": "abc", + "prop1": { "kind": "kind0", "fooProp": "abc" }, + "prop2": { + "kind": "kind1", + "start": "2021-01-01T00:00:00Z", + "end": "2021-01-02T00:00:00Z" + } +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion` + +Expected input body: + +```json +{ + "name": "abc", + "prop1": { "kind": "kind0", "fooProp": "abc" }, + "prop2": { + "kind": "kind1", + "start": "2021-01-01T00:00:00Z", + "end": "2021-01-02T00:00:00Z" + } +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion2_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion2` + +Expected response body: + +```json +{ + "name": "abc", + "prop1": { "kind": "kind1", "start": "2021-01-01T00:00:00Z" }, + "prop2": { + "kind": "kind1", + "start": "2021-01-01T00:00:00Z", + "end": "2021-01-02T00:00:00Z" + } +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion2_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion2` + +Expected input body: + +```json +{ + "name": "abc", + "prop1": { "kind": "kind1", "start": "2021-01-01T00:00:00Z" }, + "prop2": { + "kind": "kind1", + "start": "2021-01-01T00:00:00Z", + "end": "2021-01-02T00:00:00Z" + } +} +``` + +### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion3_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion3` + +Expected response body: + +```json +{'name': 'abc', 'prop1': [{'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'}, {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'], 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}} +``` + +### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion3_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion3` + +Expected input body: + +```json +{'name': 'abc', 'prop1': [{'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'}, {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'], 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}} +``` + +### Type_Property_AdditionalProperties_SpreadRecordUnion_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordUnion` + +Expected response body: + +```json +{ "flag": true, "prop1": "abc", "prop2": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadRecordUnion_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordUnion` + +Expected input body: + +```json +{ "flag": true, "prop1": "abc", "prop2": 43.125 } +``` + +### Type_Property_AdditionalProperties_SpreadString_get + +- Endpoint: `get /type/property/additionalProperties/spreadRecordString` + +Expected response body: + +```json +{ "name": "SpreadSpringRecord", "prop": "abc" } +``` + +### Type_Property_AdditionalProperties_SpreadString_put + +- Endpoint: `put /type/property/additionalProperties/spreadRecordString` + +Expected input body: + +```json +{ "name": "SpreadSpringRecord", "prop": "abc" } +``` + +### Type_Property_Nullable_Bytes_getNonNull + +- Endpoint: `get /type/property/nullable/bytes/non-null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": aGVsbG8sIHdvcmxkIQ==} +``` + +### Type_Property_Nullable_Bytes_getNull + +- Endpoint: `get /type/property/nullable/bytes/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_Bytes_patchNonNull + +- Endpoint: `patch /type/property/nullable/bytes/non-null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": aGVsbG8sIHdvcmxkIQ==} +``` + +### Type_Property_Nullable_Bytes_patchNull + +- Endpoint: `patch /type/property/nullable/bytes/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_CollectionsByte_getNonNull + +- Endpoint: `get /type/property/nullable/collections/bytes/non-null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": [aGVsbG8sIHdvcmxkIQ==, aGVsbG8sIHdvcmxkIQ==]} +``` + +### Type_Property_Nullable_CollectionsByte_getNull + +- Endpoint: `get /type/property/nullable/collections/bytes/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_CollectionsByte_patchNonNull + +- Endpoint: `patch /type/property/nullable/collections/bytes/non-null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": [aGVsbG8sIHdvcmxkIQ==, aGVsbG8sIHdvcmxkIQ==]} +``` + +### Type_Property_Nullable_CollectionsByte_patchNull + +- Endpoint: `patch /type/property/nullable/collections/bytes/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_CollectionsModel_getNonNull + +- Endpoint: `get /type/property/nullable/collections/model/non-null` + +Expected response body: + +```json +{ + "requiredProperty": "foo", + "nullableProperty": [{ "property": "hello" }, { "property": "world" }] +} +``` + +### Type_Property_Nullable_CollectionsModel_getNull + +- Endpoint: `get /type/property/nullable/collections/model/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_CollectionsModel_patchNonNull + +- Endpoint: `patch /type/property/nullable/collections/model/non-null` + +Expected request body: + +```json +{ + "requiredProperty": "foo", + "nullableProperty": [{ "property": "hello" }, { "property": "world" }] +} +``` + +### Type_Property_Nullable_CollectionsModel_patchNull + +- Endpoint: `patch /type/property/nullable/collections/model/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_CollectionsString_getNonNull + +- Endpoint: `get /type/property/nullable/collections/string/non-null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": ["hello", "world"] } +``` + +### Type_Property_Nullable_CollectionsString_getNull + +- Endpoint: `get /type/property/nullable/collections/string/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_CollectionsString_patchNonNull + +- Endpoint: `patch /type/property/nullable/collections/string/non-null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": ["hello", "world"] } +``` + +### Type_Property_Nullable_CollectionsString_patchNull + +- Endpoint: `patch /type/property/nullable/collections/string/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_Datetime_getNonNull + +- Endpoint: `get /type/property/nullable/datetime/non-null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": 2022-08-26T18:38:00Z} +``` + +### Type_Property_Nullable_Datetime_getNull + +- Endpoint: `get /type/property/nullable/datetime/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_Datetime_patchNonNull + +- Endpoint: `patch /type/property/nullable/datetime/non-null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": 2022-08-26T18:38:00Z} +``` + +### Type_Property_Nullable_Datetime_patchNull + +- Endpoint: `patch /type/property/nullable/datetime/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_Duration_getNonNull + +- Endpoint: `get /type/property/nullable/duration/non-null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": P123DT22H14M12.011S} +``` + +### Type_Property_Nullable_Duration_getNull + +- Endpoint: `get /type/property/nullable/duration/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_Duration_patchNonNull + +- Endpoint: `patch /type/property/nullable/duration/non-null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": P123DT22H14M12.011S} +``` + +### Type_Property_Nullable_Duration_patchNull + +- Endpoint: `patch /type/property/nullable/duration/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_String_getNonNull + +- Endpoint: `get /type/property/nullable/string/non-null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": hello} +``` + +### Type_Property_Nullable_String_getNull + +- Endpoint: `get /type/property/nullable/string/null` + +Expected response body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Nullable_String_patchNonNull + +- Endpoint: `patch /type/property/nullable/string/non-null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": hello} +``` + +### Type_Property_Nullable_String_patchNull + +- Endpoint: `patch /type/property/nullable/string/null` + +Expected request body: + +```json +{ "requiredProperty": "foo", "nullableProperty": null } +``` + +### Type_Property_Optional_BooleanLiteral_getAll + +- Endpoint: `get /type/property/optional/boolean/literal/all` + +Expected response body: + +```json +{ "property": true } +``` + +### Type_Property_Optional_BooleanLiteral_getDefault + +- Endpoint: `get /type/property/optional/boolean/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_BooleanLiteral_putAll + +- Endpoint: `put /type/property/optional/boolean/literal/all` + +Expected request body: + +```json +{ "property": true } +``` + +### Type_Property_Optional_BooleanLiteral_putDefault + +- Endpoint: `put /type/property/optional/boolean/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_Bytes_getAll + +- Endpoint: `get /type/property/optional/bytes/all` + +Expected response body: + +```json +{ "property": "aGVsbG8sIHdvcmxkIQ==" } +``` + +### Type_Property_Optional_Bytes_getDefault + +- Endpoint: `get /type/property/optional/bytes/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_Bytes_putAll + +- Endpoint: `put /type/property/optional/bytes/all` + +Expected request body: + +```json +{ "property": "aGVsbG8sIHdvcmxkIQ==" } +``` + +### Type_Property_Optional_Bytes_putDefault + +- Endpoint: `put /type/property/optional/bytes/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_CollectionsByte_getAll + +- Endpoint: `get /type/property/optional/collections/bytes/all` + +Expected response body: + +```json +{ "property": ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="] } +``` + +### Type_Property_Optional_CollectionsByte_getDefault + +- Endpoint: `get /type/property/optional/collections/bytes/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_CollectionsByte_putAll + +- Endpoint: `put /type/property/optional/collections/bytes/all` + +Expected request body: + +```json +{ "property": ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="] } +``` + +### Type_Property_Optional_CollectionsByte_putDefault + +- Endpoint: `put /type/property/optional/collections/bytes/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_CollectionsModel_getAll + +- Endpoint: `get /type/property/optional/collections/model/all` + +Expected response body: + +```json +{ "property": [{ "property": "hello" }, { "property": "world" }] } +``` + +### Type_Property_Optional_CollectionsModel_getDefault + +- Endpoint: `get /type/property/optional/collections/model/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_CollectionsModel_putAll + +- Endpoint: `put /type/property/optional/collections/model/all` + +Expected request body: + +```json +{ "property": [{ "property": "hello" }, { "property": "world" }] } +``` + +### Type_Property_Optional_CollectionsModel_putDefault + +- Endpoint: `put /type/property/optional/collections/model/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_Datetime_getAll + +- Endpoint: `get /type/property/optional/datetime/all` + +Expected response body: + +```json +{ "property": "2022-08-26T18:38:00Z" } +``` + +### Type_Property_Optional_Datetime_getDefault + +- Endpoint: `get /type/property/optional/datetime/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_Datetime_putAll + +- Endpoint: `put /type/property/optional/datetime/all` + +Expected request body: + +```json +{ "property": "2022-08-26T18:38:00Z" } +``` + +### Type_Property_Optional_Datetime_putDefault + +- Endpoint: `put /type/property/optional/datetime/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_Duration_getAll + +- Endpoint: `get /type/property/optional/duration/all` + +Expected response body: + +```json +{ "property": "P123DT22H14M12.011S" } +``` + +### Type_Property_Optional_Duration_getDefault + +- Endpoint: `get /type/property/optional/duration/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_Duration_putAll + +- Endpoint: `put /type/property/optional/duration/all` + +Expected request body: + +```json +{ "property": "P123DT22H14M12.011S" } +``` + +### Type_Property_Optional_Duration_putDefault + +- Endpoint: `put /type/property/optional/duration/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_FloatLiteral_getAll + +- Endpoint: `get /type/property/optional/float/literal/all` + +Expected response body: + +```json +{ "property": 1.25 } +``` + +### Type_Property_Optional_FloatLiteral_getDefault + +- Endpoint: `get /type/property/optional/float/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_FloatLiteral_putAll + +- Endpoint: `put /type/property/optional/float/literal/all` + +Expected request body: + +```json +{ "property": 1.25 } +``` + +### Type_Property_Optional_FloatLiteral_putDefault + +- Endpoint: `put /type/property/optional/float/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_IntLiteral_getAll + +- Endpoint: `get /type/property/optional/int/literal/all` + +Expected response body: + +```json +{ "property": 1 } +``` + +### Type_Property_Optional_IntLiteral_getDefault + +- Endpoint: `get /type/property/optional/int/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_IntLiteral_putAll + +- Endpoint: `put /type/property/optional/int/literal/all` + +Expected request body: + +```json +{ "property": 1 } +``` + +### Type_Property_Optional_IntLiteral_putDefault + +- Endpoint: `put /type/property/optional/int/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_PlainDate_getAll + +- Endpoint: `get /type/property/optional/plainDate/all` + +Expected response body: + +```json +{ "property": "2022-12-12" } +``` + +### Type_Property_Optional_PlainDate_getDefault + +- Endpoint: `get /type/property/optional/plainDate/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_PlainDate_putAll + +- Endpoint: `put /type/property/optional/plainDate/all` + +Expected request body: + +```json +{ "property": "2022-12-12" } +``` + +### Type_Property_Optional_PlainDate_putDefault + +- Endpoint: `put /type/property/optional/plainDate/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_PlainTime_getAll + +- Endpoint: `get /type/property/optional/plainTime/all` + +Expected response body: + +```json +{ "property": "13:06:12" } +``` + +### Type_Property_Optional_PlainTime_getDefault + +- Endpoint: `get /type/property/optional/plainTime/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_PlainTime_putAll + +- Endpoint: `put /type/property/optional/plainTime/all` + +Expected request body: + +```json +{ "property": "13:06:12" } +``` + +### Type_Property_Optional_PlainTime_putDefault + +- Endpoint: `put /type/property/optional/plainTime/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_RequiredAndOptional_getAll + +- Endpoint: `get /type/property/optional/requiredAndOptional/all` + +Expected response body: + +```json +{ "optionalProperty": "hello", "requiredProperty": 42 } +``` + +### Type_Property_Optional_RequiredAndOptional_getRequiredOnly + +- Endpoint: `get /type/property/optional/requiredAndOptional/requiredOnly` + +Expected response body: + +```json +{ "requiredProperty": 42 } +``` + +### Type_Property_Optional_RequiredAndOptional_putAll + +- Endpoint: `put /type/property/optional/requiredAndOptional/all` + +Expected request body: + +```json +{ "optionalProperty": "hello", "requiredProperty": 42 } +``` + +### Type_Property_Optional_RequiredAndOptional_putRequiredOnly + +- Endpoint: `put /type/property/optional/requiredAndOptional/requiredOnly` + +Expected request body: + +```json +{ "requiredProperty": 42 } +``` + +### Type_Property_Optional_String_getAll + +- Endpoint: `get /type/property/optional/string/all` + +Expected response body: + +```json +{ "property": "hello" } +``` + +### Type_Property_Optional_String_getDefault + +- Endpoint: `get /type/property/optional/string/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_String_putAll + +- Endpoint: `put /type/property/optional/string/all` + +Expected request body: + +```json +{ "property": "hello" } +``` + +### Type_Property_Optional_String_putDefault + +- Endpoint: `put /type/property/optional/string/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_StringLiteral_getAll + +- Endpoint: `get /type/property/optional/string/literal/all` + +Expected response body: + +```json +{ "property": "hello" } +``` + +### Type_Property_Optional_StringLiteral_getDefault + +- Endpoint: `get /type/property/optional/string/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_StringLiteral_putAll + +- Endpoint: `put /type/property/optional/string/literal/all` + +Expected request body: + +```json +{ "property": "hello" } +``` + +### Type_Property_Optional_StringLiteral_putDefault + +- Endpoint: `put /type/property/optional/string/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_UnionFloatLiteral_getAll + +- Endpoint: `get /type/property/optional/union/float/literal/all` + +Expected response body: + +```json +{ "property": 2.375 } +``` + +### Type_Property_Optional_UnionFloatLiteral_getDefault + +- Endpoint: `get /type/property/optional/union/float/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_UnionFloatLiteral_putAll + +- Endpoint: `put /type/property/optional/union/float/literal/all` + +Expected request body: + +```json +{ "property": 2.375 } +``` + +### Type_Property_Optional_UnionFloatLiteral_putDefault + +- Endpoint: `put /type/property/optional/union/float/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_UnionIntLiteral_getAll + +- Endpoint: `get /type/property/optional/union/int/literal/all` + +Expected response body: + +```json +{ "property": 2 } +``` + +### Type_Property_Optional_UnionIntLiteral_getDefault + +- Endpoint: `get /type/property/optional/union/int/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_UnionIntLiteral_putAll + +- Endpoint: `put /type/property/optional/union/int/literal/all` + +Expected request body: + +```json +{ "property": 2 } +``` + +### Type_Property_Optional_UnionIntLiteral_putDefault + +- Endpoint: `put /type/property/optional/union/int/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_Optional_UnionStringLiteral_getAll + +- Endpoint: `get /type/property/optional/union/string/literal/all` + +Expected response body: + +```json +{ "property": "world" } +``` + +### Type_Property_Optional_UnionStringLiteral_getDefault + +- Endpoint: `get /type/property/optional/union/string/literal/default` + +Expected response body: + +```json +{} +``` + +### Type_Property_Optional_UnionStringLiteral_putAll + +- Endpoint: `put /type/property/optional/union/string/literal/all` + +Expected request body: + +```json +{ "property": "world" } +``` + +### Type_Property_Optional_UnionStringLiteral_putDefault + +- Endpoint: `put /type/property/optional/union/string/literal/default` + +Expected request body: + +```json +{} +``` + +### Type_Property_ValueTypes_Boolean_get + +- Endpoint: `get /type/property/value-types/boolean` + +Expected response body: + +```json +{ "property": true } +``` + +### Type_Property_ValueTypes_Boolean_put + +- Endpoint: `put /type/property/value-types/boolean` + +Expected input body: + +```json +{ "property": true } +``` + +### Type_Property_ValueTypes_BooleanLiteral_get + +- Endpoint: `get /type/property/value-types/boolean/literal` + +Expected response body: + +```json +{ "property": true } +``` + +### Type_Property_ValueTypes_BooleanLiteral_put + +- Endpoint: `put /type/property/value-types/boolean/literal` + +Expected input body: + +```json +{ "property": true } +``` + +### Type_Property_ValueTypes_Bytes_get + +- Endpoint: `get /type/property/value-types/bytes` + +Expected response body: + +```json +{"property": aGVsbG8sIHdvcmxkIQ==} +``` + +### Type_Property_ValueTypes_Bytes_put + +- Endpoint: `put /type/property/value-types/bytes` + +Expected input body: + +```json +{"property": aGVsbG8sIHdvcmxkIQ==} +``` + +### Type_Property_ValueTypes_CollectionsInt_get + +- Endpoint: `get /type/property/value-types/collections/int` + +Expected response body: + +```json +{ "property": [1, 2] } +``` + +### Type_Property_ValueTypes_CollectionsInt_put + +- Endpoint: `put /type/property/value-types/collections/int` + +Expected input body: + +```json +{ "property": [1, 2] } +``` + +### Type_Property_ValueTypes_CollectionsModel_get + +- Endpoint: `get /type/property/value-types/collections/model` + +Expected response body: + +```json +{ "property": [{ "property": "hello" }, { "property": "world" }] } +``` + +### Type_Property_ValueTypes_CollectionsModel_put + +- Endpoint: `put /type/property/value-types/collections/model` + +Expected input body: + +```json +{ "property": [{ "property": "hello" }, { "property": "world" }] } +``` + +### Type_Property_ValueTypes_CollectionsString_get + +- Endpoint: `get /type/property/value-types/collections/string` + +Expected response body: + +```json +{ "property": ["hello", "world"] } +``` + +### Type_Property_ValueTypes_CollectionsString_put + +- Endpoint: `put /type/property/value-types/collections/string` + +Expected input body: + +```json +{ "property": ["hello", "world"] } +``` + +### Type_Property_ValueTypes_Datetime_get + +- Endpoint: `get /type/property/value-types/datetime` + +Expected response body: + +```json +{"property": 2022-08-26T18:38:00Z} +``` + +### Type_Property_ValueTypes_Datetime_put + +- Endpoint: `put /type/property/value-types/datetime` + +Expected input body: + +```json +{"property": 2022-08-26T18:38:00Z} +``` + +### Type_Property_ValueTypes_Decimal_get + +- Endpoint: `get /type/property/value-types/decimal` + +Expected response body: + +```json +{ "property": 0.33333 } +``` + +### Type_Property_ValueTypes_Decimal_put + +- Endpoint: `put /type/property/value-types/decimal` + +Expected input body: + +```json +{ "property": 0.33333 } +``` + +### Type_Property_ValueTypes_Decimal128_get + +- Endpoint: `get /type/property/value-types/decimal128` + +Expected response body: + +```json +{ "property": 0.33333 } +``` + +### Type_Property_ValueTypes_Decimal128_put + +- Endpoint: `put /type/property/value-types/decimal128` + +Expected input body: + +```json +{ "property": 0.33333 } +``` + +### Type_Property_ValueTypes_DictionaryString_get + +- Endpoint: `get /type/property/value-types/dictionary/string` + +Expected response body: + +```json +{ "property": { "k1": "hello", "k2": "world" } } +``` + +### Type_Property_ValueTypes_DictionaryString_put + +- Endpoint: `put /type/property/value-types/dictionary/string` + +Expected input body: + +```json +{ "property": { "k1": "hello", "k2": "world" } } +``` + +### Type_Property_ValueTypes_Duration_get + +- Endpoint: `get /type/property/value-types/duration` + +Expected response body: + +```json +{"property": P123DT22H14M12.011S} +``` + +### Type_Property_ValueTypes_Duration_put + +- Endpoint: `put /type/property/value-types/duration` + +Expected input body: + +```json +{"property": P123DT22H14M12.011S} +``` + +### Type_Property_ValueTypes_Enum_get + +- Endpoint: `get /type/property/value-types/enum` + +Expected response body: + +```json +{ "property": "ValueOne" } +``` + +### Type_Property_ValueTypes_Enum_put + +- Endpoint: `put /type/property/value-types/enum` + +Expected input body: + +```json +{ "property": "ValueOne" } +``` + +### Type_Property_ValueTypes_ExtensibleEnum_get + +- Endpoint: `get /type/property/value-types/extensible-enum` + +Expected response body: + +```json +{ "property": "UnknownValue" } +``` + +### Type_Property_ValueTypes_ExtensibleEnum_put + +- Endpoint: `put /type/property/value-types/extensible-enum` + +Expected input body: + +```json +{ "property": "UnknownValue" } +``` + +### Type_Property_ValueTypes_Float_get + +- Endpoint: `get /type/property/value-types/float` + +Expected response body: + +```json +{ "property": 43.125 } +``` + +### Type_Property_ValueTypes_Float_put + +- Endpoint: `put /type/property/value-types/float` + +Expected input body: + +```json +{ "property": 43.125 } +``` + +### Type_Property_ValueTypes_FloatLiteral_get + +- Endpoint: `get /type/property/value-types/float/literal` + +Expected response body: + +```json +{ "property": 43.125 } +``` + +### Type_Property_ValueTypes_FloatLiteral_put + +- Endpoint: `put /type/property/value-types/float/literal` + +Expected input body: + +```json +{ "property": 43.125 } +``` + +### Type_Property_ValueTypes_Int_get + +- Endpoint: `get /type/property/value-types/int` + +Expected response body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_Int_put + +- Endpoint: `put /type/property/value-types/int` + +Expected input body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_IntLiteral_get + +- Endpoint: `get /type/property/value-types/int/literal` + +Expected response body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_IntLiteral_put + +- Endpoint: `put /type/property/value-types/int/literal` + +Expected input body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_Model_get + +- Endpoint: `get /type/property/value-types/model` + +Expected response body: + +```json +{ "property": { "property": "hello" } } +``` + +### Type_Property_ValueTypes_Model_put + +- Endpoint: `put /type/property/value-types/model` + +Expected input body: + +```json +{ "property": { "property": "hello" } } +``` + +### Type_Property_ValueTypes_Never_get + +- Endpoint: `get /type/property/value-types/never` + +Expected response body: + +```json +{"property": } +``` + +### Type_Property_ValueTypes_Never_put + +- Endpoint: `put /type/property/value-types/never` + +Expected input body: + +```json +{"property": } +``` + +### Type_Property_ValueTypes_String_get + +- Endpoint: `get /type/property/value-types/string` + +Expected response body: + +```json +{ "property": "hello" } +``` + +### Type_Property_ValueTypes_String_put + +- Endpoint: `put /type/property/value-types/string` + +Expected input body: + +```json +{ "property": "hello" } +``` + +### Type_Property_ValueTypes_StringLiteral_get + +- Endpoint: `get /type/property/value-types/string/literal` + +Expected response body: + +```json +{ "property": "hello" } +``` + +### Type_Property_ValueTypes_StringLiteral_put + +- Endpoint: `put /type/property/value-types/string/literal` + +Expected input body: + +```json +{ "property": "hello" } +``` + +### Type_Property_ValueTypes_UnionEnumValue_get + +- Endpoint: `get /type/property/value-types/union-enum-value` + +Expected response body: + +```json +{ "property": "value2" } +``` + +### Type_Property_ValueTypes_UnionEnumValue_put + +- Endpoint: `put /type/property/value-types/union-enum-value` + +Expected input body: + +```json +{ "property": "value2" } +``` + +### Type_Property_ValueTypes_UnionFloatLiteral_get + +- Endpoint: `get /type/property/value-types/union/float/literal` + +Expected response body: + +```json +{ "property": 46.875 } +``` + +### Type_Property_ValueTypes_UnionFloatLiteral_put + +- Endpoint: `put /type/property/value-types/union/float/literal` + +Expected input body: + +```json +{ "property": 46.875 } +``` + +### Type_Property_ValueTypes_UnionIntLiteral_get + +- Endpoint: `get /type/property/value-types/union/int/literal` + +Expected response body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_UnionIntLiteral_put + +- Endpoint: `put /type/property/value-types/union/int/literal` + +Expected input body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_UnionStringLiteral_get + +- Endpoint: `get /type/property/value-types/union/string/literal` + +Expected response body: + +```json +{ "property": "world" } +``` + +### Type_Property_ValueTypes_UnionStringLiteral_put + +- Endpoint: `put /type/property/value-types/union/string/literal` + +Expected input body: + +```json +{ "property": "world" } +``` + +### Type_Property_ValueTypes_UnknownArray_get + +- Endpoint: `get /type/property/value-types/unknown/array` + +Expected response body: + +```json +{ "property": ["hello", "world"] } +``` + +### Type_Property_ValueTypes_UnknownArray_put + +- Endpoint: `put /type/property/value-types/unknown/array` + +Expected input body: + +```json +{ "property": ["hello", "world"] } +``` + +### Type_Property_ValueTypes_UnknownDict_get + +- Endpoint: `get /type/property/value-types/unknown/dict` + +Expected response body: + +```json +{ "property": { "k1": "hello", "k2": 42 } } +``` + +### Type_Property_ValueTypes_UnknownDict_put + +- Endpoint: `put /type/property/value-types/unknown/dict` + +Expected input body: + +```json +{ "property": { "k1": "hello", "k2": 42 } } +``` + +### Type_Property_ValueTypes_UnknownInt_get + +- Endpoint: `get /type/property/value-types/unknown/int` + +Expected response body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_UnknownInt_put + +- Endpoint: `put /type/property/value-types/unknown/int` + +Expected input body: + +```json +{ "property": 42 } +``` + +### Type_Property_ValueTypes_UnknownString_get + +- Endpoint: `get /type/property/value-types/unknown/string` + +Expected response body: + +```json +{ "property": "hello" } +``` + +### Type_Property_ValueTypes_UnknownString_put + +- Endpoint: `put /type/property/value-types/unknown/string` + +Expected input body: + +```json +{ "property": "hello" } +``` + +### Type_Scalar_Boolean_get + +- Endpoint: `get /type/scalar/boolean` + +Expect to handle a boolean value. Mock api will return true + +### Type_Scalar_Boolean_put + +- Endpoint: `put /type/scalar/boolean` + +Expect to send a boolean value. Mock api expect to receive 'true' + +### Type_Scalar_Decimal128Type_requestBody + +- Endpoint: `put /type/scalar/decimal128/resquest_body` + +Expected input body: + +```json +0.33333 +``` + +### Type_Scalar_Decimal128Type_requestParameter + +- Endpoint: `get /type/scalar/decimal128/request_parameter` + +Expected request parameter: +value=0.33333 + +### Type_Scalar_Decimal128Type_responseBody + +- Endpoint: `get /type/scalar/decimal128/response_body` + +Expected response body: + +```json +0.33333 +``` + +### Type_Scalar_Decimal128Verify_prepareVerify + +- Endpoint: `get /type/scalar/decimal128/prepare_verify` + +Get verify values: +[0.1, 0.1, 0.1] + +### Type_Scalar_Decimal128Verify_verify + +- Endpoint: `post /type/scalar/decimal128/verify` + +Expected input body: + +```json +0.3 +``` + +### Type_Scalar_DecimalType_requestBody + +- Endpoint: `put /type/scalar/decimal/resquest_body` + +Expected input body: + +```json +0.33333 +``` + +### Type_Scalar_DecimalType_requestParameter + +- Endpoint: `get /type/scalar/decimal/request_parameter` + +Expected request parameter: +value=0.33333 + +### Type_Scalar_DecimalType_responseBody + +- Endpoint: `get /type/scalar/decimal/response_body` + +Expected response body: + +```json +0.33333 +``` + +### Type_Scalar_DecimalVerify_prepareVerify + +- Endpoint: `get /type/scalar/decimal/prepare_verify` + +Get verify values: +[0.1, 0.1, 0.1] + +### Type_Scalar_DecimalVerify_verify + +- Endpoint: `post /type/scalar/decimal/verify` + +Expected input body: + +```json +0.3 +``` + +### Type_Scalar_String_get + +- Endpoint: `get /type/scalar/string` + +Expect to handle a string value. Mock api will return 'test' + +### Type_Scalar_String_put + +- Endpoint: `put /type/scalar/string` + +Expect to send a string value. Mock api expect to receive 'test' + +### Type_Scalar_Unknown_get + +- Endpoint: `get /type/scalar/unknown` + +Expect to handle a unknown type value. Mock api will return 'test' + +### Type_Scalar_Unknown_put + +- Endpoint: `put /type/scalar/unknown` + +Expect to send a string value. Mock api expect to receive 'test' + +### Type_Union_EnumsOnly_get + +- Endpoint: `get /type/union/enums-only` + +Verify a union can be processed in a response: + +```tsp +Type.Union.LR | Type.Union.UD +``` + +Expected response body: + +```json +{ + "prop": { + "lr": "right", + "ud": "up" + } +} +``` + +### Type_Union_EnumsOnly_send + +- Endpoint: `get /type/union/enums-only` + +Verify a union can be processed in a response: + +```tsp +Type.Union.LR | Type.Union.UD +``` + +Expected request to send body: + +```json +{ + "prop": { + "lr": "right", + "ud": "up" + } +} +``` + +### Type_Union_FloatsOnly_get + +- Endpoint: `get /type/union/floats-only` + +Verify a union can be processed in a response: + +```tsp +1.1 | 2.2 | 3.3 +``` + +Expected response body: + +```json +{ "prop": 2.2 } +``` + +### Type_Union_FloatsOnly_send + +- Endpoint: `get /type/union/floats-only` + +Verify a union can be processed in a response: + +```tsp +1.1 | 2.2 | 3.3 +``` + +Expected request to send body: + +```json +{ "prop": 2.2 } +``` + +### Type_Union_IntsOnly_get + +- Endpoint: `get /type/union/ints-only` + +Verify a union can be processed in a response: + +```tsp +1 | 2 | 3 +``` + +Expected response body: + +```json +{ "prop": 2 } +``` + +### Type_Union_IntsOnly_send + +- Endpoint: `get /type/union/ints-only` + +Verify a union can be processed in a response: + +```tsp +1 | 2 | 3 +``` + +Expected request to send body: + +```json +{ "prop": 2 } +``` + +### Type_Union_MixedLiterals_get + +- Endpoint: `get /type/union/mixed-literals` + +Verify a union can be processed in a response: + +```tsp +"a" | 2 | 3.3 | true +``` + +Expected response body: + +```json +{ + "prop": { + "stringLiteral": "a", + "intLiteral": 2, + "floatLiteral": 3.3, + "booleanLiteral": true + } +} +``` + +### Type_Union_MixedLiterals_send + +- Endpoint: `get /type/union/mixed-literals` + +Verify a union can be processed in a response: + +```tsp +"a" | 2 | 3.3 | true +``` + +Expected request to send body: + +```json +{ + "prop": { + "stringLiteral": "a", + "intLiteral": 2, + "floatLiteral": 3.3, + "booleanLiteral": true + } +} +``` + +### Type_Union_MixedTypes_get + +- Endpoint: `get /type/union/mixed-types` + +Verify a union can be processed in a response: + +```tsp +Type.Union.Cat | "a" | int32 | boolean +``` + +Expected response body: + +```json +{ + "prop": { + "model": { + "name": "test" + }, + "literal": "a", + "int": 2, + "boolean": true, + "array": [ + { + "name": "test" + }, + "a", + 2, + true + ] + } +} +``` + +### Type_Union_MixedTypes_send + +- Endpoint: `get /type/union/mixed-types` + +Verify a union can be processed in a response: + +```tsp +Type.Union.Cat | "a" | int32 | boolean +``` + +Expected request to send body: + +```json +{ + "prop": { + "model": { + "name": "test" + }, + "literal": "a", + "int": 2, + "boolean": true, + "array": [ + { + "name": "test" + }, + "a", + 2, + true + ] + } +} +``` + +### Type_Union_ModelsOnly_get + +- Endpoint: `get /type/union/models-only` + +Verify a union can be processed in a response: + +```tsp +Type.Union.Cat | Type.Union.Dog +``` + +Expected response body: + +```json +{ + "prop": { + "name": "test" + } +} +``` + +### Type_Union_ModelsOnly_send + +- Endpoint: `get /type/union/models-only` + +Verify a union can be processed in a response: + +```tsp +Type.Union.Cat | Type.Union.Dog +``` + +Expected request to send body: + +```json +{ + "prop": { + "name": "test" + } +} +``` + +### Type_Union_StringAndArray_get + +- Endpoint: `get /type/union/string-and-array` + +Verify a union can be processed in a response: + +```tsp +string | string[] +``` + +Expected response body: + +```json +{ + "prop": { + "string": "test", + "array": ["test1", "test2"] + } +} +``` + +### Type_Union_StringAndArray_send + +- Endpoint: `get /type/union/string-and-array` + +Verify a union can be processed in a response: + +```tsp +string | string[] +``` + +Expected request to send body: + +```json +{ + "prop": { + "string": "test", + "array": ["test1", "test2"] + } +} +``` + +### Type_Union_StringExtensible_get + +- Endpoint: `get /type/union/string-extensible` + +Verify a union can be processed in a response: + +```tsp +string | "b" | "c" +``` + +Expected response body: + +```json +{ "prop": "custom" } +``` + +### Type_Union_StringExtensible_send + +- Endpoint: `get /type/union/string-extensible` + +Verify a union can be processed in a response: + +```tsp +string | "b" | "c" +``` + +Expected request to send body: + +```json +{ "prop": "custom" } +``` + +### Type_Union_StringExtensibleNamed_get + +- Endpoint: `get /type/union/string-extensible-named` + +Verify a union can be processed in a response: + +```tsp +Type.Union.StringExtensibleNamedUnion +``` + +Expected response body: + +```json +{ "prop": "custom" } +``` + +### Type_Union_StringExtensibleNamed_send + +- Endpoint: `get /type/union/string-extensible-named` + +Verify a union can be processed in a response: + +```tsp +Type.Union.StringExtensibleNamedUnion +``` + +Expected request to send body: + +```json +{ "prop": "custom" } +``` + +### Type_Union_StringsOnly_get + +- Endpoint: `get /type/union/strings-only` + +Verify a union can be processed in a response: + +```tsp +"a" | "b" | "c" +``` + +Expected response body: + +```json +{ "prop": "b" } +``` + +### Type_Union_StringsOnly_send + +- Endpoint: `get /type/union/strings-only` + +Verify a union can be processed in a response: + +```tsp +"a" | "b" | "c" +``` + +Expected request to send body: + +```json +{ "prop": "b" } +``` + +### Versioning_Added_InterfaceV2 + +- Endpoint: `post /versioning/added/api-version:{version}/interface-v2/v2` + +This operation group should only be generated with latest version. + +Expected request body for v2InInterface: + +```json +{ "prop": "foo", "enumProp": "enumMember", "unionProp": "bar" } +``` + +### Versioning_Added_v1 + +- Endpoint: `post /versioning/added/api-version:{version}/v1` + +This operation should be generated with latest version's signature. + +Expected request body: + +```json +{ "prop": "foo", "enumProp": "enumMemberV2", "unionProp": 10 } +``` + +Expected header: +header-v2=bar + +### Versioning_Added_v2 + +- Endpoint: `post /versioning/added/api-version:{version}/v2` + +This operation should only be generated with latest version. + +Expected request body: + +```json +{ "prop": "foo", "enumProp": "enumMember", "unionProp": "bar" } +``` + +### Versioning_MadeOptional_test + +- Endpoint: `post /versioning/made-optional/api-version:{version}/test` + +This operation should be generated with latest version's signature. + +Expected request body: + +```json +{ "prop": "foo" } +``` + +### Versioning_Removed_v2 + +- Endpoint: `post /versioning/removed/api-version:{version}/v2` + +This operation should be generated with latest version's signature. + +Expected request body: + +```json +{ "prop": "foo", "enumProp": "enumMemberV2", "unionProp": "bar" } +``` + +### Versioning_RenamedFrom_NewInterface + +- Endpoint: `post /versioning/renamed-from/api-version:{version}/interface/test` + +This operation group should only be generated with latest version's signature. + +Expected request body for test: + +```json +{ "prop": "foo", "enumProp": "newEnumMember", "unionProp": 10 } +``` + +### Versioning_RenamedFrom_newOp + +- Endpoint: `post /versioning/renamed-from/api-version:{version}/test` + +This operation should be generated with latest version's signature. + +Expected request body: + +```json +{ "newProp": "foo", "enumProp": "newEnumMember", "unionProp": 10 } +``` + +Expected query: +newQuery=bar + +### Versioning_ReturnTypeChangedFrom_test + +- Endpoint: `post /versioning/return-type-changed-from/api-version:{version}/test` + +This operation should be generated with latest version's signature. + +Expected request body: "test" +Expected response body: "test" + +### Versioning_TypeChangedFrom_test + +- Endpoint: `post /versioning/type-changed-from/api-version:{version}/test` + +This operation should be generated with latest version's signature. + +Expected request body: + +```json +{ "prop": "foo", "changedProp": "bar" } +``` + +Expected query param: +param="baz"