| [ |
| { |
| "description": "Scalar members", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "ImaHeader": { |
| "shape": "HeaderShape" |
| }, |
| "ImaHeaderLocation": { |
| "shape": "HeaderShape", |
| "locationName": "X-Foo" |
| }, |
| "Str": { |
| "shape": "StringType" |
| }, |
| "Num": { |
| "shape": "IntegerType", |
| "locationName": "FooNum" |
| }, |
| "FalseBool": { |
| "shape": "BooleanType" |
| }, |
| "TrueBool": { |
| "shape": "BooleanType" |
| }, |
| "Float": { |
| "shape": "FloatType" |
| }, |
| "Double": { |
| "shape": "DoubleType" |
| }, |
| "Long": { |
| "shape": "LongType" |
| }, |
| "Char": { |
| "shape": "CharType" |
| }, |
| "Timestamp": { |
| "shape": "TimestampType" |
| }, |
| "BlobHeader": { |
| "shape": "BlobType", |
| "location": "header" |
| }, |
| "Blob": { |
| "shape": "BlobType" |
| } |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| }, |
| "IntegerType": { |
| "type": "integer" |
| }, |
| "BooleanType": { |
| "type": "boolean" |
| }, |
| "FloatType": { |
| "type": "float" |
| }, |
| "DoubleType": { |
| "type": "double" |
| }, |
| "LongType": { |
| "type": "long" |
| }, |
| "CharType": { |
| "type": "character" |
| }, |
| "HeaderShape": { |
| "type": "string", |
| "location": "header" |
| }, |
| "StatusShape": { |
| "type": "integer", |
| "location": "statusCode" |
| }, |
| "TimestampType": { |
| "type": "timestamp" |
| }, |
| "BlobType": { |
| "type": "blob" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "ImaHeader": "test", |
| "ImaHeaderLocation": "abc", |
| "Str": "myname", |
| "Num": 123, |
| "FalseBool": false, |
| "TrueBool": true, |
| "Float": 1.2, |
| "Double": 1.3, |
| "Long": 200, |
| "Char": "a", |
| "Timestamp": 1422172800, |
| "BlobHeader": "hello", |
| "Blob": "hello" |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": { |
| "ImaHeader": "test", |
| "BlobHeader": "aGVsbG8=", |
| "X-Foo": "abc" |
| }, |
| "body": "<OperationNameResponse><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><Timestamp>2015-01-25T08:00:00Z</Timestamp><Blob>aGVsbG8=</Blob></OperationNameResponse>" |
| } |
| }, |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "ImaHeader": "test", |
| "ImaHeaderLocation": "abc", |
| "Str": "", |
| "Num": 123, |
| "FalseBool": false, |
| "TrueBool": true, |
| "Float": 1.2, |
| "Double": 1.3, |
| "Long": 200, |
| "Char": "a", |
| "Timestamp": 1422172800 |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": { |
| "ImaHeader": "test", |
| "X-Foo": "abc" |
| }, |
| "body": "<OperationNameResponse><Str></Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><Timestamp>2015-01-25T08:00:00Z</Timestamp></OperationNameResponse>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Blob", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "Blob": { |
| "shape": "BlobType" |
| } |
| } |
| }, |
| "BlobType": { |
| "type": "blob" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Blob": "value" |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><Blob>dmFsdWU=</Blob></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Lists", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "ListMember": { |
| "shape": "ListShape" |
| } |
| } |
| }, |
| "ListShape": { |
| "type": "list", |
| "member": { |
| "shape": "StringType" |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "ListMember": ["abc", "123"] |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><ListMember><member>abc</member><member>123</member></ListMember></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "List with custom member name", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "ListMember": { |
| "shape": "ListShape" |
| } |
| } |
| }, |
| "ListShape": { |
| "type": "list", |
| "member": { |
| "shape": "StringType", |
| "locationName": "item" |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "ListMember": ["abc", "123"] |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><ListMember><item>abc</item><item>123</item></ListMember></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Flattened List", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "ListMember": { |
| "shape": "StringList", |
| "flattened": true |
| } |
| } |
| }, |
| "StringList": { |
| "type": "list", |
| "member": { |
| "shape": "StringType" |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "ListMember": ["abc", "123"] |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><ListMember>abc</ListMember><ListMember>123</ListMember></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Normal map", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "Map": { |
| "shape": "StringMap" |
| } |
| } |
| }, |
| "StringMap": { |
| "type": "map", |
| "key": { |
| "shape": "StringType" |
| }, |
| "value": { |
| "shape": "SingleStructure" |
| } |
| }, |
| "SingleStructure": { |
| "type": "structure", |
| "members": { |
| "foo": { |
| "shape": "StringType" |
| } |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Map": { |
| "qux": { |
| "foo": "bar" |
| }, |
| "baz": { |
| "foo": "bam" |
| } |
| } |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Flattened map", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "Map": { |
| "shape": "StringMap", |
| "flattened": true |
| } |
| } |
| }, |
| "StringMap": { |
| "type": "map", |
| "key": { |
| "shape": "StringType" |
| }, |
| "value": { |
| "shape": "StringType" |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Map": { |
| "qux": "bar", |
| "baz": "bam" |
| } |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Named map", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "Map": { |
| "shape": "StringMap" |
| } |
| } |
| }, |
| "StringMap": { |
| "type": "map", |
| "key": { |
| "shape": "StringType", |
| "locationName": "foo" |
| }, |
| "value": { |
| "shape": "StringType", |
| "locationName": "bar" |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Map": { |
| "qux": "bar", |
| "baz": "bam" |
| } |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResult><Map><entry><foo>qux</foo><bar>bar</bar></entry><entry><foo>baz</foo><bar>bam</bar></entry></Map></OperationNameResult>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "XML payload", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "payload": "Data", |
| "members": { |
| "Header": { |
| "shape": "StringType", |
| "location": "header", |
| "locationName": "X-Foo" |
| }, |
| "Data": { |
| "shape": "SingleStructure" |
| } |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| }, |
| "SingleStructure": { |
| "type": "structure", |
| "members": { |
| "Foo": { |
| "shape": "StringType" |
| } |
| } |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Header": "baz", |
| "Data": { |
| "Foo": "abc" |
| } |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": { |
| "X-Foo": "baz" |
| }, |
| "body": "<OperationNameResponse><Foo>abc</Foo></OperationNameResponse>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Streaming payload", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "payload": "Stream", |
| "members": { |
| "Stream": { |
| "shape": "BlobStream" |
| } |
| } |
| }, |
| "BlobStream": { |
| "type": "blob" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Stream": "abc" |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "abc" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Scalar members in headers", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "Str": { |
| "locationName": "x-str", |
| "shape": "StringHeaderType" |
| }, |
| "Integer": { |
| "locationName": "x-int", |
| "shape": "IntegerHeaderType" |
| }, |
| "TrueBool": { |
| "locationName": "x-true-bool", |
| "shape": "BooleanHeaderType" |
| }, |
| "FalseBool": { |
| "locationName": "x-false-bool", |
| "shape": "BooleanHeaderType" |
| }, |
| "Float": { |
| "locationName": "x-float", |
| "shape": "FloatHeaderType" |
| }, |
| "Double": { |
| "locationName": "x-double", |
| "shape": "DoubleHeaderType" |
| }, |
| "Long": { |
| "locationName": "x-long", |
| "shape": "LongHeaderType" |
| }, |
| "Char": { |
| "locationName": "x-char", |
| "shape": "CharHeaderType" |
| }, |
| "Timestamp": { |
| "locationName": "x-timestamp", |
| "shape": "TimestampHeaderType" |
| } |
| } |
| }, |
| "StringHeaderType": { |
| "location": "header", |
| "type": "string" |
| }, |
| "IntegerHeaderType": { |
| "location": "header", |
| "type": "integer" |
| }, |
| "BooleanHeaderType": { |
| "location": "header", |
| "type": "boolean" |
| }, |
| "FloatHeaderType": { |
| "location": "header", |
| "type": "float" |
| }, |
| "DoubleHeaderType": { |
| "location": "header", |
| "type": "double" |
| }, |
| "LongHeaderType": { |
| "location": "header", |
| "type": "long" |
| }, |
| "CharHeaderType": { |
| "location": "header", |
| "type": "character" |
| }, |
| "TimestampHeaderType": { |
| "location": "header", |
| "type": "timestamp" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Str": "string", |
| "Integer": 1, |
| "TrueBool": true, |
| "FalseBool": false, |
| "Float": 1.5, |
| "Double": 1.5, |
| "Long": 100, |
| "Char": "a", |
| "Timestamp": 1422172800 |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": { |
| "x-str": "string", |
| "x-int": "1", |
| "x-true-bool": "true", |
| "x-false-bool": "false", |
| "x-float": "1.5", |
| "x-double": "1.5", |
| "x-long": "100", |
| "x-char": "a", |
| "x-timestamp": "Sun, 25 Jan 2015 08:00:00 GMT" |
| }, |
| "body": "" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Empty string", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "Foo": { |
| "shape": "StringType" |
| } |
| } |
| }, |
| "StringType": { |
| "type": "string" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "Foo": "" |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {}, |
| "body": "<OperationNameResponse><Foo/><RequestId>requestid</RequestId></OperationNameResponse>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Timestamp members", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "TimeArg": { |
| "shape": "TimestampType" |
| }, |
| "TimeArgInHeader": { |
| "shape": "TimestampType", |
| "location": "header", |
| "locationName": "x-amz-timearg" |
| }, |
| "TimeCustom": { |
| "timestampFormat": "rfc822", |
| "shape": "TimestampType" |
| }, |
| "TimeCustomInHeader": { |
| "timestampFormat": "unixTimestamp", |
| "shape": "TimestampType", |
| "location": "header", |
| "locationName": "x-amz-timecustom" |
| }, |
| "TimeFormat": { |
| "shape": "TimestampFormatType" |
| }, |
| "TimeFormatInHeader": { |
| "shape": "TimestampFormatType", |
| "location": "header", |
| "locationName": "x-amz-timeformat" |
| }, |
| "StructMember": { |
| "shape": "TimeContainer" |
| } |
| } |
| }, |
| "TimeContainer": { |
| "type": "structure", |
| "members": { |
| "foo": { |
| "shape": "TimestampType" |
| }, |
| "bar": { |
| "shape": "TimestampFormatType" |
| } |
| } |
| }, |
| "TimestampFormatType": { |
| "timestampFormat": "unixTimestamp", |
| "type": "timestamp" |
| }, |
| "TimestampType": { |
| "type": "timestamp" |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "TimeArg": 1398796238, |
| "TimeArgInHeader": 1398796238, |
| "TimeCustom": 1398796238, |
| "TimeCustomInHeader": 1398796238, |
| "TimeFormat": 1398796238, |
| "TimeFormatInHeader": 1398796238, |
| "StructMember": { |
| "foo": 1398796238, |
| "bar": 1398796238 |
| } |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": { |
| "x-amz-timearg": "Tue, 29 Apr 2014 18:30:38 GMT", |
| "x-amz-timecustom": "1398796238", |
| "x-amz-timeformat": "1398796238" |
| }, |
| "body": "<OperationNameResponse><StructMember><foo>2014-04-29T18:30:38Z</foo><bar>1398796238</bar></StructMember><TimeArg>2014-04-29T18:30:38Z</TimeArg><TimeCustom>Tue, 29 Apr 2014 18:30:38 GMT</TimeCustom><TimeFormat>1398796238</TimeFormat><RequestId>requestid</RequestId></OperationNameResponse>" |
| } |
| } |
| ] |
| }, |
| { |
| "description": "Enum", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape": { |
| "type": "structure", |
| "members": { |
| "HeaderEnum": { |
| "shape": "RESTJSONEnumType", |
| "location": "header", |
| "locationName": "x-amz-enum" |
| }, |
| "FooEnum": { |
| "shape": "RESTJSONEnumType" |
| }, |
| "ListEnums": { |
| "shape": "EnumList" |
| } |
| } |
| }, |
| "RESTJSONEnumType":{ |
| "type":"string", |
| "enum":[ |
| "foo", |
| "bar", |
| "0", |
| "1" |
| ] |
| }, |
| "EnumList":{ |
| "type":"list", |
| "member": {"shape": "RESTJSONEnumType"} |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "http": { |
| "method": "POST", |
| "requestUri": "/path" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "HeaderEnum": "baz", |
| "FooEnum": "foo", |
| "ListEnums": ["0", "1"] |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {"x-amz-enum": "baz"}, |
| "body": "<OperationNameResponse><FooEnum>foo</FooEnum><ListEnums><member>0</member><member>1</member></ListEnums></OperationNameResponse>" |
| } |
| }, |
| { |
| "given": { |
| "input": { |
| "shape": "OutputShape" |
| }, |
| "http": { |
| "method": "POST", |
| "requestUri": "/path" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| }, |
| "response": { |
| "status_code": 200, |
| "headers": {} |
| } |
| } |
| ] |
| }, |
| { |
| "description": "XML Attributes", |
| "metadata": { |
| "protocol": "rest-xml" |
| }, |
| "shapes": { |
| "OutputShape":{ |
| "type":"structure", |
| "members":{ |
| "ListItems":{ |
| "shape":"ListItemsShape", |
| "locationName":"ItemsList" |
| } |
| } |
| }, |
| "ListItemsShape":{ |
| "type":"list", |
| "member":{ |
| "shape":"ItemShape", |
| "locationName":"Item" |
| } |
| }, |
| "ItemShape":{ |
| "type":"structure", |
| "members":{ |
| "ItemDetail":{"shape":"ItemDetailShape"} |
| } |
| }, |
| "ItemDetailShape":{ |
| "type":"structure", |
| "required":["Type"], |
| "members":{ |
| "ID":{"shape":"StringShape"}, |
| "Type":{ |
| "shape":"ItemType", |
| "locationName":"xsi:type", |
| "xmlAttribute":true |
| } |
| }, |
| "xmlNamespace":{ |
| "prefix":"xsi", |
| "uri":"http://www.w3.org/2001/XMLSchema-instance" |
| } |
| }, |
| "StringShape":{ |
| "type":"string" |
| }, |
| "ItemType":{ |
| "type":"string", |
| "enum":[ |
| "Type1", |
| "Type2", |
| "Type3" |
| ] |
| } |
| }, |
| "cases": [ |
| { |
| "given": { |
| "output": { |
| "shape": "OutputShape" |
| }, |
| "http": { |
| "method": "GET", |
| "requestUri": "/path" |
| }, |
| "name": "OperationName" |
| }, |
| "result": { |
| "ListItems": [ |
| {"ItemDetail": {"ID": "id1", "Type": "Type1"}}, |
| {"ItemDetail": {"ID": "id2", "Type": "Type2"}}, |
| {"ItemDetail": {"ID": "id3", "Type": "Type3"}} |
| ] |
| }, |
| "response": { |
| "status_code": 200, |
| "body": "<SomeOutputDoc xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"><ItemsList><Item><ItemDetail xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"Type1\"><ID>id1</ID></ItemDetail></Item><Item><ItemDetail xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"Type2\"><ID>id2</ID></ItemDetail></Item><Item><ItemDetail xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"Type3\"><ID>id3</ID></ItemDetail></Item></ItemsList></SomeOutputDoc>" |
| } |
| } |
| ] |
| } |
| ] |