/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.kinesisvideo; import org.w3c.dom.*; import java.net.*; import java.util.*; import javax.annotation.Generated; import org.apache.commons.logging.*; import com.amazonaws.*; import com.amazonaws.annotation.SdkInternalApi; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.internal.auth.*; import com.amazonaws.metrics.*; import com.amazonaws.regions.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.protocol.json.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.annotation.ThreadSafe; import com.amazonaws.client.AwsSyncClientParams; import com.amazonaws.client.builder.AdvancedConfig; import com.amazonaws.services.kinesisvideo.AmazonKinesisVideoClientBuilder; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.kinesisvideo.model.*; import com.amazonaws.services.kinesisvideo.model.transform.*; /** * Client for accessing Kinesis Video. All service calls made using this client are blocking, and will not return until * the service call completes. *
*
*/ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AmazonKinesisVideoClient extends AmazonWebServiceClient implements AmazonKinesisVideo { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AmazonKinesisVideo.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "kinesisvideo"; /** Client configuration factory providing ClientConfigurations tailored to this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); private final AdvancedConfig advancedConfig; private static final com.amazonaws.protocol.json.SdkJsonProtocolFactory protocolFactory = new com.amazonaws.protocol.json.SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.1") .withSupportsCbor(false) .withSupportsIon(false) .withContentTypeOverride("application/json") .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AccountStreamLimitExceededException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.AccountStreamLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ResourceInUseException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.ResourceInUseExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("VersionMismatchException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.VersionMismatchExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AccountChannelLimitExceededException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.AccountChannelLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ClientLimitExceededException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.ClientLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("StreamEdgeConfigurationNotFoundException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.StreamEdgeConfigurationNotFoundExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidResourceFormatException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.InvalidResourceFormatExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AccessDeniedException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.AccessDeniedExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidArgumentException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.InvalidArgumentExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("NoDataRetentionException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.NoDataRetentionExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ResourceNotFoundException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.ResourceNotFoundExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidDeviceException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.InvalidDeviceExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("TagsPerResourceExceededLimitException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.TagsPerResourceExceededLimitExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("DeviceStreamLimitExceededException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.DeviceStreamLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("NotAuthorizedException").withExceptionUnmarshaller( com.amazonaws.services.kinesisvideo.model.transform.NotAuthorizedExceptionUnmarshaller.getInstance())) .withBaseServiceExceptionClass(com.amazonaws.services.kinesisvideo.model.AmazonKinesisVideoException.class)); public static AmazonKinesisVideoClientBuilder builder() { return AmazonKinesisVideoClientBuilder.standard(); } /** * Constructs a new client to invoke service methods on Kinesis Video using the specified parameters. * ** All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AmazonKinesisVideoClient(AwsSyncClientParams clientParams) { this(clientParams, false); } /** * Constructs a new client to invoke service methods on Kinesis Video using the specified parameters. * *
* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AmazonKinesisVideoClient(AwsSyncClientParams clientParams, boolean endpointDiscoveryEnabled) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); this.advancedConfig = clientParams.getAdvancedConfig(); init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly setEndpoint("kinesisvideo.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/kinesisvideo/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/kinesisvideo/request.handler2s")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** *
* Creates a signaling channel. *
*
     * CreateSignalingChannel is an asynchronous operation.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Creates a new Kinesis video stream. *
** When you create a new stream, Kinesis Video Streams assigns it a version number. When you change the stream's * metadata, Kinesis Video Streams updates the version. *
*
     * CreateStream is an asynchronous operation.
     * 
* For information about how the service works, see How it Works. *
*
     * You must have permissions for the KinesisVideo:CreateStream action.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* An asynchronous API that deletes a stream’s existing edge configuration, as well as the corresponding media from * the Edge Agent. *
*
     * When you invoke this API, the sync status is set to DELETING. A deletion process starts, in which
     * active edge jobs are stopped and all media is deleted from the edge device. The time to delete varies, depending
     * on the total amount of stored media. If the deletion process fails, the sync status changes to
     * DELETE_FAILED. You will need to re-try the deletion.
     * 
* When the deletion process has completed successfully, the edge configuration is no longer accessible. *
* * @param deleteEdgeConfigurationRequest * @return Result of the DeleteEdgeConfiguration operation returned by the service. * @throws AccessDeniedException * You do not have required permissions to perform this operation. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws StreamEdgeConfigurationNotFoundException * The Exception rendered when the Amazon Kinesis Video Stream can't find a stream's edge configuration that * you specified. * @sample AmazonKinesisVideo.DeleteEdgeConfiguration * @see AWS API Documentation */ @Override public DeleteEdgeConfigurationResult deleteEdgeConfiguration(DeleteEdgeConfigurationRequest request) { request = beforeClientExecution(request); return executeDeleteEdgeConfiguration(request); } @SdkInternalApi final DeleteEdgeConfigurationResult executeDeleteEdgeConfiguration(DeleteEdgeConfigurationRequest deleteEdgeConfigurationRequest) { ExecutionContext executionContext = createExecutionContext(deleteEdgeConfigurationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request
     * Deletes a specified signaling channel. DeleteSignalingChannel is an asynchronous operation. If you
     * don't specify the channel's current version, the most recent version is deleted.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Deletes a Kinesis video stream and the data contained in the stream. *
** This method marks the stream for deletion, and makes the data in the stream inaccessible immediately. *
**
*
     * To ensure that you have the latest version of the stream before deleting it, you can specify the stream version.
     * Kinesis Video Streams assigns a version to each stream. When you update a stream, Kinesis Video Streams assigns a
     * new version number. To get the latest stream version, use the DescribeStream API.
     * 
     * This operation requires permission for the KinesisVideo:DeleteStream action.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
     * Describes a stream’s edge configuration that was set using the StartEdgeConfigurationUpdate API and
     * the latest status of the edge agent's recorder and uploader jobs. Use this API to get the status of the
     * configuration to determine if the configuration is in sync with the Edge Agent. Use this API to evaluate the
     * health of the Edge Agent.
     * 
     * Gets the ImageGenerationConfiguration for a given Kinesis video stream.
     * 
     * Returns the most current information about the stream. The streamName or streamARN
     * should be provided in the input.
     * 
     * Returns the most current information about the channel. Specify the ChannelName or
     * ChannelARN in the input.
     * 
     * Gets the NotificationConfiguration for a given Kinesis video stream.
     * 
* Returns the most current information about the signaling channel. You must specify either the name or the Amazon * Resource Name (ARN) of the channel that you want to describe. *
* * @param describeSignalingChannelRequest * @return Result of the DescribeSignalingChannel operation returned by the service. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws AccessDeniedException * You do not have required permissions to perform this operation. * @sample AmazonKinesisVideo.DescribeSignalingChannel * @see AWS API Documentation */ @Override public DescribeSignalingChannelResult describeSignalingChannel(DescribeSignalingChannelRequest request) { request = beforeClientExecution(request); return executeDescribeSignalingChannel(request); } @SdkInternalApi final DescribeSignalingChannelResult executeDescribeSignalingChannel(DescribeSignalingChannelRequest describeSignalingChannelRequest) { ExecutionContext executionContext = createExecutionContext(describeSignalingChannelRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request
     * Returns the most current information about the specified stream. You must specify either the
     * StreamName or the StreamARN.
     * 
     * Gets an endpoint for a specified stream for either reading or writing. Use this endpoint in your application to
     * read from the specified stream (using the GetMedia or GetMediaForFragmentList
     * operations) or write to it (using the PutMedia operation).
     * 
* The returned endpoint does not have the API name appended. The client needs to add the API name to the returned * endpoint. *
*
     * In the request, specify the stream either by StreamName or StreamARN.
     * 
     * Provides an endpoint for the specified signaling channel to send and receive messages. This API uses the
     * SingleMasterChannelEndpointConfiguration input parameter, which consists of the
     * Protocols and Role properties.
     * 
     * Protocols is used to determine the communication mechanism. For example, if you specify
     * WSS as the protocol, this API produces a secure websocket endpoint. If you specify
     * HTTPS as the protocol, this API generates an HTTPS endpoint.
     * 
     * Role determines the messaging permissions. A MASTER role results in this API generating
     * an endpoint that a client can use to communicate with any of the viewers on the channel. A VIEWER
     * role results in this API generating an endpoint that a client can use to communicate only with a
     * MASTER.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Returns an array of edge configurations associated with the specified Edge Agent. *
*
     * In the request, you must specify the Edge Agent HubDeviceArn.
     * 
     * Returns an array of ChannelInfo objects. Each object describes a signaling channel. To retrieve only
     * those channels that satisfy a specific condition, you can specify a ChannelNameCondition.
     * 
     * Returns an array of StreamInfo objects. Each object describes a stream. To retrieve only streams
     * that satisfy a specific condition, you can specify a StreamNameCondition.
     * 
* Returns a list of tags associated with the specified signaling channel. *
* * @param listTagsForResourceRequest * @return Result of the ListTagsForResource operation returned by the service. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws AccessDeniedException * You do not have required permissions to perform this operation. * @sample AmazonKinesisVideo.ListTagsForResource * @see AWS API Documentation */ @Override public ListTagsForResourceResult listTagsForResource(ListTagsForResourceRequest request) { request = beforeClientExecution(request); return executeListTagsForResource(request); } @SdkInternalApi final ListTagsForResourceResult executeListTagsForResource(ListTagsForResourceRequest listTagsForResourceRequest) { ExecutionContext executionContext = createExecutionContext(listTagsForResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request* Returns a list of tags associated with the specified stream. *
*
     * In the request, you must specify either the StreamName or the StreamARN.
     * 
StreamARN is invalid.
     * @sample AmazonKinesisVideo.ListTagsForStream
     * @see AWS
     *      API Documentation
     */
    @Override
    public ListTagsForStreamResult listTagsForStream(ListTagsForStreamRequest request) {
        request = beforeClientExecution(request);
        return executeListTagsForStream(request);
    }
    @SdkInternalApi
    final ListTagsForStreamResult executeListTagsForStream(ListTagsForStreamRequest listTagsForStreamRequest) {
        ExecutionContext executionContext = createExecutionContext(listTagsForStreamRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request
     * An asynchronous API that updates a stream’s existing edge configuration. The Kinesis Video Stream will sync the
     * stream’s edge configuration with the Edge Agent IoT Greengrass component that runs on an IoT Hub Device, setup at
     * your premise. The time to sync can vary and depends on the connectivity of the Hub Device. The
     * SyncStatus will be updated as the edge configuration is acknowledged, and synced with the Edge
     * Agent.
     * 
     * If this API is invoked for the first time, a new edge configuration will be created for the stream, and the sync
     * status will be set to SYNCING. You will have to wait for the sync status to reach a terminal state
     * such as: IN_SYNC, or SYNC_FAILED, before using this API again. If you invoke this API
     * during the syncing process, a ResourceInUseException will be thrown. The connectivity of the
     * stream’s edge configuration and the Edge Agent will be retried for 15 minutes. After 15 minutes, the status will
     * transition into the SYNC_FAILED state.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Adds one or more tags to a signaling channel. A tag is a key-value pair (the value is optional) that you * can define and assign to Amazon Web Services resources. If you specify a tag that already exists, the tag value * is replaced with the value that you specify in the request. For more information, see Using Cost Allocation * Tags in the Billing and Cost Management and Cost Management User Guide. *
* * @param tagResourceRequest * @return Result of the TagResource operation returned by the service. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws AccessDeniedException * You do not have required permissions to perform this operation. * @throws TagsPerResourceExceededLimitException * You have exceeded the limit of tags that you can associate with the resource. A Kinesis video stream can * support up to 50 tags. * @sample AmazonKinesisVideo.TagResource * @see AWS API * Documentation */ @Override public TagResourceResult tagResource(TagResourceRequest request) { request = beforeClientExecution(request); return executeTagResource(request); } @SdkInternalApi final TagResourceResult executeTagResource(TagResourceRequest tagResourceRequest) { ExecutionContext executionContext = createExecutionContext(tagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request* Adds one or more tags to a stream. A tag is a key-value pair (the value is optional) that you can define * and assign to Amazon Web Services resources. If you specify a tag that already exists, the tag value is replaced * with the value that you specify in the request. For more information, see Using Cost Allocation * Tags in the Billing and Cost Management and Cost Management User Guide. *
*
     * You must provide either the StreamName or the StreamARN.
     * 
     * This operation requires permission for the KinesisVideo:TagStream action.
     * 
* A Kinesis video stream can support up to 50 tags. *
* * @param tagStreamRequest * @return Result of the TagStream operation returned by the service. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws NotAuthorizedException * The caller is not authorized to perform this operation. * @throws InvalidResourceFormatException * The format of theStreamARN is invalid.
     * @throws TagsPerResourceExceededLimitException
     *         You have exceeded the limit of tags that you can associate with the resource. A Kinesis video stream can
     *         support up to 50 tags.
     * @sample AmazonKinesisVideo.TagStream
     * @see AWS API
     *      Documentation
     */
    @Override
    public TagStreamResult tagStream(TagStreamRequest request) {
        request = beforeClientExecution(request);
        return executeTagStream(request);
    }
    @SdkInternalApi
    final TagStreamResult executeTagStream(TagStreamRequest tagStreamRequest) {
        ExecutionContext executionContext = createExecutionContext(tagStreamRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request* Removes one or more tags from a signaling channel. In the request, specify only a tag key or keys; don't specify * the value. If you specify a tag key that does not exist, it's ignored. *
* * @param untagResourceRequest * @return Result of the UntagResource operation returned by the service. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws AccessDeniedException * You do not have required permissions to perform this operation. * @sample AmazonKinesisVideo.UntagResource * @see AWS API * Documentation */ @Override public UntagResourceResult untagResource(UntagResourceRequest request) { request = beforeClientExecution(request); return executeUntagResource(request); } @SdkInternalApi final UntagResourceResult executeUntagResource(UntagResourceRequest untagResourceRequest) { ExecutionContext executionContext = createExecutionContext(untagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request* Removes one or more tags from a stream. In the request, specify only a tag key or keys; don't specify the value. * If you specify a tag key that does not exist, it's ignored. *
*
     * In the request, you must provide the StreamName or StreamARN.
     * 
StreamARN is invalid.
     * @sample AmazonKinesisVideo.UntagStream
     * @see AWS API
     *      Documentation
     */
    @Override
    public UntagStreamResult untagStream(UntagStreamRequest request) {
        request = beforeClientExecution(request);
        return executeUntagStream(request);
    }
    @SdkInternalApi
    final UntagStreamResult executeUntagStream(UntagStreamRequest untagStreamRequest) {
        ExecutionContext executionContext = createExecutionContext(untagStreamRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request
     * Increases or decreases the stream's data retention period by the value that you specify. To indicate whether you
     * want to increase or decrease the data retention period, specify the Operation parameter in the
     * request body. In the request, you must specify either the StreamName or the StreamARN.
     * 
* The retention period that you specify replaces the current value. *
*
     * This operation requires permission for the KinesisVideo:UpdateDataRetention action.
     * 
* Changing the data retention period affects the data in the stream as follows: *
** If the data retention period is increased, existing data is retained for the new retention period. For example, * if the data retention period is increased from one hour to seven hours, all existing data is retained for seven * hours. *
** If the data retention period is decreased, existing data is retained for the new retention period. For example, * if the data retention period is decreased from seven hours to one hour, all existing data is retained for one * hour, and any data older than one hour is deleted immediately. *
*StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
     * Updates the StreamInfo and ImageProcessingConfiguration fields.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
     * Associates a SignalingChannel to a stream to store the media. There are two signaling modes that can
     * specified :
     * 
     * If the StorageStatus is disabled, no data will be stored, and the StreamARN parameter
     * will not be needed.
     * 
     * If the StorageStatus is enabled, the data will be stored in the StreamARN provided.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Updates the notification information for a stream. *
* * @param updateNotificationConfigurationRequest * @return Result of the UpdateNotificationConfiguration operation returned by the service. * @throws InvalidArgumentException * The value for this input parameter is invalid. * @throws ClientLimitExceededException * Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client * calls. Try making the call later. * @throws ResourceNotFoundException * Amazon Kinesis Video Streams can't find the stream that you specified. * @throws AccessDeniedException * You do not have required permissions to perform this operation. * @throws ResourceInUseException * When the inputStreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Updates the existing signaling channel. This is an asynchronous operation and takes time to complete. *
*
     * If the MessageTtlSeconds value is updated (either increased or reduced), it only applies to new
     * messages sent via this channel after it's been updated. Existing messages are still expired as per the previous
     * MessageTtlSeconds value.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
* Updates stream metadata, such as the device name and media type. *
** You must provide the stream name or the Amazon Resource Name (ARN) of the stream. *
*
     * To make sure that you have the latest version of the stream before updating it, you can specify the stream
     * version. Kinesis Video Streams assigns a version to each stream. When you update a stream, Kinesis Video Streams
     * assigns a new version number. To get the latest stream version, use the DescribeStream API.
     * 
     * UpdateStream is an asynchronous operation, and takes time to complete.
     * 
StreamARN or ChannelARN in CLOUD_STORAGE_MODE is
     *         already mapped to a different Kinesis Video Stream resource, or if the provided input
     *         StreamARN or ChannelARN is not in Active status, try one of the following :
     *         
     *         
     *         The DescribeMediaStorageConfiguration API to determine what the stream given channel is
     *         mapped to.
     *         
     *         The DescribeMappedResourceConfiguration API to determine the channel that the given stream
     *         is mapped to.
     *         
     *         The DescribeStream or DescribeSignalingChannel API to determine the status of
     *         the resource.
     *         
     * Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic
     * information for an executed request, you should use this method to retrieve it as soon as possible after
     * executing the request.
     *
     * @param request
     *        The originally executed request
     *
     * @return The response metadata for the specified request, or null if none is available.
     */
    public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) {
        return client.getResponseMetadataForRequest(request);
    }
    /**
     * Normal invoke with authentication. Credentials are required and may be overriden at the request level.
     **/
    private