{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2016-03-11",
    "endpointPrefix":"query",
    "protocol":"query",
    "serviceAbbreviation":"AmazonProtocolQuery",
    "serviceFullName":"AWS DR Tools Query Protocol Tests",
    "serviceId":"AmazonProtocolQuery",
    "signatureVersion":"v4",
    "timestampFormat":"unixTimestamp"
  },
  "operations":{
    "AllTypes":{
      "name":"AllTypes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"AllTypesStructure"},
      "output":{
        "shape":"AllTypesStructure",
        "resultWrapper":"AllTypesResult"
      },
      "errors":[
        {"shape":"EmptyModeledException"},
        {"shape":"ImplicitPayloadException"}
      ]
    },
    "IdempotentOperation":{
      "name":"IdempotentOperation",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"IdempotentOperationStructure"},
      "output":{
        "shape":"IdempotentOperationStructure",
        "resultWrapper":"IdempotentOperationResult"
      }
    },
    "QueryTypes":{
      "name":"QueryTypes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"QueryTypesInput"},
      "output":{
        "shape":"QueryTypesInput",
        "resultWrapper":"QueryTypesResult"
      }
    },
    "StreamingInputOperation":{
      "name":"StreamingInputOperation",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StructureWithStreamingMember"}
    },
    "StreamingOutputOperation":{
      "name":"StreamingOutputOperation",
      "http":{
        "method":"POST",
        "requestUri":"/2016-03-11/streamingOutputOperation"
      },
      "output":{"shape":"StructureWithStreamingMember"}
    }
  },
  "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"},
        "ListOfTimeStamp": {"shape": "ListOfTimeStamp"},
        "MapOfTimeStamp": {"shape": "MapOfTimeStamp"}
      }
    },
    "BlobMapType":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"BlobType"}
    },
    "BlobType":{"type":"blob"},
    "Boolean":{"type":"boolean"},
    "Double":{"type":"double"},
    "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",
      "members":{
        "IdempotencyToken":{
          "shape":"String",
          "idempotencyToken":true
        }
      }
    },
    "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"},
    "MapOfStringToString":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"}
    },
    "NonFlattenedListWithLocation":{
      "type":"list",
      "member":{
        "shape":"String",
        "locationName":"item"
      }
    },
    "NonFlattenedMapWithLocation":{
      "type":"map",
      "key":{
        "shape":"String",
        "locationName":"thekey"
      },
      "value":{
        "shape":"String",
        "locationName":"thevalue"
      }
    },
    "QueryTypesInput":{
      "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"
        }
      }
    },
    "SimpleStruct":{
      "type":"structure",
      "members":{
        "StringMember":{"shape":"String"}
      }
    },
    "String":{"type":"string"},
    "StructWithTimestamp":{
      "type":"structure",
      "members":{
        "NestedTimestamp":{"shape":"Timestamp"}
      }
    },
    "ListOfTimeStamp":{
      "type":"list",
      "member":{"shape":"UnixTimestamp","locationName":"item"}
    },
    "MapOfTimeStamp":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"UnixTimestamp"}
    },
    "UnixTimestamp":{
      "type":"timestamp",
      "timestampFormat":"unixTimestamp"
    },
    "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
    },
    "EmptyModeledException":{
      "type":"structure",
      "members":{
      },
      "exception":true
    },
    "Timestamp":{"type":"timestamp"},
    "StructureWithStreamingMember":{
      "type":"structure",
      "members":{
        "StreamingMember":{"shape":"StreamType"}
      },
      "payload":"StreamingMember"
    },
    "StreamType":{
      "type":"blob",
      "streaming":true,
      "requiresLength":true
    }
  }
}
