'2.0', 'metadata' => ['apiVersion' => '2017-09-30', 'endpointPrefix' => 'kinesisvideo', 'protocol' => 'rest-json', 'serviceAbbreviation' => 'Kinesis Video Media', 'serviceFullName' => 'Amazon Kinesis Video Streams Media', 'serviceId' => 'Kinesis Video Media', 'signatureVersion' => 'v4', 'uid' => 'kinesis-video-media-2017-09-30'], 'operations' => ['GetMedia' => ['name' => 'GetMedia', 'http' => ['method' => 'POST', 'requestUri' => '/getMedia'], 'input' => ['shape' => 'GetMediaInput'], 'output' => ['shape' => 'GetMediaOutput'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'NotAuthorizedException'], ['shape' => 'InvalidEndpointException'], ['shape' => 'ClientLimitExceededException'], ['shape' => 'ConnectionLimitExceededException'], ['shape' => 'InvalidArgumentException']]]], 'shapes' => ['ClientLimitExceededException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'ConnectionLimitExceededException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'ContentType' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^[a-zA-Z0-9_\\.\\-]+$'], 'ContinuationToken' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^[a-zA-Z0-9_\\.\\-]+$'], 'ErrorMessage' => ['type' => 'string'], 'FragmentNumberString' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^[0-9]+$'], 'GetMediaInput' => ['type' => 'structure', 'required' => ['StartSelector'], 'members' => ['StreamName' => ['shape' => 'StreamName'], 'StreamARN' => ['shape' => 'ResourceARN'], 'StartSelector' => ['shape' => 'StartSelector']]], 'GetMediaOutput' => ['type' => 'structure', 'members' => ['ContentType' => ['shape' => 'ContentType', 'location' => 'header', 'locationName' => 'Content-Type'], 'Payload' => ['shape' => 'Payload']], 'payload' => 'Payload'], 'InvalidArgumentException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'InvalidEndpointException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'NotAuthorizedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 401], 'exception' => \true], 'Payload' => ['type' => 'blob', 'streaming' => \true], 'ResourceARN' => ['type' => 'string', 'max' => 1024, 'min' => 1, 'pattern' => 'arn:aws:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+'], 'ResourceNotFoundException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'StartSelector' => ['type' => 'structure', 'required' => ['StartSelectorType'], 'members' => ['StartSelectorType' => ['shape' => 'StartSelectorType'], 'AfterFragmentNumber' => ['shape' => 'FragmentNumberString'], 'StartTimestamp' => ['shape' => 'Timestamp'], 'ContinuationToken' => ['shape' => 'ContinuationToken']]], 'StartSelectorType' => ['type' => 'string', 'enum' => ['FRAGMENT_NUMBER', 'SERVER_TIMESTAMP', 'PRODUCER_TIMESTAMP', 'NOW', 'EARLIEST', 'CONTINUATION_TOKEN']], 'StreamName' => ['type' => 'string', 'max' => 256, 'min' => 1, 'pattern' => '[a-zA-Z0-9_.-]+'], 'Timestamp' => ['type' => 'timestamp']]];