{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2016-03-11",
    "endpointPrefix":"restxml",
    "protocol":"rest-xml",
    "serviceAbbreviation":"AmazonProtocolRestXml",
    "serviceFullName":"AWS DR Tools Rest-XML Protocol Tests",
    "serviceId":"AmazonProtocolRestXml",
    "signatureVersion":"v4",
    "targetPrefix":"ProtocolTestsRestXmlService",
    "timestampFormat":"unixTimestamp"
  },
  "operations":{
    "AllTypes":{
      "name":"AllTypes",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/allTypes"
      },
      "input":{
        "shape":"AllTypesStructure",
        "locationName":"AllTypesRequest",
        "xmlNamespace":{"uri":"https://restxml/"}
      },
      "output":{"shape":"AllTypesStructure"},
      "errors":[
        {"shape":"EmptyModeledException"},
        {"shape":"ExplicitPayloadAndHeadersException"},
        {"shape":"ImplicitPayloadException"}
      ]
    },
    "DeleteOperation":{
      "name":"DeleteOperation",
      "http":{
        "method":"DELETE",
        "requestUri":"/2016-03-11/deleteOperation"
      }
    },
    "IdempotentOperation":{
      "name":"IdempotentOperation",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/idempotentOperation/{PathParam}"
      },
      "input":{"shape":"IdempotentOperationStructure"}
    },
    "MapOfStringToListOfStringInQueryParams":{
      "name":"MapOfStringToListOfStringInQueryParams",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/mapOfStringToListOfStringInQueryParams"
      },
      "input":{"shape":"MapOfStringToListOfStringInQueryParamsInput"}
    },
    "MembersInHeaders":{
      "name":"MembersInHeaders",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/membersInHeaders"
      },
      "input":{"shape":"MembersInHeadersInput"},
      "output":{"shape":"MembersInHeadersInput"}
    },
    "MembersInQueryParams":{
      "name":"MembersInQueryParams",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/membersInQueryParams?StaticQueryParam=foo"
      },
      "input":{"shape":"MembersInQueryParamsInput"}
    },
    "MultiLocationOperation":{
      "name":"MultiLocationOperation",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/multiLocationOperation/{PathParam}"
      },
      "input":{
        "shape":"MultiLocationOperationInput",
        "locationName":"MultiLocationOperationRequest",
        "xmlNamespace":{"uri":"https://restxml/"}
      }
    },
    "OperationWithExplicitPayloadBlob":{
      "name":"OperationWithExplicitPayloadBlob",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/operationWithExplicitPayloadBlob"
      },
      "input":{"shape":"OperationWithExplicitPayloadBlobInput"},
      "output":{"shape":"OperationWithExplicitPayloadBlobInput"}
    },
    "OperationWithExplicitPayloadString":{
      "name":"OperationWithExplicitPayloadString",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/operationWithExplicitPayloadString"
      },
      "input":{"shape":"OperationWithExplicitPayloadStringInput"},
      "output":{"shape":"OperationWithExplicitPayloadStringInput"}
    },
    "OperationWithGreedyLabel":{
      "name":"OperationWithGreedyLabel",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/operationWithGreedyLabel/{NonGreedyPathParam}/{GreedyPathParam+}"
      },
      "input":{"shape":"OperationWithGreedyLabelInput"}
    },
    "OperationWithModeledContentType":{
      "name":"OperationWithModeledContentType",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/operationWithModeledContentType"
      },
      "input":{"shape":"OperationWithModeledContentTypeInput"}
    },
    "QueryParamWithoutValue":{
      "name":"QueryParamWithoutValue",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/queryParamWithoutValue?param"
      },
      "input":{"shape":"QueryParamWithoutValueInput"}
    },
    "RestXmlTypes":{
      "name":"RestXmlTypes",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/restXmlTypes"
      },
      "input":{
        "shape":"RestXmlTypesStructure",
        "locationName":"RestXmlTypesRequest",
        "xmlNamespace":{"uri":"https://restxml/"}
      },
      "output":{"shape":"RestXmlTypesOutput"}
    },
    "EventStreamOperation": {
      "name": "EventStreamOperation",
      "http": {
        "method": "POST",
        "requestUri": "/2016-03-11/eventStreamOperation"
      },
      "input": {
        "shape": "EventStreamOperationRequest"
      },
      "output": {
        "shape": "EventStreamOutput"
      }
    }
  },
  "shapes":{
    "AllTypesStructure":{
      "type":"structure",
      "members":{
        "stringMember":{"shape":"String"},
        "integerMember":{"shape":"Integer"},
        "booleanMember":{"shape":"Boolean"},
        "floatMember":{"shape":"Float"},
        "doubleMember":{"shape":"Double"},
        "longMember":{"shape":"Long"},
        "shortMember":{"shape":"Short"},
        "simpleStructMember":{"shape":"SimpleStruct"},
        "simpleList":{"shape":"ListOfStrings"},
        "listOfStructs":{"shape":"ListOfSimpleStructs"},
        "mapOfStringToString":{"shape":"MapOfStringToString"},
        "timestampMember":{"shape":"Timestamp"},
        "structWithNestedTimestampMember":{"shape":"StructWithTimestamp"},
        "blobArg":{"shape":"BlobType"},
        "blobMap":{"shape":"BlobMapType"},
        "listOfBlobs":{"shape":"ListOfBlobsType"}
      }
    },
    "BlobMapType":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"BlobType"}
    },
    "BlobType":{"type":"blob"},
    "Boolean":{"type":"boolean"},
    "Double":{"type":"double"},
    "EmptyModeledException":{
      "type":"structure",
      "members":{
      },
      "exception":true
    },
    "FlattenedListOfStrings":{
      "type":"list",
      "member":{"shape":"String"},
      "flattened":true
    },
    "FlattenedListOfStructs":{
      "type":"list",
      "member":{"shape":"SimpleStruct"},
      "flattened":true
    },
    "FlattenedListWithLocation":{
      "type":"list",
      "member":{
        "shape":"String",
        "locationName":"item"
      },
      "flattened":true
    },
    "FlattenedMap":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"},
      "flattened":true
    },
    "FlattenedMapWithLocation":{
      "type":"map",
      "key":{
        "shape":"String",
        "locationName":"thekey"
      },
      "value":{
        "shape":"String",
        "locationName":"thevalue"
      },
      "flattened":true
    },
    "Float":{"type":"float"},
    "IdempotentOperationStructure":{
      "type":"structure",
      "required":["PathIdempotentToken"],
      "members":{
        "PathIdempotentToken":{
          "shape":"String",
          "idempotencyToken":true,
          "location":"uri",
          "locationName":"PathParam"
        },
        "QueryIdempotentToken":{
          "shape":"String",
          "idempotencyToken":true,
          "location":"querystring",
          "locationName":"QueryParam"
        },
        "HeaderIdempotentToken":{
          "shape":"String",
          "idempotencyToken":true,
          "location":"header",
          "locationName":"x-amz-idempotent-header"
        }
      }
    },
    "Integer":{"type":"integer"},
    "ListOfBlobsType":{
      "type":"list",
      "member":{"shape":"BlobType"}
    },
    "ListOfSimpleStructs":{
      "type":"list",
      "member":{"shape":"SimpleStruct"}
    },
    "ListOfStrings":{
      "type":"list",
      "member":{"shape":"String"}
    },
    "Long":{"type":"long"},
    "Short":{"type":"short"},
    "MapOfStringToListOfStringInQueryParamsInput":{
      "type":"structure",
      "members":{
        "MapOfStringToListOfStrings":{
          "shape":"MapOfStringToListOfStrings",
          "location":"querystring"
        }
      }
    },
    "MapOfStringToListOfStrings":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"ListOfStrings"}
    },
    "MapOfStringToString":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"}
    },
    "MembersInHeadersInput":{
      "type":"structure",
      "members":{
        "StringMember":{
          "shape":"String",
          "location":"header",
          "locationName":"x-amz-string"
        },
        "ListOfStringsMember":{
          "shape":"ListOfStrings",
          "location":"header",
          "locationName":"x-amz-string-list"
        },
        "BooleanMember":{
          "shape":"Boolean",
          "location":"header",
          "locationName":"x-amz-boolean"
        },
        "IntegerMember":{
          "shape":"Integer",
          "location":"header",
          "locationName":"x-amz-integer"
        },
        "LongMember":{
          "shape":"Long",
          "location":"header",
          "locationName":"x-amz-long"
        },
        "ShortMember":{
          "shape":"Short",
          "location":"header",
          "locationName":"x-amz-short"
        },
        "FloatMember":{
          "shape":"Float",
          "location":"header",
          "locationName":"x-amz-float"
        },
        "DoubleMember":{
          "shape":"Double",
          "location":"header",
          "locationName":"x-amz-double"
        },
        "TimestampMember":{
          "shape":"Timestamp",
          "location":"header",
          "locationName":"x-amz-timestamp"
        },
        "MetadataMember":{
          "shape":"Metadata",
          "location":"header",
          "locationName":"x-amz-meta-"
        }
      }
    },
    "MembersInQueryParamsInput":{
      "type":"structure",
      "members":{
        "StringQueryParam":{
          "shape":"String",
          "location":"querystring",
          "locationName":"String"
        },
        "BooleanQueryParam":{
          "shape":"Boolean",
          "location":"querystring",
          "locationName":"Boolean"
        },
        "IntegerQueryParam":{
          "shape":"Integer",
          "location":"querystring",
          "locationName":"Integer"
        },
        "LongQueryParam":{
          "shape":"Long",
          "location":"querystring",
          "locationName":"Long"
        },
        "ShortQueryParam":{
          "shape":"Short",
          "location":"querystring",
          "locationName":"Short"
        },
        "FloatQueryParam":{
          "shape":"Float",
          "location":"querystring",
          "locationName":"Float"
        },
        "DoubleQueryParam":{
          "shape":"Double",
          "location":"querystring",
          "locationName":"Double"
        },
        "TimestampQueryParam":{
          "shape":"Timestamp",
          "location":"querystring",
          "locationName":"Timestamp"
        },
        "ListOfStrings":{
          "shape":"ListOfStrings",
          "location":"querystring",
          "locationName":"item"
        },
        "MapOfStringToString":{
          "shape":"MapOfStringToString",
          "location":"querystring"
        }
      }
    },
    "MultiLocationOperationInput":{
      "type":"structure",
      "required":["PathParam"],
      "members":{
        "PathParam":{
          "shape":"String",
          "location":"uri",
          "locationName":"PathParam"
        },
        "QueryParamOne":{
          "shape":"String",
          "location":"querystring",
          "locationName":"QueryParamOne"
        },
        "QueryParamTwo":{
          "shape":"String",
          "location":"querystring",
          "locationName":"QueryParamTwo"
        },
        "StringHeaderMember":{
          "shape":"String",
          "location":"header",
          "locationName":"x-amz-header-string"
        },
        "TimestampHeaderMember":{
          "shape":"Timestamp",
          "location":"header",
          "locationName":"x-amz-timearg"
        },
        "PayloadStructParam":{"shape":"PayloadStructType"}
      }
    },
    "NonFlattenedListWithLocation":{
      "type":"list",
      "member":{
        "shape":"String",
        "locationName":"item"
      }
    },
    "NonFlattenedMapWithLocation":{
      "type":"map",
      "key":{
        "shape":"String",
        "locationName":"thekey"
      },
      "value":{
        "shape":"String",
        "locationName":"thevalue"
      }
    },
    "OperationWithExplicitPayloadBlobInput":{
      "type":"structure",
      "members":{
        "PayloadMember":{"shape":"BlobType"}
      },
      "payload":"PayloadMember"
    },
    "OperationWithExplicitPayloadStringInput":{
      "type":"structure",
      "members":{
        "PayloadMember":{"shape":"String"}
      },
      "payload":"PayloadMember"
    },
    "OperationWithGreedyLabelInput":{
      "type":"structure",
      "required":[
        "NonGreedyPathParam",
        "GreedyPathParam"
      ],
      "members":{
        "NonGreedyPathParam":{
          "shape":"String",
          "location":"uri",
          "locationName":"NonGreedyPathParam"
        },
        "GreedyPathParam":{
          "shape":"String",
          "location":"uri",
          "locationName":"GreedyPathParam"
        }
      }
    },
    "OperationWithModeledContentTypeInput":{
      "type":"structure",
      "members":{
        "ContentType":{
          "shape":"String",
          "location":"header",
          "locationName":"Content-Type"
        }
      }
    },
    "PayloadStructType":{
      "type":"structure",
      "members":{
        "PayloadMemberOne":{"shape":"String"},
        "PayloadMemberTwo":{"shape":"String"}
      }
    },
    "QueryParamWithoutValueInput":{
      "type":"structure",
      "members":{
      }
    },
    "RestXmlTypesOutput":{
      "type":"structure",
      "members":{
        "FlattenedListOfStrings":{"shape":"FlattenedListOfStrings"},
        "NonFlattenedListWithLocation":{"shape":"NonFlattenedListWithLocation"},
        "FlattenedListOfStructs":{"shape":"FlattenedListOfStructs"},
        "FlattenedListWithLocation":{"shape":"FlattenedListWithLocation"},
        "FlattenedMap":{"shape":"FlattenedMap"},
        "FlattenedMapWithLocation":{
          "shape":"FlattenedMapWithLocation",
          "locationName":"flatmap"
        },
        "NonFlattenedMapWithLocation":{
          "shape":"NonFlattenedMapWithLocation",
          "locationName":"themap"
        },
        "TimestampMemberInHeader":{
          "shape":"Timestamp",
          "location":"header",
          "locationName":"x-amz-timearg"
        }
      }
    },
    "RestXmlTypesStructure":{
      "type":"structure",
      "members":{
        "FlattenedListOfStrings":{"shape":"FlattenedListOfStrings"},
        "NonFlattenedListWithLocation":{"shape":"NonFlattenedListWithLocation"},
        "FlattenedListOfStructs":{"shape":"FlattenedListOfStructs"},
        "FlattenedListWithLocation":{"shape":"FlattenedListWithLocation"},
        "FlattenedMap":{"shape":"FlattenedMap"},
        "FlattenedMapWithLocation":{
          "shape":"FlattenedMapWithLocation",
          "locationName":"flatmap"
        },
        "NonFlattenedMapWithLocation":{
          "shape":"NonFlattenedMapWithLocation",
          "locationName":"themap"
        },
        "StringMemberInQuery":{
          "shape":"String",
          "location":"querystring",
          "locationName":"stringMemberInQuery"
        },
        "TimestampMemberInHeader":{
          "shape":"Timestamp",
          "location":"header",
          "locationName":"x-amz-timearg"
        },
        "ListOfStringsInQuery":{
          "shape":"ListOfStrings",
          "location":"querystring",
          "locationName":"listOfStrings"
        },
        "MapOfStringToStringInQuery":{
          "shape":"MapOfStringToString",
          "location":"querystring"
        }
      }
    },
    "SimpleStruct":{
      "type":"structure",
      "members":{
        "StringMember":{"shape":"String"}
      }
    },
    "String":{"type":"string"},
    "StructWithTimestamp":{
      "type":"structure",
      "members":{
        "NestedTimestamp":{"shape":"Timestamp"}
      }
    },
    "ImplicitPayloadException":{
      "type":"structure",
      "members":{
        "StringMember":{"shape":"String"},
        "IntegerMember":{"shape":"Integer"},
        "LongMember":{"shape":"Long"},
        "ShortMember":{"shape":"Short"},
        "DoubleMember":{"shape":"Double"},
        "FloatMember":{"shape":"Float"},
        "TimestampMember":{"shape":"Timestamp"},
        "BooleanMember":{"shape":"Boolean"},
        "BlobMember":{"shape":"BlobType"},
        "ListMember":{"shape":"ListOfStrings"},
        "MapMember":{"shape":"MapOfStringToString"},
        "SimpleStructMember":{"shape":"SimpleStruct"}
      },
      "exception":true
    },
    "ExplicitPayloadAndHeadersException":{
      "type":"structure",
      "members":{
        "StringHeader":{
          "shape":"String",
          "location":"header",
          "locationName":"x-amz-string"
        },
        "IntegerHeader":{
          "shape":"Integer",
          "location":"header",
          "locationName":"x-amz-integer"
        },
        "LongHeader":{
          "shape":"Long",
          "location":"header",
          "locationName":"x-amz-long"
        },
        "ShortHeader":{
          "shape":"Short",
          "location":"header",
          "locationName":"x-amz-short"
        },
        "DoubleHeader":{
          "shape":"Double",
          "location":"header",
          "locationName":"x-amz-double"
        },
        "FloatHeader":{
          "shape":"Float",
          "location":"header",
          "locationName":"x-amz-float"
        },
        "TimestampHeader":{
          "shape":"Timestamp",
          "location":"header",
          "locationName":"x-amz-timestamp"
        },
        "BooleanHeader":{
          "shape":"Boolean",
          "location":"header",
          "locationName":"x-amz-boolean"
        },
        "PayloadMember":{"shape":"SimpleStruct"}
      },
      "exception":true,
      "payload":"PayloadMember"
    },
    "Timestamp":{"type":"timestamp"},
    "Metadata":{
      "type":"map",
      "key":{"shape":"MetadataKey"},
      "value":{"shape":"MetadataValue"}
    },
    "MetadataKey":{"type":"string"},
    "MetadataValue":{"type":"string"},
    "EventStreamOperationRequest": {
      "type": "structure",
      "members": {
      }
    },
    "EventStreamOutput": {
      "type": "structure",
      "required": [
        "EventStream"
      ],
      "members": {
        "HeaderMember": {
          "shape": "String",
          "location": "header",
          "locationName": "Header-Member"
        },
        "EventStream": {
          "shape": "EventStream"
        }
      }
    },
    "EventStream": {
      "type": "structure",
      "members": {
        "EventPayloadEvent": {
          "shape": "EventPayloadEvent"
        },
        "NonEventPayloadEvent": {
          "shape": "NonEventPayloadEvent"
        },
        "SecondEventPayloadEvent": {
          "shape": "EventPayloadEvent"
        }
      },
      "eventstream": true
    },
    "EventPayloadEvent": {
      "type": "structure",
      "members": {
        "Foo": {
          "shape": "String",
          "eventpayload": true
        }
      },
      "event": true
    },
    "NonEventPayloadEvent": {
      "type": "structure",
      "members": {
        "Bar": {
          "shape": "String"
        }
      },
      "event": true
    }
  }
}
