{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2006-03-01",
    "checksumFormat":"md5",
    "endpointPrefix":"s3",
    "globalEndpoint":"s3.amazonaws.com",
    "protocol":"rest-xml",
    "serviceAbbreviation":"Amazon S3",
    "serviceFullName":"Amazon Simple Storage Service",
    "serviceId":"S3",
    "signatureVersion":"s3",
    "uid":"s3-2006-03-01"
  },
  "operations":{
    "DeleteObjects":{
      "name":"DeleteObjects",
      "http":{
        "method":"POST",
        "requestUri":"/{Bucket}?delete"
      },
      "input":{"shape":"DeleteObjectsRequest"},
      "output":{"shape":"DeleteObjectsOutput"},
      "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/multiobjectdeleteapi.html",
      "alias":"DeleteMultipleObjects",
      "httpChecksum":{
        "requestAlgorithmMember":"ChecksumAlgorithm",
        "requestChecksumRequired":true
      }
    },
    "GetObject":{
      "name":"GetObject",
      "http":{
        "method":"GET",
        "requestUri":"/{Bucket}/{Key+}"
      },
      "httpChecksum":{
        "requestValidationModeMember":"ChecksumMode",
        "responseAlgorithms":[
          "CRC32",
          "CRC32C",
          "SHA256",
          "SHA1"
        ]
      },
      "input":{"shape":"GetObjectRequest"},
      "output":{"shape":"GetObjectOutput"},
      "errors":[
        {"shape":"NoSuchKey"}
      ],
      "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html"
    },
    "PutObject":{
      "name":"PutObject",
      "http":{
        "method":"PUT",
        "requestUri":"/{Bucket}/{Key+}"
      },
      "input":{"shape":"PutObjectRequest"},
      "output":{"shape":"PutObjectOutput"},
      "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html",
      "httpChecksum":{
        "requestAlgorithmMember":"ChecksumAlgorithm",
        "requestChecksumRequired":false
      }
    },
    "PutBucketLogging":{
      "name":"PutBucketLogging",
      "http":{
        "method":"PUT",
        "requestUri":"/{Bucket}?logging"
      },
      "input":{"shape":"PutBucketLoggingRequest"},
      "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlogging.html",
      "httpChecksum":{
        "requestAlgorithmMember":"ChecksumAlgorithm",
        "requestChecksumRequired":true
      }
    },
    "PutBucketPolicy":{
      "name":"PutBucketPolicy",
      "http":{
        "method":"PUT",
        "requestUri":"/{Bucket}?policy"
      },
      "input":{"shape":"PutBucketPolicyRequest"},
      "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html",
      "httpChecksum":{
        "requestAlgorithmMember":"ChecksumAlgorithm",
        "requestChecksumRequired":true
      },
      "staticContextParams":{
        "UseS3ExpressControlEndpoint":{"value":true}
      }
    }
  },
  "shapes":{
    "Body":{"type":"blob"},
    "Bucket":{
      "type":"structure",
      "members":{
        "Name":{"shape":"BucketName"},
        "CreationDate":{"shape":"CreationDate"}
      }
    },
    "BucketLoggingStatus":{
      "type":"structure",
      "members":{
        "LoggingEnabled":{"shape":"LoggingEnabled"}
      }
    },
    "BucketName":{"type":"string"},
    "BypassGovernanceRetention":{"type":"boolean"},
    "ChecksumAlgorithm":{
      "type":"string",
      "enum":[
        "CRC32",
        "CRC32C",
        "SHA1",
        "SHA256"
      ]
    },
    "ChecksumCRC32":{"type":"string"},
    "ChecksumCRC32C":{"type":"string"},
    "ChecksumMode":{
      "type":"string",
      "enum":["ENABLED"]
    },
    "ChecksumSHA1":{"type":"string"},
    "ChecksumSHA256":{"type":"string"},
    "ContentMD5":{"type":"string"},
    "Delete":{
      "type":"structure",
      "required":["Objects"],
      "members":{
        "Objects":{
          "shape":"ObjectIdentifierList",
          "locationName":"Object"
        },
        "Quiet":{"shape":"Quiet"}
      }
    },
    "DeleteObjectsOutput":{
      "type":"structure",
      "members":{
        "Deleted":{"shape":"DeletedObjects"},
        "RequestCharged":{
          "shape":"RequestCharged",
          "location":"header",
          "locationName":"x-amz-request-charged"
        },
        "Errors":{
          "shape":"Errors",
          "locationName":"Error"
        }
      }
    },
    "DeleteObjectsRequest":{
      "type":"structure",
      "required":[
        "Bucket",
        "Delete"
      ],
      "members":{
        "Bucket":{
          "shape":"BucketName",
          "location":"uri",
          "locationName":"Bucket"
        },
        "Delete":{
          "shape":"Delete",
          "locationName":"Delete",
          "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}
        }
      },
      "payload":"Delete"
    },
    "GetObjectOutput":{
      "type":"structure",
      "members":{
        "Body":{
          "shape":"Body",
          "streaming":true
        }
      },
      "payload":"Body"
    },
    "GetObjectRequest":{
      "type":"structure",
      "required":[
        "Bucket",
        "Key"
      ],
      "members":{
        "Bucket":{
          "shape":"BucketName",
          "location":"uri",
          "locationName":"Bucket"
        },
        "Key":{
          "shape":"ObjectKey",
          "location":"uri",
          "locationName":"Key"
        },
        "ChecksumMode":{
          "shape":"ChecksumMode",
          "location":"header",
          "locationName":"x-amz-checksum-mode"
        }
      }
    },
    "IfMatch":{"type":"string"},
    "IfModifiedSince":{"type":"timestamp"},
    "LoggingEnabled":{
      "type":"structure",
      "required":[
        "TargetBucket",
        "TargetPrefix"
      ],
      "members":{
        "TargetBucket":{"shape":"TargetBucket"},
        "TargetGrants":{"shape":"TargetGrants"},
        "TargetPrefix":{"shape":"TargetPrefix"}
      }
    },
    "MFA":{"type":"string"},
    "ObjectIdentifier":{
      "type":"structure",
      "required":["Key"],
      "members":{
        "Key":{"shape":"ObjectKey"}
      }
    },
    "ObjectIdentifierList":{
      "type":"list",
      "member":{"shape":"ObjectIdentifier"},
      "flattened":true
    },
    "ObjectKey":{
      "type":"string",
      "min":1
    },
    "Policy":{"type":"string"},
    "PutBucketLoggingRequest":{
      "type":"structure",
      "required":[
        "Bucket",
        "BucketLoggingStatus"
      ],
      "members":{
        "Bucket":{
          "shape":"BucketName",
          "location":"uri",
          "locationName":"Bucket"
        },
        "BucketLoggingStatus":{
          "shape":"BucketLoggingStatus",
          "locationName":"BucketLoggingStatus",
          "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}
        },
        "ContentMD5":{
          "shape":"ContentMD5",
          "deprecated":true,
          "deprecatedMessage":"Content-MD5 header will now be automatically computed and injected in associated operation's Http request.",
          "location":"header",
          "locationName":"Content-MD5"
        }
      },
      "payload":"BucketLoggingStatus"
    },
    "PutBucketPolicyRequest":{
      "type":"structure",
      "required":[
        "Bucket",
        "Policy"
      ],
      "members":{
        "Bucket":{
          "shape":"BucketName",
          "contextParam":{"name":"Bucket"},
          "location":"uri",
          "locationName":"Bucket"
        },
        "ContentMD5":{
          "shape":"ContentMD5",
          "location":"header",
          "locationName":"Content-MD5"
        },
        "ChecksumAlgorithm":{
          "shape":"ChecksumAlgorithm",
          "location":"header",
          "locationName":"x-amz-sdk-checksum-algorithm"
        },
        "Policy":{"shape":"Policy"}
      },
      "payload":"Policy"
    },
    "PutObjectOutput": {
      "type": "structure",
      "members": {
        "ChecksumCRC32": {
          "shape": "ChecksumCRC32",
          "location": "header",
          "locationName": "x-amz-checksum-crc32"
        },
        "ChecksumCRC32C": {
          "shape": "ChecksumCRC32C",
          "location": "header",
          "locationName": "x-amz-checksum-crc32c"
        },
        "ChecksumSHA1": {
          "shape": "ChecksumSHA1",
          "location": "header",
          "locationName": "x-amz-checksum-sha1"
        },
        "ChecksumSHA256": {
          "shape": "ChecksumSHA256",
          "location": "header",
          "locationName": "x-amz-checksum-sha256"
        }
      }
    },
    "PutObjectRequest":{
      "type":"structure",
      "required":[
        "Bucket",
        "Key"
      ],
      "members":{
        "Body":{
          "shape":"Body",
          "streaming":true
        },
        "Bucket":{
          "shape":"BucketName",
          "location":"uri",
          "locationName":"Bucket"
        },
        "ChecksumAlgorithm":{
          "shape":"ChecksumAlgorithm",
          "location":"header",
          "locationName":"x-amz-sdk-checksum-algorithm"
        },
        "ChecksumCRC32":{
          "shape":"ChecksumCRC32",
          "location":"header",
          "locationName":"x-amz-checksum-crc32"
        },
        "ChecksumCRC32C":{
          "shape":"ChecksumCRC32C",
          "location":"header",
          "locationName":"x-amz-checksum-crc32c"
        },
        "ChecksumSHA1":{
          "shape":"ChecksumSHA1",
          "location":"header",
          "locationName":"x-amz-checksum-sha1"
        },
        "ChecksumSHA256":{
          "shape":"ChecksumSHA256",
          "location":"header",
          "locationName":"x-amz-checksum-sha256"
      }
      }
    },
    "Quiet":{"type":"boolean"},
    "RequestPayer":{
      "type":"string",
      "enum":["requester"]
    },
    "TargetBucket":{"type":"string"},
    "TargetGrant":{
      "type":"structure",
      "members":{
        "Grantee":{"shape":"Grantee"},
        "Permission":{"shape":"BucketLogsPermission"}
      }
    },
    "TargetGrants":{
      "type":"list",
      "member":{
        "shape":"TargetGrant",
        "locationName":"Grant"
      }
    },
    "TargetPrefix":{"type":"string"}
  }
}
