1[ 2 { 3 "description": "Scalar members", 4 "metadata": { 5 "protocol": "ec2" 6 }, 7 "shapes": { 8 "OutputShape": { 9 "type": "structure", 10 "members": { 11 "Str": { 12 "shape": "StringType" 13 }, 14 "Num": { 15 "shape": "IntegerType", 16 "locationName": "FooNum" 17 }, 18 "FalseBool": { 19 "shape": "BooleanType" 20 }, 21 "TrueBool": { 22 "shape": "BooleanType" 23 }, 24 "Float": { 25 "shape": "FloatType" 26 }, 27 "Double": { 28 "shape": "DoubleType" 29 }, 30 "Long": { 31 "shape": "LongType" 32 }, 33 "Char": { 34 "shape": "CharType" 35 } 36 } 37 }, 38 "StringType": { 39 "type": "string" 40 }, 41 "IntegerType": { 42 "type": "integer" 43 }, 44 "BooleanType": { 45 "type": "boolean" 46 }, 47 "FloatType": { 48 "type": "float" 49 }, 50 "DoubleType": { 51 "type": "double" 52 }, 53 "LongType": { 54 "type": "long" 55 }, 56 "CharType": { 57 "type": "character" 58 } 59 }, 60 "cases": [ 61 { 62 "given": { 63 "output": { 64 "shape": "OutputShape" 65 }, 66 "name": "OperationName" 67 }, 68 "result": { 69 "Str": "myname", 70 "Num": 123, 71 "FalseBool": false, 72 "TrueBool": true, 73 "Float": 1.2, 74 "Double": 1.3, 75 "Long": 200, 76 "Char": "a" 77 }, 78 "response": { 79 "status_code": 200, 80 "headers": {}, 81 "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><RequestId>request-id</RequestId></OperationNameResponse>" 82 } 83 } 84 ] 85 }, 86 { 87 "description": "Blob", 88 "metadata": { 89 "protocol": "ec2" 90 }, 91 "shapes": { 92 "OutputShape": { 93 "type": "structure", 94 "members": { 95 "Blob": { 96 "shape": "BlobType" 97 } 98 } 99 }, 100 "BlobType": { 101 "type": "blob" 102 } 103 }, 104 "cases": [ 105 { 106 "given": { 107 "output": { 108 "shape": "OutputShape" 109 }, 110 "name": "OperationName" 111 }, 112 "result": { 113 "Blob": "value" 114 }, 115 "response": { 116 "status_code": 200, 117 "headers": {}, 118 "body": "<OperationNameResponse><Blob>dmFsdWU=</Blob><RequestId>requestid</RequestId></OperationNameResponse>" 119 } 120 } 121 ] 122 }, 123 { 124 "description": "Lists", 125 "metadata": { 126 "protocol": "ec2" 127 }, 128 "shapes": { 129 "OutputShape": { 130 "type": "structure", 131 "members": { 132 "ListMember": { 133 "shape": "ListShape" 134 } 135 } 136 }, 137 "ListShape": { 138 "type": "list", 139 "member": { 140 "shape": "StringType" 141 } 142 }, 143 "StringType": { 144 "type": "string" 145 } 146 }, 147 "cases": [ 148 { 149 "given": { 150 "output": { 151 "shape": "OutputShape" 152 }, 153 "name": "OperationName" 154 }, 155 "result": { 156 "ListMember": ["abc", "123"] 157 }, 158 "response": { 159 "status_code": 200, 160 "headers": {}, 161 "body": "<OperationNameResponse><ListMember><member>abc</member><member>123</member></ListMember><RequestId>requestid</RequestId></OperationNameResponse>" 162 } 163 } 164 ] 165 }, 166 { 167 "description": "List with custom member name", 168 "metadata": { 169 "protocol": "ec2" 170 }, 171 "shapes": { 172 "OutputShape": { 173 "type": "structure", 174 "members": { 175 "ListMember": { 176 "shape": "ListShape" 177 } 178 } 179 }, 180 "ListShape": { 181 "type": "list", 182 "member": { 183 "shape": "StringType", 184 "locationName": "item" 185 } 186 }, 187 "StringType": { 188 "type": "string" 189 } 190 }, 191 "cases": [ 192 { 193 "given": { 194 "output": { 195 "shape": "OutputShape" 196 }, 197 "name": "OperationName" 198 }, 199 "result": { 200 "ListMember": ["abc", "123"] 201 }, 202 "response": { 203 "status_code": 200, 204 "headers": {}, 205 "body": "<OperationNameResponse><ListMember><item>abc</item><item>123</item></ListMember><RequestId>requestid</RequestId></OperationNameResponse>" 206 } 207 } 208 ] 209 }, 210 { 211 "description": "Flattened List", 212 "metadata": { 213 "protocol": "ec2" 214 }, 215 "shapes": { 216 "OutputShape": { 217 "type": "structure", 218 "members": { 219 "ListMember": { 220 "shape": "ListType", 221 "flattened": true 222 } 223 } 224 }, 225 "ListType": { 226 "type": "list", 227 "member": { 228 "shape": "StringType" 229 } 230 }, 231 "StringType": { 232 "type": "string" 233 } 234 }, 235 "cases": [ 236 { 237 "given": { 238 "output": { 239 "shape": "OutputShape" 240 }, 241 "name": "OperationName" 242 }, 243 "result": { 244 "ListMember": ["abc", "123"] 245 }, 246 "response": { 247 "status_code": 200, 248 "headers": {}, 249 "body": "<OperationNameResponse><ListMember>abc</ListMember><ListMember>123</ListMember><RequestId>requestid</RequestId></OperationNameResponse>" 250 } 251 } 252 ] 253 }, 254 { 255 "description": "Normal map", 256 "metadata": { 257 "protocol": "ec2" 258 }, 259 "shapes": { 260 "OutputShape": { 261 "type": "structure", 262 "members": { 263 "Map": { 264 "shape": "MapType" 265 } 266 } 267 }, 268 "MapType": { 269 "type": "map", 270 "key": { 271 "shape": "StringType" 272 }, 273 "value": { 274 "shape": "StructureType" 275 } 276 }, 277 "StructureType": { 278 "type": "structure", 279 "members": { 280 "foo": { 281 "shape": "StringType" 282 } 283 } 284 }, 285 "StringType": { 286 "type": "string" 287 } 288 }, 289 "cases": [ 290 { 291 "given": { 292 "output": { 293 "shape": "OutputShape" 294 }, 295 "name": "OperationName" 296 }, 297 "result": { 298 "Map": { 299 "qux": { 300 "foo": "bar" 301 }, 302 "baz": { 303 "foo": "bam" 304 } 305 } 306 }, 307 "response": { 308 "status_code": 200, 309 "headers": {}, 310 "body": "<OperationNameResponse><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map><RequestId>requestid</RequestId></OperationNameResponse>" 311 } 312 } 313 ] 314 }, 315 { 316 "description": "Flattened map", 317 "metadata": { 318 "protocol": "ec2" 319 }, 320 "shapes": { 321 "OutputShape": { 322 "type": "structure", 323 "members": { 324 "Map": { 325 "shape": "MapType", 326 "flattened": true 327 } 328 } 329 }, 330 "MapType": { 331 "type": "map", 332 "key": { 333 "shape": "StringType" 334 }, 335 "value": { 336 "shape": "StringType" 337 } 338 }, 339 "StringType": { 340 "type": "string" 341 } 342 }, 343 "cases": [ 344 { 345 "given": { 346 "output": { 347 "shape": "OutputShape" 348 }, 349 "name": "OperationName" 350 }, 351 "result": { 352 "Map": { 353 "qux": "bar", 354 "baz": "bam" 355 } 356 }, 357 "response": { 358 "status_code": 200, 359 "headers": {}, 360 "body": "<OperationNameResponse><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map><RequestId>requestid</RequestId></OperationNameResponse>" 361 } 362 } 363 ] 364 }, 365 { 366 "description": "Named map", 367 "metadata": { 368 "protocol": "ec2" 369 }, 370 "shapes": { 371 "OutputShape": { 372 "type": "structure", 373 "members": { 374 "Map": { 375 "shape": "MapType", 376 "flattened": true 377 } 378 } 379 }, 380 "MapType": { 381 "type": "map", 382 "key": { 383 "shape": "StringType", 384 "locationName": "foo" 385 }, 386 "value": { 387 "shape": "StringType", 388 "locationName": "bar" 389 } 390 }, 391 "StringType": { 392 "type": "string" 393 } 394 }, 395 "cases": [ 396 { 397 "given": { 398 "output": { 399 "shape": "OutputShape" 400 }, 401 "name": "OperationName" 402 }, 403 "result": { 404 "Map": { 405 "qux": "bar", 406 "baz": "bam" 407 } 408 }, 409 "response": { 410 "status_code": 200, 411 "headers": {}, 412 "body": "<OperationNameResponse><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map><RequestId>requestid</RequestId></OperationNameResponse>" 413 } 414 } 415 ] 416 }, 417 { 418 "description": "Empty string", 419 "metadata": { 420 "protocol": "ec2" 421 }, 422 "shapes": { 423 "OutputShape": { 424 "type": "structure", 425 "members": { 426 "Foo": { 427 "shape": "StringType" 428 } 429 } 430 }, 431 "StringType": { 432 "type": "string" 433 } 434 }, 435 "cases": [ 436 { 437 "given": { 438 "output": { 439 "shape": "OutputShape" 440 }, 441 "name": "OperationName" 442 }, 443 "result": { 444 "Foo": "" 445 }, 446 "response": { 447 "status_code": 200, 448 "headers": {}, 449 "body": "<OperationNameResponse><Foo/><RequestId>requestid</RequestId></OperationNameResponse>" 450 } 451 } 452 ] 453 } 454] 455