'2.0', 'metadata' => [ 'apiVersion' => '2019-11-02', 'endpointPrefix' => 'ebs', 'jsonVersion' => '1.1', 'protocol' => 'rest-json', 'serviceAbbreviation' => 'Amazon EBS', 'serviceFullName' => 'Amazon Elastic Block Store', 'serviceId' => 'EBS', 'signatureVersion' => 'v4', 'uid' => 'ebs-2019-11-02', ], 'operations' => [ 'CompleteSnapshot' => [ 'name' => 'CompleteSnapshot', 'http' => [ 'method' => 'POST', 'requestUri' => '/snapshots/completion/{snapshotId}', 'responseCode' => 202, ], 'input' => [ 'shape' => 'CompleteSnapshotRequest', ], 'output' => [ 'shape' => 'CompleteSnapshotResponse', ], 'errors' => [ [ 'shape' => 'AccessDeniedException', ], [ 'shape' => 'ValidationException', ], [ 'shape' => 'ResourceNotFoundException', ], [ 'shape' => 'RequestThrottledException', ], [ 'shape' => 'ServiceQuotaExceededException', ], [ 'shape' => 'InternalServerException', ], ], ], 'GetSnapshotBlock' => [ 'name' => 'GetSnapshotBlock', 'http' => [ 'method' => 'GET', 'requestUri' => '/snapshots/{snapshotId}/blocks/{blockIndex}', ], 'input' => [ 'shape' => 'GetSnapshotBlockRequest', ], 'output' => [ 'shape' => 'GetSnapshotBlockResponse', ], 'errors' => [ [ 'shape' => 'AccessDeniedException', ], [ 'shape' => 'ValidationException', ], [ 'shape' => 'ResourceNotFoundException', ], [ 'shape' => 'RequestThrottledException', ], [ 'shape' => 'ServiceQuotaExceededException', ], [ 'shape' => 'InternalServerException', ], ], ], 'ListChangedBlocks' => [ 'name' => 'ListChangedBlocks', 'http' => [ 'method' => 'GET', 'requestUri' => '/snapshots/{secondSnapshotId}/changedblocks', ], 'input' => [ 'shape' => 'ListChangedBlocksRequest', ], 'output' => [ 'shape' => 'ListChangedBlocksResponse', ], 'errors' => [ [ 'shape' => 'AccessDeniedException', ], [ 'shape' => 'ValidationException', ], [ 'shape' => 'ResourceNotFoundException', ], [ 'shape' => 'RequestThrottledException', ], [ 'shape' => 'ServiceQuotaExceededException', ], [ 'shape' => 'InternalServerException', ], ], ], 'ListSnapshotBlocks' => [ 'name' => 'ListSnapshotBlocks', 'http' => [ 'method' => 'GET', 'requestUri' => '/snapshots/{snapshotId}/blocks', ], 'input' => [ 'shape' => 'ListSnapshotBlocksRequest', ], 'output' => [ 'shape' => 'ListSnapshotBlocksResponse', ], 'errors' => [ [ 'shape' => 'AccessDeniedException', ], [ 'shape' => 'ValidationException', ], [ 'shape' => 'ResourceNotFoundException', ], [ 'shape' => 'RequestThrottledException', ], [ 'shape' => 'ServiceQuotaExceededException', ], [ 'shape' => 'InternalServerException', ], ], ], 'PutSnapshotBlock' => [ 'name' => 'PutSnapshotBlock', 'http' => [ 'method' => 'PUT', 'requestUri' => '/snapshots/{snapshotId}/blocks/{blockIndex}', 'responseCode' => 201, ], 'input' => [ 'shape' => 'PutSnapshotBlockRequest', ], 'output' => [ 'shape' => 'PutSnapshotBlockResponse', ], 'errors' => [ [ 'shape' => 'AccessDeniedException', ], [ 'shape' => 'ValidationException', ], [ 'shape' => 'ResourceNotFoundException', ], [ 'shape' => 'RequestThrottledException', ], [ 'shape' => 'ServiceQuotaExceededException', ], [ 'shape' => 'InternalServerException', ], ], 'authtype' => 'v4-unsigned-body', ], 'StartSnapshot' => [ 'name' => 'StartSnapshot', 'http' => [ 'method' => 'POST', 'requestUri' => '/snapshots', 'responseCode' => 201, ], 'input' => [ 'shape' => 'StartSnapshotRequest', ], 'output' => [ 'shape' => 'StartSnapshotResponse', ], 'errors' => [ [ 'shape' => 'AccessDeniedException', ], [ 'shape' => 'ValidationException', ], [ 'shape' => 'RequestThrottledException', ], [ 'shape' => 'ResourceNotFoundException', ], [ 'shape' => 'ServiceQuotaExceededException', ], [ 'shape' => 'InternalServerException', ], [ 'shape' => 'ConcurrentLimitExceededException', ], [ 'shape' => 'ConflictException', ], ], ], ], 'shapes' => [ 'AccessDeniedException' => [ 'type' => 'structure', 'required' => [ 'Reason', ], 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], 'Reason' => [ 'shape' => 'AccessDeniedExceptionReason', ], ], 'error' => [ 'httpStatusCode' => 403, ], 'exception' => true, ], 'AccessDeniedExceptionReason' => [ 'type' => 'string', 'enum' => [ 'UNAUTHORIZED_ACCOUNT', 'DEPENDENCY_ACCESS_DENIED', ], ], 'Block' => [ 'type' => 'structure', 'members' => [ 'BlockIndex' => [ 'shape' => 'BlockIndex', ], 'BlockToken' => [ 'shape' => 'BlockToken', ], ], ], 'BlockData' => [ 'type' => 'blob', 'sensitive' => true, 'streaming' => true, ], 'BlockIndex' => [ 'type' => 'integer', 'min' => 0, ], 'BlockSize' => [ 'type' => 'integer', ], 'BlockToken' => [ 'type' => 'string', 'max' => 256, 'pattern' => '^[A-Za-z0-9+/=]+$', ], 'Blocks' => [ 'type' => 'list', 'member' => [ 'shape' => 'Block', ], 'sensitive' => true, ], 'Boolean' => [ 'type' => 'boolean', ], 'ChangedBlock' => [ 'type' => 'structure', 'members' => [ 'BlockIndex' => [ 'shape' => 'BlockIndex', ], 'FirstBlockToken' => [ 'shape' => 'BlockToken', ], 'SecondBlockToken' => [ 'shape' => 'BlockToken', ], ], 'sensitive' => true, ], 'ChangedBlocks' => [ 'type' => 'list', 'member' => [ 'shape' => 'ChangedBlock', ], ], 'ChangedBlocksCount' => [ 'type' => 'integer', 'min' => 0, ], 'Checksum' => [ 'type' => 'string', 'max' => 64, 'pattern' => '^[A-Za-z0-9+/=]+$', ], 'ChecksumAggregationMethod' => [ 'type' => 'string', 'enum' => [ 'LINEAR', ], 'max' => 32, 'pattern' => '^[A-Za-z0-9]+$', ], 'ChecksumAlgorithm' => [ 'type' => 'string', 'enum' => [ 'SHA256', ], 'max' => 32, 'pattern' => '^[A-Za-z0-9]+$', ], 'CompleteSnapshotRequest' => [ 'type' => 'structure', 'required' => [ 'SnapshotId', 'ChangedBlocksCount', ], 'members' => [ 'SnapshotId' => [ 'shape' => 'SnapshotId', 'location' => 'uri', 'locationName' => 'snapshotId', ], 'ChangedBlocksCount' => [ 'shape' => 'ChangedBlocksCount', 'location' => 'header', 'locationName' => 'x-amz-ChangedBlocksCount', ], 'Checksum' => [ 'shape' => 'Checksum', 'location' => 'header', 'locationName' => 'x-amz-Checksum', ], 'ChecksumAlgorithm' => [ 'shape' => 'ChecksumAlgorithm', 'location' => 'header', 'locationName' => 'x-amz-Checksum-Algorithm', ], 'ChecksumAggregationMethod' => [ 'shape' => 'ChecksumAggregationMethod', 'location' => 'header', 'locationName' => 'x-amz-Checksum-Aggregation-Method', ], ], ], 'CompleteSnapshotResponse' => [ 'type' => 'structure', 'members' => [ 'Status' => [ 'shape' => 'Status', ], ], ], 'ConcurrentLimitExceededException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], ], 'error' => [ 'httpStatusCode' => 400, ], 'exception' => true, ], 'ConflictException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], ], 'error' => [ 'httpStatusCode' => 503, ], 'exception' => true, ], 'DataLength' => [ 'type' => 'integer', ], 'Description' => [ 'type' => 'string', 'max' => 255, 'pattern' => '^[\\S\\s]+$', ], 'ErrorMessage' => [ 'type' => 'string', 'max' => 256, ], 'GetSnapshotBlockRequest' => [ 'type' => 'structure', 'required' => [ 'SnapshotId', 'BlockIndex', 'BlockToken', ], 'members' => [ 'SnapshotId' => [ 'shape' => 'SnapshotId', 'location' => 'uri', 'locationName' => 'snapshotId', ], 'BlockIndex' => [ 'shape' => 'BlockIndex', 'location' => 'uri', 'locationName' => 'blockIndex', ], 'BlockToken' => [ 'shape' => 'BlockToken', 'location' => 'querystring', 'locationName' => 'blockToken', ], ], ], 'GetSnapshotBlockResponse' => [ 'type' => 'structure', 'members' => [ 'DataLength' => [ 'shape' => 'DataLength', 'location' => 'header', 'locationName' => 'x-amz-Data-Length', ], 'BlockData' => [ 'shape' => 'BlockData', ], 'Checksum' => [ 'shape' => 'Checksum', 'location' => 'header', 'locationName' => 'x-amz-Checksum', ], 'ChecksumAlgorithm' => [ 'shape' => 'ChecksumAlgorithm', 'location' => 'header', 'locationName' => 'x-amz-Checksum-Algorithm', ], ], 'payload' => 'BlockData', ], 'IdempotencyToken' => [ 'type' => 'string', 'max' => 255, 'pattern' => '^[\\S]+$', ], 'InternalServerException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], ], 'error' => [ 'httpStatusCode' => 500, ], 'exception' => true, 'fault' => true, ], 'KmsKeyArn' => [ 'type' => 'string', 'max' => 2048, 'min' => 1, 'pattern' => 'arn:aws[a-z\\-]*:kms:.*:[0-9]{12}:key/.*', 'sensitive' => true, ], 'ListChangedBlocksRequest' => [ 'type' => 'structure', 'required' => [ 'SecondSnapshotId', ], 'members' => [ 'FirstSnapshotId' => [ 'shape' => 'SnapshotId', 'location' => 'querystring', 'locationName' => 'firstSnapshotId', ], 'SecondSnapshotId' => [ 'shape' => 'SnapshotId', 'location' => 'uri', 'locationName' => 'secondSnapshotId', ], 'NextToken' => [ 'shape' => 'PageToken', 'location' => 'querystring', 'locationName' => 'pageToken', ], 'MaxResults' => [ 'shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults', ], 'StartingBlockIndex' => [ 'shape' => 'BlockIndex', 'location' => 'querystring', 'locationName' => 'startingBlockIndex', ], ], ], 'ListChangedBlocksResponse' => [ 'type' => 'structure', 'members' => [ 'ChangedBlocks' => [ 'shape' => 'ChangedBlocks', ], 'ExpiryTime' => [ 'shape' => 'TimeStamp', ], 'VolumeSize' => [ 'shape' => 'VolumeSize', ], 'BlockSize' => [ 'shape' => 'BlockSize', ], 'NextToken' => [ 'shape' => 'PageToken', ], ], ], 'ListSnapshotBlocksRequest' => [ 'type' => 'structure', 'required' => [ 'SnapshotId', ], 'members' => [ 'SnapshotId' => [ 'shape' => 'SnapshotId', 'location' => 'uri', 'locationName' => 'snapshotId', ], 'NextToken' => [ 'shape' => 'PageToken', 'location' => 'querystring', 'locationName' => 'pageToken', ], 'MaxResults' => [ 'shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults', ], 'StartingBlockIndex' => [ 'shape' => 'BlockIndex', 'location' => 'querystring', 'locationName' => 'startingBlockIndex', ], ], ], 'ListSnapshotBlocksResponse' => [ 'type' => 'structure', 'members' => [ 'Blocks' => [ 'shape' => 'Blocks', ], 'ExpiryTime' => [ 'shape' => 'TimeStamp', ], 'VolumeSize' => [ 'shape' => 'VolumeSize', ], 'BlockSize' => [ 'shape' => 'BlockSize', ], 'NextToken' => [ 'shape' => 'PageToken', ], ], ], 'MaxResults' => [ 'type' => 'integer', 'max' => 10000, 'min' => 100, ], 'OwnerId' => [ 'type' => 'string', 'max' => 24, 'min' => 1, 'pattern' => '\\S+', ], 'PageToken' => [ 'type' => 'string', 'max' => 256, 'pattern' => '^[A-Za-z0-9+/=]+$', ], 'Progress' => [ 'type' => 'integer', 'max' => 100, 'min' => 0, ], 'PutSnapshotBlockRequest' => [ 'type' => 'structure', 'required' => [ 'SnapshotId', 'BlockIndex', 'BlockData', 'DataLength', 'Checksum', 'ChecksumAlgorithm', ], 'members' => [ 'SnapshotId' => [ 'shape' => 'SnapshotId', 'location' => 'uri', 'locationName' => 'snapshotId', ], 'BlockIndex' => [ 'shape' => 'BlockIndex', 'location' => 'uri', 'locationName' => 'blockIndex', ], 'BlockData' => [ 'shape' => 'BlockData', ], 'DataLength' => [ 'shape' => 'DataLength', 'location' => 'header', 'locationName' => 'x-amz-Data-Length', ], 'Progress' => [ 'shape' => 'Progress', 'location' => 'header', 'locationName' => 'x-amz-Progress', ], 'Checksum' => [ 'shape' => 'Checksum', 'location' => 'header', 'locationName' => 'x-amz-Checksum', ], 'ChecksumAlgorithm' => [ 'shape' => 'ChecksumAlgorithm', 'location' => 'header', 'locationName' => 'x-amz-Checksum-Algorithm', ], ], 'payload' => 'BlockData', ], 'PutSnapshotBlockResponse' => [ 'type' => 'structure', 'members' => [ 'Checksum' => [ 'shape' => 'Checksum', 'location' => 'header', 'locationName' => 'x-amz-Checksum', ], 'ChecksumAlgorithm' => [ 'shape' => 'ChecksumAlgorithm', 'location' => 'header', 'locationName' => 'x-amz-Checksum-Algorithm', ], ], ], 'RequestThrottledException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], 'Reason' => [ 'shape' => 'RequestThrottledExceptionReason', ], ], 'error' => [ 'httpStatusCode' => 400, ], 'exception' => true, ], 'RequestThrottledExceptionReason' => [ 'type' => 'string', 'enum' => [ 'ACCOUNT_THROTTLED', 'DEPENDENCY_REQUEST_THROTTLED', ], ], 'ResourceNotFoundException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], 'Reason' => [ 'shape' => 'ResourceNotFoundExceptionReason', ], ], 'error' => [ 'httpStatusCode' => 404, ], 'exception' => true, ], 'ResourceNotFoundExceptionReason' => [ 'type' => 'string', 'enum' => [ 'SNAPSHOT_NOT_FOUND', 'DEPENDENCY_RESOURCE_NOT_FOUND', ], ], 'ServiceQuotaExceededException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], 'Reason' => [ 'shape' => 'ServiceQuotaExceededExceptionReason', ], ], 'error' => [ 'httpStatusCode' => 402, ], 'exception' => true, ], 'ServiceQuotaExceededExceptionReason' => [ 'type' => 'string', 'enum' => [ 'DEPENDENCY_SERVICE_QUOTA_EXCEEDED', ], ], 'SnapshotId' => [ 'type' => 'string', 'max' => 64, 'min' => 1, 'pattern' => '^snap-[0-9a-f]+$', ], 'StartSnapshotRequest' => [ 'type' => 'structure', 'required' => [ 'VolumeSize', ], 'members' => [ 'VolumeSize' => [ 'shape' => 'VolumeSize', ], 'ParentSnapshotId' => [ 'shape' => 'SnapshotId', ], 'Tags' => [ 'shape' => 'Tags', ], 'Description' => [ 'shape' => 'Description', ], 'ClientToken' => [ 'shape' => 'IdempotencyToken', 'idempotencyToken' => true, ], 'Encrypted' => [ 'shape' => 'Boolean', ], 'KmsKeyArn' => [ 'shape' => 'KmsKeyArn', ], 'Timeout' => [ 'shape' => 'Timeout', ], ], ], 'StartSnapshotResponse' => [ 'type' => 'structure', 'members' => [ 'Description' => [ 'shape' => 'Description', ], 'SnapshotId' => [ 'shape' => 'SnapshotId', ], 'OwnerId' => [ 'shape' => 'OwnerId', ], 'Status' => [ 'shape' => 'Status', ], 'StartTime' => [ 'shape' => 'TimeStamp', ], 'VolumeSize' => [ 'shape' => 'VolumeSize', ], 'BlockSize' => [ 'shape' => 'BlockSize', ], 'Tags' => [ 'shape' => 'Tags', ], 'ParentSnapshotId' => [ 'shape' => 'SnapshotId', ], 'KmsKeyArn' => [ 'shape' => 'KmsKeyArn', ], ], ], 'Status' => [ 'type' => 'string', 'enum' => [ 'completed', 'pending', 'error', ], 'max' => 32, ], 'Tag' => [ 'type' => 'structure', 'members' => [ 'Key' => [ 'shape' => 'TagKey', ], 'Value' => [ 'shape' => 'TagValue', ], ], ], 'TagKey' => [ 'type' => 'string', 'max' => 127, 'pattern' => '^[\\S\\s]+$', ], 'TagValue' => [ 'type' => 'string', 'max' => 255, 'pattern' => '^[\\S\\s]+$', ], 'Tags' => [ 'type' => 'list', 'member' => [ 'shape' => 'Tag', ], ], 'TimeStamp' => [ 'type' => 'timestamp', ], 'Timeout' => [ 'type' => 'integer', 'max' => 60, 'min' => 10, ], 'ValidationException' => [ 'type' => 'structure', 'members' => [ 'Message' => [ 'shape' => 'ErrorMessage', ], 'Reason' => [ 'shape' => 'ValidationExceptionReason', ], ], 'error' => [ 'httpStatusCode' => 400, ], 'exception' => true, ], 'ValidationExceptionReason' => [ 'type' => 'string', 'enum' => [ 'INVALID_CUSTOMER_KEY', 'INVALID_PAGE_TOKEN', 'INVALID_BLOCK_TOKEN', 'INVALID_SNAPSHOT_ID', 'UNRELATED_SNAPSHOTS', 'INVALID_BLOCK', 'INVALID_CONTENT_ENCODING', 'INVALID_TAG', 'INVALID_DEPENDENCY_REQUEST', 'INVALID_PARAMETER_VALUE', 'INVALID_VOLUME_SIZE', ], ], 'VolumeSize' => [ 'type' => 'long', 'min' => 1, ], ],];