# frozen_string_literal: true

# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE


module Aws::EBS
  # @api private
  module ClientApi

    include Seahorse::Model

    AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
    AccessDeniedExceptionReason = Shapes::StringShape.new(name: 'AccessDeniedExceptionReason')
    Block = Shapes::StructureShape.new(name: 'Block')
    BlockData = Shapes::BlobShape.new(name: 'BlockData', streaming: true)
    BlockIndex = Shapes::IntegerShape.new(name: 'BlockIndex')
    BlockSize = Shapes::IntegerShape.new(name: 'BlockSize')
    BlockToken = Shapes::StringShape.new(name: 'BlockToken')
    Blocks = Shapes::ListShape.new(name: 'Blocks')
    Boolean = Shapes::BooleanShape.new(name: 'Boolean')
    ChangedBlock = Shapes::StructureShape.new(name: 'ChangedBlock')
    ChangedBlocks = Shapes::ListShape.new(name: 'ChangedBlocks')
    ChangedBlocksCount = Shapes::IntegerShape.new(name: 'ChangedBlocksCount')
    Checksum = Shapes::StringShape.new(name: 'Checksum')
    ChecksumAggregationMethod = Shapes::StringShape.new(name: 'ChecksumAggregationMethod')
    ChecksumAlgorithm = Shapes::StringShape.new(name: 'ChecksumAlgorithm')
    CompleteSnapshotRequest = Shapes::StructureShape.new(name: 'CompleteSnapshotRequest')
    CompleteSnapshotResponse = Shapes::StructureShape.new(name: 'CompleteSnapshotResponse')
    ConcurrentLimitExceededException = Shapes::StructureShape.new(name: 'ConcurrentLimitExceededException')
    ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
    DataLength = Shapes::IntegerShape.new(name: 'DataLength')
    Description = Shapes::StringShape.new(name: 'Description')
    ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
    GetSnapshotBlockRequest = Shapes::StructureShape.new(name: 'GetSnapshotBlockRequest')
    GetSnapshotBlockResponse = Shapes::StructureShape.new(name: 'GetSnapshotBlockResponse')
    IdempotencyToken = Shapes::StringShape.new(name: 'IdempotencyToken')
    InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException')
    KmsKeyArn = Shapes::StringShape.new(name: 'KmsKeyArn')
    ListChangedBlocksRequest = Shapes::StructureShape.new(name: 'ListChangedBlocksRequest')
    ListChangedBlocksResponse = Shapes::StructureShape.new(name: 'ListChangedBlocksResponse')
    ListSnapshotBlocksRequest = Shapes::StructureShape.new(name: 'ListSnapshotBlocksRequest')
    ListSnapshotBlocksResponse = Shapes::StructureShape.new(name: 'ListSnapshotBlocksResponse')
    MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
    OwnerId = Shapes::StringShape.new(name: 'OwnerId')
    PageToken = Shapes::StringShape.new(name: 'PageToken')
    Progress = Shapes::IntegerShape.new(name: 'Progress')
    PutSnapshotBlockRequest = Shapes::StructureShape.new(name: 'PutSnapshotBlockRequest')
    PutSnapshotBlockResponse = Shapes::StructureShape.new(name: 'PutSnapshotBlockResponse')
    RequestThrottledException = Shapes::StructureShape.new(name: 'RequestThrottledException')
    RequestThrottledExceptionReason = Shapes::StringShape.new(name: 'RequestThrottledExceptionReason')
    ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
    ResourceNotFoundExceptionReason = Shapes::StringShape.new(name: 'ResourceNotFoundExceptionReason')
    SSEType = Shapes::StringShape.new(name: 'SSEType')
    ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
    ServiceQuotaExceededExceptionReason = Shapes::StringShape.new(name: 'ServiceQuotaExceededExceptionReason')
    SnapshotId = Shapes::StringShape.new(name: 'SnapshotId')
    StartSnapshotRequest = Shapes::StructureShape.new(name: 'StartSnapshotRequest')
    StartSnapshotResponse = Shapes::StructureShape.new(name: 'StartSnapshotResponse')
    Status = Shapes::StringShape.new(name: 'Status')
    Tag = Shapes::StructureShape.new(name: 'Tag')
    TagKey = Shapes::StringShape.new(name: 'TagKey')
    TagValue = Shapes::StringShape.new(name: 'TagValue')
    Tags = Shapes::ListShape.new(name: 'Tags')
    TimeStamp = Shapes::TimestampShape.new(name: 'TimeStamp')
    Timeout = Shapes::IntegerShape.new(name: 'Timeout')
    ValidationException = Shapes::StructureShape.new(name: 'ValidationException')
    ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason')
    VolumeSize = Shapes::IntegerShape.new(name: 'VolumeSize')

    AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    AccessDeniedException.add_member(:reason, Shapes::ShapeRef.new(shape: AccessDeniedExceptionReason, required: true, location_name: "Reason"))
    AccessDeniedException.struct_class = Types::AccessDeniedException

    Block.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, location_name: "BlockIndex"))
    Block.add_member(:block_token, Shapes::ShapeRef.new(shape: BlockToken, location_name: "BlockToken"))
    Block.struct_class = Types::Block

    Blocks.member = Shapes::ShapeRef.new(shape: Block)

    ChangedBlock.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, location_name: "BlockIndex"))
    ChangedBlock.add_member(:first_block_token, Shapes::ShapeRef.new(shape: BlockToken, location_name: "FirstBlockToken"))
    ChangedBlock.add_member(:second_block_token, Shapes::ShapeRef.new(shape: BlockToken, location_name: "SecondBlockToken"))
    ChangedBlock.struct_class = Types::ChangedBlock

    ChangedBlocks.member = Shapes::ShapeRef.new(shape: ChangedBlock)

    CompleteSnapshotRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
    CompleteSnapshotRequest.add_member(:changed_blocks_count, Shapes::ShapeRef.new(shape: ChangedBlocksCount, required: true, location: "header", location_name: "x-amz-ChangedBlocksCount"))
    CompleteSnapshotRequest.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, location: "header", location_name: "x-amz-Checksum"))
    CompleteSnapshotRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-Checksum-Algorithm"))
    CompleteSnapshotRequest.add_member(:checksum_aggregation_method, Shapes::ShapeRef.new(shape: ChecksumAggregationMethod, location: "header", location_name: "x-amz-Checksum-Aggregation-Method"))
    CompleteSnapshotRequest.struct_class = Types::CompleteSnapshotRequest

    CompleteSnapshotResponse.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "Status"))
    CompleteSnapshotResponse.struct_class = Types::CompleteSnapshotResponse

    ConcurrentLimitExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    ConcurrentLimitExceededException.struct_class = Types::ConcurrentLimitExceededException

    ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    ConflictException.struct_class = Types::ConflictException

    GetSnapshotBlockRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
    GetSnapshotBlockRequest.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, required: true, location: "uri", location_name: "blockIndex"))
    GetSnapshotBlockRequest.add_member(:block_token, Shapes::ShapeRef.new(shape: BlockToken, required: true, location: "querystring", location_name: "blockToken"))
    GetSnapshotBlockRequest.struct_class = Types::GetSnapshotBlockRequest

    GetSnapshotBlockResponse.add_member(:data_length, Shapes::ShapeRef.new(shape: DataLength, location: "header", location_name: "x-amz-Data-Length"))
    GetSnapshotBlockResponse.add_member(:block_data, Shapes::ShapeRef.new(shape: BlockData, location_name: "BlockData"))
    GetSnapshotBlockResponse.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, location: "header", location_name: "x-amz-Checksum"))
    GetSnapshotBlockResponse.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-Checksum-Algorithm"))
    GetSnapshotBlockResponse.struct_class = Types::GetSnapshotBlockResponse
    GetSnapshotBlockResponse[:payload] = :block_data
    GetSnapshotBlockResponse[:payload_member] = GetSnapshotBlockResponse.member(:block_data)

    InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    InternalServerException.struct_class = Types::InternalServerException

    ListChangedBlocksRequest.add_member(:first_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location: "querystring", location_name: "firstSnapshotId"))
    ListChangedBlocksRequest.add_member(:second_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "secondSnapshotId"))
    ListChangedBlocksRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PageToken, location: "querystring", location_name: "pageToken"))
    ListChangedBlocksRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
    ListChangedBlocksRequest.add_member(:starting_block_index, Shapes::ShapeRef.new(shape: BlockIndex, location: "querystring", location_name: "startingBlockIndex"))
    ListChangedBlocksRequest.struct_class = Types::ListChangedBlocksRequest

    ListChangedBlocksResponse.add_member(:changed_blocks, Shapes::ShapeRef.new(shape: ChangedBlocks, location_name: "ChangedBlocks"))
    ListChangedBlocksResponse.add_member(:expiry_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "ExpiryTime"))
    ListChangedBlocksResponse.add_member(:volume_size, Shapes::ShapeRef.new(shape: VolumeSize, location_name: "VolumeSize"))
    ListChangedBlocksResponse.add_member(:block_size, Shapes::ShapeRef.new(shape: BlockSize, location_name: "BlockSize"))
    ListChangedBlocksResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PageToken, location_name: "NextToken"))
    ListChangedBlocksResponse.struct_class = Types::ListChangedBlocksResponse

    ListSnapshotBlocksRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
    ListSnapshotBlocksRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PageToken, location: "querystring", location_name: "pageToken"))
    ListSnapshotBlocksRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
    ListSnapshotBlocksRequest.add_member(:starting_block_index, Shapes::ShapeRef.new(shape: BlockIndex, location: "querystring", location_name: "startingBlockIndex"))
    ListSnapshotBlocksRequest.struct_class = Types::ListSnapshotBlocksRequest

    ListSnapshotBlocksResponse.add_member(:blocks, Shapes::ShapeRef.new(shape: Blocks, location_name: "Blocks"))
    ListSnapshotBlocksResponse.add_member(:expiry_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "ExpiryTime"))
    ListSnapshotBlocksResponse.add_member(:volume_size, Shapes::ShapeRef.new(shape: VolumeSize, location_name: "VolumeSize"))
    ListSnapshotBlocksResponse.add_member(:block_size, Shapes::ShapeRef.new(shape: BlockSize, location_name: "BlockSize"))
    ListSnapshotBlocksResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PageToken, location_name: "NextToken"))
    ListSnapshotBlocksResponse.struct_class = Types::ListSnapshotBlocksResponse

    PutSnapshotBlockRequest.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, required: true, location: "uri", location_name: "snapshotId"))
    PutSnapshotBlockRequest.add_member(:block_index, Shapes::ShapeRef.new(shape: BlockIndex, required: true, location: "uri", location_name: "blockIndex"))
    PutSnapshotBlockRequest.add_member(:block_data, Shapes::ShapeRef.new(shape: BlockData, required: true, location_name: "BlockData"))
    PutSnapshotBlockRequest.add_member(:data_length, Shapes::ShapeRef.new(shape: DataLength, required: true, location: "header", location_name: "x-amz-Data-Length"))
    PutSnapshotBlockRequest.add_member(:progress, Shapes::ShapeRef.new(shape: Progress, location: "header", location_name: "x-amz-Progress"))
    PutSnapshotBlockRequest.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, required: true, location: "header", location_name: "x-amz-Checksum"))
    PutSnapshotBlockRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, required: true, location: "header", location_name: "x-amz-Checksum-Algorithm"))
    PutSnapshotBlockRequest.struct_class = Types::PutSnapshotBlockRequest
    PutSnapshotBlockRequest[:payload] = :block_data
    PutSnapshotBlockRequest[:payload_member] = PutSnapshotBlockRequest.member(:block_data)

    PutSnapshotBlockResponse.add_member(:checksum, Shapes::ShapeRef.new(shape: Checksum, location: "header", location_name: "x-amz-Checksum"))
    PutSnapshotBlockResponse.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-Checksum-Algorithm"))
    PutSnapshotBlockResponse.struct_class = Types::PutSnapshotBlockResponse

    RequestThrottledException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    RequestThrottledException.add_member(:reason, Shapes::ShapeRef.new(shape: RequestThrottledExceptionReason, location_name: "Reason"))
    RequestThrottledException.struct_class = Types::RequestThrottledException

    ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    ResourceNotFoundException.add_member(:reason, Shapes::ShapeRef.new(shape: ResourceNotFoundExceptionReason, location_name: "Reason"))
    ResourceNotFoundException.struct_class = Types::ResourceNotFoundException

    ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    ServiceQuotaExceededException.add_member(:reason, Shapes::ShapeRef.new(shape: ServiceQuotaExceededExceptionReason, location_name: "Reason"))
    ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException

    StartSnapshotRequest.add_member(:volume_size, Shapes::ShapeRef.new(shape: VolumeSize, required: true, location_name: "VolumeSize"))
    StartSnapshotRequest.add_member(:parent_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "ParentSnapshotId"))
    StartSnapshotRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "Tags"))
    StartSnapshotRequest.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
    StartSnapshotRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location_name: "ClientToken", metadata: {"idempotencyToken" => true}))
    StartSnapshotRequest.add_member(:encrypted, Shapes::ShapeRef.new(shape: Boolean, location_name: "Encrypted"))
    StartSnapshotRequest.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "KmsKeyArn"))
    StartSnapshotRequest.add_member(:timeout, Shapes::ShapeRef.new(shape: Timeout, location_name: "Timeout"))
    StartSnapshotRequest.struct_class = Types::StartSnapshotRequest

    StartSnapshotResponse.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
    StartSnapshotResponse.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "SnapshotId"))
    StartSnapshotResponse.add_member(:owner_id, Shapes::ShapeRef.new(shape: OwnerId, location_name: "OwnerId"))
    StartSnapshotResponse.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "Status"))
    StartSnapshotResponse.add_member(:start_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "StartTime"))
    StartSnapshotResponse.add_member(:volume_size, Shapes::ShapeRef.new(shape: VolumeSize, location_name: "VolumeSize"))
    StartSnapshotResponse.add_member(:block_size, Shapes::ShapeRef.new(shape: BlockSize, location_name: "BlockSize"))
    StartSnapshotResponse.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "Tags"))
    StartSnapshotResponse.add_member(:parent_snapshot_id, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "ParentSnapshotId"))
    StartSnapshotResponse.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "KmsKeyArn"))
    StartSnapshotResponse.add_member(:sse_type, Shapes::ShapeRef.new(shape: SSEType, location_name: "SseType"))
    StartSnapshotResponse.struct_class = Types::StartSnapshotResponse

    Tag.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, location_name: "Key"))
    Tag.add_member(:value, Shapes::ShapeRef.new(shape: TagValue, location_name: "Value"))
    Tag.struct_class = Types::Tag

    Tags.member = Shapes::ShapeRef.new(shape: Tag)

    ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
    ValidationException.add_member(:reason, Shapes::ShapeRef.new(shape: ValidationExceptionReason, location_name: "Reason"))
    ValidationException.struct_class = Types::ValidationException


    # @api private
    API = Seahorse::Model::Api.new.tap do |api|

      api.version = "2019-11-02"

      api.metadata = {
        "apiVersion" => "2019-11-02",
        "auth" => ["aws.auth#sigv4"],
        "endpointPrefix" => "ebs",
        "jsonVersion" => "1.1",
        "protocol" => "rest-json",
        "protocols" => ["rest-json"],
        "serviceAbbreviation" => "Amazon EBS",
        "serviceFullName" => "Amazon Elastic Block Store",
        "serviceId" => "EBS",
        "signatureVersion" => "v4",
        "uid" => "ebs-2019-11-02",
      }

      api.add_operation(:complete_snapshot, Seahorse::Model::Operation.new.tap do |o|
        o.name = "CompleteSnapshot"
        o.http_method = "POST"
        o.http_request_uri = "/snapshots/completion/{snapshotId}"
        o.input = Shapes::ShapeRef.new(shape: CompleteSnapshotRequest)
        o.output = Shapes::ShapeRef.new(shape: CompleteSnapshotResponse)
        o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
        o.errors << Shapes::ShapeRef.new(shape: ValidationException)
        o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
        o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
        o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
        o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
      end)

      api.add_operation(:get_snapshot_block, Seahorse::Model::Operation.new.tap do |o|
        o.name = "GetSnapshotBlock"
        o.http_method = "GET"
        o.http_request_uri = "/snapshots/{snapshotId}/blocks/{blockIndex}"
        o.input = Shapes::ShapeRef.new(shape: GetSnapshotBlockRequest)
        o.output = Shapes::ShapeRef.new(shape: GetSnapshotBlockResponse)
        o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
        o.errors << Shapes::ShapeRef.new(shape: ValidationException)
        o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
        o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
        o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
        o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
      end)

      api.add_operation(:list_changed_blocks, Seahorse::Model::Operation.new.tap do |o|
        o.name = "ListChangedBlocks"
        o.http_method = "GET"
        o.http_request_uri = "/snapshots/{secondSnapshotId}/changedblocks"
        o.input = Shapes::ShapeRef.new(shape: ListChangedBlocksRequest)
        o.output = Shapes::ShapeRef.new(shape: ListChangedBlocksResponse)
        o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
        o.errors << Shapes::ShapeRef.new(shape: ValidationException)
        o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
        o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
        o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
        o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
        o[:pager] = Aws::Pager.new(
          limit_key: "max_results",
          tokens: {
            "next_token" => "next_token"
          }
        )
      end)

      api.add_operation(:list_snapshot_blocks, Seahorse::Model::Operation.new.tap do |o|
        o.name = "ListSnapshotBlocks"
        o.http_method = "GET"
        o.http_request_uri = "/snapshots/{snapshotId}/blocks"
        o.input = Shapes::ShapeRef.new(shape: ListSnapshotBlocksRequest)
        o.output = Shapes::ShapeRef.new(shape: ListSnapshotBlocksResponse)
        o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
        o.errors << Shapes::ShapeRef.new(shape: ValidationException)
        o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
        o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
        o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
        o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
        o[:pager] = Aws::Pager.new(
          limit_key: "max_results",
          tokens: {
            "next_token" => "next_token"
          }
        )
      end)

      api.add_operation(:put_snapshot_block, Seahorse::Model::Operation.new.tap do |o|
        o.name = "PutSnapshotBlock"
        o.http_method = "PUT"
        o.http_request_uri = "/snapshots/{snapshotId}/blocks/{blockIndex}"
        o['authtype'] = "v4-unsigned-body"
        o['unsignedPayload'] = true
        o.input = Shapes::ShapeRef.new(shape: PutSnapshotBlockRequest)
        o.output = Shapes::ShapeRef.new(shape: PutSnapshotBlockResponse)
        o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
        o.errors << Shapes::ShapeRef.new(shape: ValidationException)
        o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
        o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
        o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
        o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
      end)

      api.add_operation(:start_snapshot, Seahorse::Model::Operation.new.tap do |o|
        o.name = "StartSnapshot"
        o.http_method = "POST"
        o.http_request_uri = "/snapshots"
        o.input = Shapes::ShapeRef.new(shape: StartSnapshotRequest)
        o.output = Shapes::ShapeRef.new(shape: StartSnapshotResponse)
        o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
        o.errors << Shapes::ShapeRef.new(shape: ValidationException)
        o.errors << Shapes::ShapeRef.new(shape: RequestThrottledException)
        o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
        o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
        o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
        o.errors << Shapes::ShapeRef.new(shape: ConcurrentLimitExceededException)
        o.errors << Shapes::ShapeRef.new(shape: ConflictException)
      end)
    end

  end
end
