[
  {
    "description": "Scalar members",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "ImaHeader": {
            "shape": "HeaderShape"
          },
          "ImaHeaderLocation": {
            "shape": "HeaderShape",
            "locationName": "X-Foo"
          },
          "Status": {
            "shape": "StatusShape",
            "location": "statusCode"
          },
          "Str": {
            "shape": "StringType"
          },
          "Num": {
            "shape": "IntegerType"
          },
          "FalseBool": {
            "shape": "BooleanType"
          },
          "TrueBool": {
            "shape": "BooleanType"
          },
          "Float": {
            "shape": "FloatType"
          },
          "Double": {
            "shape": "DoubleType"
          },
          "Long": {
            "shape": "LongType"
          },
          "Char": {
            "shape": "CharType"
          }
        }
      },
      "HeaderShape": {
        "type": "string",
        "location": "header"
      },
      "StatusShape": {
        "type": "integer"
      },
      "StringType": {
        "type": "string"
      },
      "IntegerType": {
        "type": "integer"
      },
      "BooleanType": {
        "type": "boolean"
      },
      "FloatType": {
        "type": "float"
      },
      "DoubleType": {
        "type": "double"
      },
      "LongType": {
        "type": "long"
      },
      "CharType": {
        "type": "character"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "ImaHeader": "test",
          "ImaHeaderLocation": "abc",
          "Status": 200,
          "Str": "myname",
          "Num": 123,
          "FalseBool": false,
          "TrueBool": true,
          "Float": 1.2,
          "Double": 1.3,
          "Long": 200,
          "Char": "a"
        },
        "response": {
          "status_code": 200,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc"
          },
          "body": "{\"Str\": \"myname\", \"Num\": 123, \"FalseBool\": false, \"TrueBool\": true, \"Float\": 1.2, \"Double\": 1.3, \"Long\": 200, \"Char\": \"a\"}"
        }
      }
    ]
  },
  {
    "description": "Blob members",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "BlobMember": {
            "shape": "BlobType"
          },
          "StructMember": {
            "shape": "BlobContainer"
          }
        }
      },
      "BlobType": {
        "type": "blob"
      },
      "BlobContainer": {
        "type": "structure",
        "members": {
          "foo": {
            "shape": "BlobType"
          }
        }
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "BlobMember": "hi!",
          "StructMember": {
            "foo": "there!"
          }
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"BlobMember\": \"aGkh\", \"StructMember\": {\"foo\": \"dGhlcmUh\"}}"
        }
      }
    ]
  },
  {
    "description": "Timestamp members",
    "metadata": {
      "protocol": "rest-json"
    },
    "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": "iso8601",
        "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": "2014-04-29T18:30:38+00:00"
          },
          "body": "{\"TimeArg\": 1398796238, \"TimeCustom\": \"Tue, 29 Apr 2014 18:30:38 GMT\", \"TimeFormat\": \"2014-04-29T18:30:38+00:00\", \"StructMember\": {\"foo\": 1398796238, \"bar\": \"2014-04-29T18:30:38+00:00\"}}"
        }
      }
    ]
  },
  {
    "description": "Lists",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "ListMember": {
            "shape": "ListType"
          }
        }
      },
      "ListType": {
        "type": "list",
        "member": {
          "shape": "StringType"
        }
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "ListMember": ["a", "b"]
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"ListMember\": [\"a\", \"b\"]}"
        }
      }
    ]
  },
  {
    "description": "Lists with structure member",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "ListMember": {
            "shape": "ListType"
          }
        }
      },
      "ListType": {
        "type": "list",
        "member": {
          "shape": "SingleStruct"
        }
      },
      "StringType": {
        "type": "string"
      },
      "SingleStruct": {
        "type": "structure",
        "members": {
            "Foo": {
              "shape": "StringType"
            }
        }
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "ListMember": [{"Foo": "a"}, {"Foo": "b"}]
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"ListMember\": [{\"Foo\": \"a\"}, {\"Foo\": \"b\"}]}"
        }
      }
    ]
  },
  {
    "description": "Maps",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "MapMember": {
            "shape": "MapType"
          }
        }
      },
      "MapType": {
        "type": "map",
        "key": {
          "shape": "StringType"
        },
        "value": {
          "shape": "ListType"
        }
      },
      "ListType": {
        "type": "list",
        "member": {
          "shape": "IntegerType"
        }
      },
      "StringType": {
        "type": "string"
      },
      "IntegerType": {
        "type": "integer"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "MapMember": {
            "a": [1, 2],
            "b": [3, 4]
          }
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"MapMember\": {\"a\": [1, 2], \"b\": [3, 4]}}"
        }
      }
    ]
  },
  {
    "description": "Complex Map Values",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "MapMember": {
            "shape": "MapType"
          }
        }
      },
      "MapType": {
        "type": "map",
        "key": {
          "shape": "StringType"
        },
        "value": {
          "shape": "TimeType"
        }
      },
      "TimeType": {
        "type": "timestamp"
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "MapMember": {
            "a": 1398796238,
            "b": 1398796238
          }
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"MapMember\": {\"a\": 1398796238, \"b\": 1398796238}}"
        }
      }
    ]
  },
  {
    "description": "Ignores extra data",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "StrType": {
            "shape": "StrType"
          }
        }
      },
      "StrType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {},
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"foo\": \"bar\"}"
        }
      }
    ]
  },
  {
    "description": "Ignores undefined output",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {},
    "cases": [
      {
        "given": {
          "name": "OperationName"
        },
        "result": {},
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "OK"
        }
      }
    ]
  },
  {
    "description": "Supports header maps",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "AllHeaders": {
            "shape": "HeaderMap",
            "location": "headers"
          },
          "PrefixedHeaders": {
            "shape": "HeaderMap",
            "location": "headers",
            "locationName": "X-"
          }
        }
      },
      "HeaderMap": {
        "type": "map",
        "key": {
          "shape": "StringType"
        },
        "value": {
          "shape": "StringType"
        }
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "AllHeaders": {
            "Content-Length": "10",
            "x-Foo": "bar",
            "X-bam": "boo"
          },
          "PrefixedHeaders": {
            "Foo": "bar",
            "bam": "boo"
          }
        },
        "response": {
          "status_code": 200,
          "headers": {
            "Content-Length": "10",
            "x-Foo": "bar",
            "X-bam": "boo"
          },
          "body": "{}"
        }
      }
    ]
  },
  {
    "description": "JSON payload",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "payload": "Data",
        "members": {
          "Header": {
            "shape": "StringType",
            "location": "header",
            "locationName": "X-Foo"
          },
          "Data": {
            "shape": "BodyStructure"
          }
        }
      },
      "BodyStructure": {
        "type": "structure",
        "members": {
          "Foo": {
            "shape": "StringType"
          }
        }
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "Header": "baz",
          "Data": {
            "Foo": "abc"
          }
        },
        "response": {
          "status_code": 200,
          "headers": {
            "X-Foo": "baz"
          },
          "body": "{\"Foo\": \"abc\"}"
        }
      }
    ]
  },
  {
    "description": "Streaming payload",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "payload": "Stream",
        "members": {
          "Stream": {
            "shape": "Stream"
          }
        }
      },
      "Stream": {
        "type": "blob"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "Stream": "abc"
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "abc"
        }
      }
    ]
  },
  {
    "description": "JSON value trait",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "Attr": {
            "shape": "StringType",
              "jsonvalue": true,
              "location": "header",
              "locationName": "X-Amz-Foo"
          }
        }
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "Attr": {"Foo":"Bar"}
        },
        "response": {
          "status_code": 200,
          "headers": {"X-Amz-Foo": "eyJGb28iOiJCYXIifQ=="},
          "body": ""
        }
      }
    ]
  },
  {
    "description": "Modeled exceptions",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "ExceptionShape": {
        "exception": true,
        "type": "structure",
        "members": {
          "ImaHeader": {
            "shape": "HeaderShape"
          },
          "ImaHeaderLocation": {
            "shape": "HeaderShape",
            "locationName": "X-Foo"
          },
          "Status": {
            "shape": "StatusShape",
            "location": "statusCode"
          },
          "BodyMember": {
            "shape": "StringType"
          },
          "Message": {
            "shape": "StringType"
          }
        }
      },
      "OtherExceptionShape": {
        "exception": true,
        "type": "structure",
        "members": {
            "BodyMember": {
                "shape": "StringType"
            }
        }
      },
      "HeaderShape": {
        "type": "string",
        "location": "header"
      },
      "StatusShape": {
        "type": "integer"
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {
          "ImaHeader": "test",
          "ImaHeaderLocation": "abc",
          "Status": 400,
          "BodyMember": "mybody",
          "Message": "mymessage"
        },
        "errorCode": "ExceptionShape",
        "errorMessage": "mymessage",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc",
            "X-Amzn-Errortype": "ExceptionShape"
          },
          "body": "{\"BodyMember\": \"mybody\", \"Message\": \"mymessage\"}"
        }
      },
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {
          "ImaHeader": "test",
          "ImaHeaderLocation": "abc",
          "Status": 400,
          "BodyMember": "mybody",
          "Message": "mymessage"
        },
        "errorCode": "ExceptionShape",
        "errorMessage": "mymessage",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc"
          },
          "body": "{ \"code\": \"ExceptionShape\", \"BodyMember\": \"mybody\", \"Message\": \"mymessage\"}"
        }
      },
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {
          "ImaHeader": "test",
          "ImaHeaderLocation": "abc",
          "Status": 400,
          "BodyMember": "mybody",
          "Message": "mymessage"
        },
        "errorCode": "ExceptionShape",
        "errorMessage": "mymessage",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc",
            "X-Amzn-Errortype": "ExceptionShape"
          },
          "body": "{ \"code\": \"OtherExceptionShape\", \"BodyMember\": \"mybody\", \"Message\": \"mymessage\"}"
        }
      },
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {
            "BodyMember": "mybody"
        },
        "errorCode": "OtherExceptionShape",
        "errorMessage": "mymessage",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc",
            "X-Amzn-Errortype": "OtherExceptionShape"
          },
          "body": "{ \"BodyMember\": \"mybody\", \"Message\": \"mymessage\"}"
        }
      },
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {
            "BodyMember": "mybody"
        },
        "errorCode": "OtherExceptionShape",
        "errorMessage": "mymessage",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc"
          },
          "body": "{ \"code\": \"OtherExceptionShape\", \"BodyMember\": \"mybody\", \"Message\": \"mymessage\"}"
        }
      },
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {},
        "errorCode": "UndefinedShape",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc",
            "X-Amzn-Errortype": "UndefinedShape"
          },
          "body": "{ \"BodyMember\": \"mybody\"}"
        }
      },
      {
        "given": {
          "errors": [
            {"shape": "ExceptionShape"}
          ],
          "name": "OperationName"
        },
        "error": {},
        "errorCode": "UndefinedShape",
        "response": {
          "status_code": 400,
          "headers": {
            "ImaHeader": "test",
            "X-Foo": "abc"
          },
          "body": "{ \"code\": \"UndefinedShape\", \"BodyMember\": \"mybody\"}"
        }
      }
    ]
  },
  {
    "description": "Serializes document with standalone primitive as part of the JSON response payload with no escaping.",
    "metadata": {
      "protocol": "rest-json",
      "apiVersion": "2014-01-01"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
            "documentValue": {
                "shape": "DocumentType"
            }
        }
      },
      "DocumentType": {
          "type": "structure",
          "document": true
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": "foo"
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": \"foo\"}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": 123
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": 123}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": 1.2
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": 1.2}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": true
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": true}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": ""
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": \"\"}"
        }
      }
    ]
  },
  {
    "description": "Serializes inline documents as part of the JSON response payload with no escaping.",
    "metadata": {
      "protocol": "rest-json",
      "apiVersion": "2014-01-01"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
            "documentValue": {
                "shape": "DocumentType"
            }
        }
      },
      "DocumentType": {
          "type": "structure",
          "document": true
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": {"foo": "bar"}
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": {\"foo\": \"bar\"}}"
        }
      }
    ]
  },
  {
    "description": "Serializes aggregate documents as part of the JSON response payload with no escaping.",
    "metadata": {
      "protocol": "rest-json",
      "apiVersion": "2014-01-01"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
            "documentValue": {
                "shape": "DocumentType"
            }
        }
      },
      "DocumentType": {
          "type": "structure",
          "document": true
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": {
              "str": "test",
              "num": 123,
              "float": 1.2,
              "bool": true,
              "null": "",
              "document": {"foo": false},
              "list": ["myname", 321, 1.3, true, "", {"nested": true}, [200, ""]]
          }
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": {\"str\": \"test\", \"num\": 123, \"float\": 1.2, \"bool\": true, \"null\": \"\", \"document\": {\"foo\": false}, \"list\": [\"myname\", 321, 1.3, true, \"\", {\"nested\": true}, [200, \"\"]]}}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "documentValue": [
              "test",
              123,
              1.2,
              true,
              "",
              {"str": "myname", "num": 321, "float": 1.3, "bool": true, "null": "", "document": {"nested": true}, "list": [200, ""]},
              ["foo", false]
          ]
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"documentValue\": [\"test\", 123, 1.2, true, \"\", {\"str\": \"myname\", \"num\": 321, \"float\": 1.3, \"bool\": true, \"null\": \"\", \"document\": {\"nested\": true}, \"list\": [200, \"\"]}, [\"foo\", false]]}"
        }
      }
    ]
  },
  {
    "description": "Tagged Unions",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "UnionMember": {
            "shape": "UnionType"
          }
        }
      },
      "UnionType": {
        "type": "structure",
        "members": {
          "S":{"shape":"StringType"},
          "L": {"shape": "ListType"}
        },
        "union": true
      },
      "ListType": {
        "type": "list",
        "member": {
          "shape": "StringType"
        }
      },
      "StringType": {
        "type": "string"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "UnionMember": {"S":  "mystring"}
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"UnionMember\": {\"S\": \"mystring\"}}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "UnionMember": {"L":  ["a", "b"]}
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"UnionMember\": {\"L\": [\"a\", \"b\"]}}"
        }
      },
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "UnionMember": {"SDK_UNKNOWN_MEMBER":  {"name": "SomeUnknownMember"}}
        },
        "response": {
          "status_code": 200,
          "headers": {},
          "body": "{\"UnionMember\": {\"SomeUnknownMember\": \"foo\"}}"
        }
      }
    ]
  },
  {
    "description": "List in header",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "ListMember": {
            "shape": "ListShape",
            "location": "header",
            "locationName": "x-amz-list-member"
          }
        }
      },
      "ListShape": {
        "type": "list",
        "member": {
          "shape": "EnumType"
        }
      },
      "EnumType": {
        "type": "string",
        "enum": ["one", "two", "three"]
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "ListMember": ["one", "two", "three"]
        },
        "response": {
          "status_code": 200,
          "headers": {
              "x-amz-list-member": " one,two , three "
          },
          "body": ""
        }
      }
    ]
  },
  {
    "description": "Number in header",
    "metadata": {
      "protocol": "rest-json"
    },
    "shapes": {
      "OutputShape": {
        "type": "structure",
        "members": {
          "IntegerMember": {
            "shape": "IntegerShape",
            "location": "header",
            "locationName": "x-amz-integer-member"
          },
          "LongMember": {
            "shape": "LongShape",
            "location": "header",
            "locationName": "x-amz-long-member"
          }
        }
      },
      "IntegerShape": {
        "type": "integer"
      },
      "LongShape": {
        "type": "long"
      }
    },
    "cases": [
      {
        "given": {
          "output": {
            "shape": "OutputShape"
          },
          "name": "OperationName"
        },
        "result": {
          "IntegerMember": 123,
          "LongMember": 200
        },
        "response": {
          "status_code": 200,
          "headers": {
              "x-amz-integer-member": "123",
              "x-amz-long-member": "200"
          },
          "body": ""
        }
      }
    ]
  }
]
