All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.rekognition.DefaultRekognitionAsyncClient Maven / Gradle / Ivy

/*
 * Copyright 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 software.amazon.awssdk.services.rekognition;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.services.rekognition.model.AccessDeniedException;
import software.amazon.awssdk.services.rekognition.model.AssociateFacesRequest;
import software.amazon.awssdk.services.rekognition.model.AssociateFacesResponse;
import software.amazon.awssdk.services.rekognition.model.CompareFacesRequest;
import software.amazon.awssdk.services.rekognition.model.CompareFacesResponse;
import software.amazon.awssdk.services.rekognition.model.ConflictException;
import software.amazon.awssdk.services.rekognition.model.CopyProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.CopyProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateCollectionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateCollectionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateDatasetRequest;
import software.amazon.awssdk.services.rekognition.model.CreateDatasetResponse;
import software.amazon.awssdk.services.rekognition.model.CreateFaceLivenessSessionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateFaceLivenessSessionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateProjectRequest;
import software.amazon.awssdk.services.rekognition.model.CreateProjectResponse;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.CreateUserRequest;
import software.amazon.awssdk.services.rekognition.model.CreateUserResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteCollectionRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteCollectionResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteDatasetRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteDatasetResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteFacesRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteFacesResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectPolicyRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectPolicyResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteUserRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteUserResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeCollectionRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeCollectionResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeDatasetRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeDatasetResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectsResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.DetectCustomLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectCustomLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.DetectFacesRequest;
import software.amazon.awssdk.services.rekognition.model.DetectFacesResponse;
import software.amazon.awssdk.services.rekognition.model.DetectLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.DetectModerationLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectModerationLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.DetectProtectiveEquipmentRequest;
import software.amazon.awssdk.services.rekognition.model.DetectProtectiveEquipmentResponse;
import software.amazon.awssdk.services.rekognition.model.DetectTextRequest;
import software.amazon.awssdk.services.rekognition.model.DetectTextResponse;
import software.amazon.awssdk.services.rekognition.model.DisassociateFacesRequest;
import software.amazon.awssdk.services.rekognition.model.DisassociateFacesResponse;
import software.amazon.awssdk.services.rekognition.model.DistributeDatasetEntriesRequest;
import software.amazon.awssdk.services.rekognition.model.DistributeDatasetEntriesResponse;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityInfoRequest;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityInfoResponse;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityRecognitionRequest;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityRecognitionResponse;
import software.amazon.awssdk.services.rekognition.model.GetContentModerationRequest;
import software.amazon.awssdk.services.rekognition.model.GetContentModerationResponse;
import software.amazon.awssdk.services.rekognition.model.GetFaceDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetFaceDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.GetFaceLivenessSessionResultsRequest;
import software.amazon.awssdk.services.rekognition.model.GetFaceLivenessSessionResultsResponse;
import software.amazon.awssdk.services.rekognition.model.GetFaceSearchRequest;
import software.amazon.awssdk.services.rekognition.model.GetFaceSearchResponse;
import software.amazon.awssdk.services.rekognition.model.GetLabelDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetLabelDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.GetPersonTrackingRequest;
import software.amazon.awssdk.services.rekognition.model.GetPersonTrackingResponse;
import software.amazon.awssdk.services.rekognition.model.GetSegmentDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetSegmentDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.GetTextDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetTextDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.HumanLoopQuotaExceededException;
import software.amazon.awssdk.services.rekognition.model.IdempotentParameterMismatchException;
import software.amazon.awssdk.services.rekognition.model.ImageTooLargeException;
import software.amazon.awssdk.services.rekognition.model.IndexFacesRequest;
import software.amazon.awssdk.services.rekognition.model.IndexFacesResponse;
import software.amazon.awssdk.services.rekognition.model.InternalServerErrorException;
import software.amazon.awssdk.services.rekognition.model.InvalidImageFormatException;
import software.amazon.awssdk.services.rekognition.model.InvalidPaginationTokenException;
import software.amazon.awssdk.services.rekognition.model.InvalidParameterException;
import software.amazon.awssdk.services.rekognition.model.InvalidPolicyRevisionIdException;
import software.amazon.awssdk.services.rekognition.model.InvalidS3ObjectException;
import software.amazon.awssdk.services.rekognition.model.LimitExceededException;
import software.amazon.awssdk.services.rekognition.model.ListCollectionsRequest;
import software.amazon.awssdk.services.rekognition.model.ListCollectionsResponse;
import software.amazon.awssdk.services.rekognition.model.ListDatasetEntriesRequest;
import software.amazon.awssdk.services.rekognition.model.ListDatasetEntriesResponse;
import software.amazon.awssdk.services.rekognition.model.ListDatasetLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.ListDatasetLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.ListFacesRequest;
import software.amazon.awssdk.services.rekognition.model.ListFacesResponse;
import software.amazon.awssdk.services.rekognition.model.ListProjectPoliciesRequest;
import software.amazon.awssdk.services.rekognition.model.ListProjectPoliciesResponse;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsRequest;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsResponse;
import software.amazon.awssdk.services.rekognition.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.rekognition.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.rekognition.model.ListUsersRequest;
import software.amazon.awssdk.services.rekognition.model.ListUsersResponse;
import software.amazon.awssdk.services.rekognition.model.MalformedPolicyDocumentException;
import software.amazon.awssdk.services.rekognition.model.ProvisionedThroughputExceededException;
import software.amazon.awssdk.services.rekognition.model.PutProjectPolicyRequest;
import software.amazon.awssdk.services.rekognition.model.PutProjectPolicyResponse;
import software.amazon.awssdk.services.rekognition.model.RecognizeCelebritiesRequest;
import software.amazon.awssdk.services.rekognition.model.RecognizeCelebritiesResponse;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.model.ResourceAlreadyExistsException;
import software.amazon.awssdk.services.rekognition.model.ResourceInUseException;
import software.amazon.awssdk.services.rekognition.model.ResourceNotFoundException;
import software.amazon.awssdk.services.rekognition.model.ResourceNotReadyException;
import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageRequest;
import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageResponse;
import software.amazon.awssdk.services.rekognition.model.SearchFacesRequest;
import software.amazon.awssdk.services.rekognition.model.SearchFacesResponse;
import software.amazon.awssdk.services.rekognition.model.SearchUsersByImageRequest;
import software.amazon.awssdk.services.rekognition.model.SearchUsersByImageResponse;
import software.amazon.awssdk.services.rekognition.model.SearchUsersRequest;
import software.amazon.awssdk.services.rekognition.model.SearchUsersResponse;
import software.amazon.awssdk.services.rekognition.model.ServiceQuotaExceededException;
import software.amazon.awssdk.services.rekognition.model.SessionNotFoundException;
import software.amazon.awssdk.services.rekognition.model.StartCelebrityRecognitionRequest;
import software.amazon.awssdk.services.rekognition.model.StartCelebrityRecognitionResponse;
import software.amazon.awssdk.services.rekognition.model.StartContentModerationRequest;
import software.amazon.awssdk.services.rekognition.model.StartContentModerationResponse;
import software.amazon.awssdk.services.rekognition.model.StartFaceDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartFaceDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StartFaceSearchRequest;
import software.amazon.awssdk.services.rekognition.model.StartFaceSearchResponse;
import software.amazon.awssdk.services.rekognition.model.StartLabelDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartLabelDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StartPersonTrackingRequest;
import software.amazon.awssdk.services.rekognition.model.StartPersonTrackingResponse;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.StartSegmentDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartSegmentDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StartStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.StartStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.StartTextDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartTextDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StopProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.StopProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.StopStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.StopStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.TagResourceRequest;
import software.amazon.awssdk.services.rekognition.model.TagResourceResponse;
import software.amazon.awssdk.services.rekognition.model.ThrottlingException;
import software.amazon.awssdk.services.rekognition.model.UntagResourceRequest;
import software.amazon.awssdk.services.rekognition.model.UntagResourceResponse;
import software.amazon.awssdk.services.rekognition.model.UpdateDatasetEntriesRequest;
import software.amazon.awssdk.services.rekognition.model.UpdateDatasetEntriesResponse;
import software.amazon.awssdk.services.rekognition.model.UpdateStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.UpdateStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.VideoTooLargeException;
import software.amazon.awssdk.services.rekognition.transform.AssociateFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CompareFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CopyProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateCollectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateDatasetRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateFaceLivenessSessionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateProjectRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateUserRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteCollectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteDatasetRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteProjectPolicyRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteProjectRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteUserRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeCollectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeDatasetRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeProjectVersionsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeProjectsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectCustomLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectModerationLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectProtectiveEquipmentRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectTextRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DisassociateFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DistributeDatasetEntriesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetCelebrityInfoRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetCelebrityRecognitionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetContentModerationRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetFaceDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetFaceLivenessSessionResultsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetFaceSearchRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetLabelDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetPersonTrackingRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetSegmentDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetTextDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.IndexFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListCollectionsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListDatasetEntriesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListDatasetLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListProjectPoliciesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListStreamProcessorsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListUsersRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.PutProjectPolicyRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.RecognizeCelebritiesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchFacesByImageRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchUsersByImageRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchUsersRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartCelebrityRecognitionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartContentModerationRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartFaceDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartFaceSearchRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartLabelDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartPersonTrackingRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartSegmentDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartTextDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StopProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StopStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.UpdateDatasetEntriesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.UpdateStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.waiters.RekognitionAsyncWaiter;
import software.amazon.awssdk.utils.CompletableFutureUtils;

/**
 * Internal implementation of {@link RekognitionAsyncClient}.
 *
 * @see RekognitionAsyncClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultRekognitionAsyncClient implements RekognitionAsyncClient {
    private static final Logger log = LoggerFactory.getLogger(DefaultRekognitionAsyncClient.class);

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    private final RekognitionServiceClientConfiguration serviceClientConfiguration;

    private final ScheduledExecutorService executorService;

    protected DefaultRekognitionAsyncClient(RekognitionServiceClientConfiguration serviceClientConfiguration,
            SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration;
        this.serviceClientConfiguration = serviceClientConfiguration;
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
        this.executorService = clientConfiguration.option(SdkClientOption.SCHEDULED_EXECUTOR_SERVICE);
    }

    /**
     * 

* Associates one or more faces with an existing UserID. Takes an array of FaceIds. Each * FaceId that are present in the FaceIds list is associated with the provided UserID. The * maximum number of total FaceIds per UserID is 100. *

*

* The UserMatchThreshold parameter specifies the minimum user match confidence required for the face * to be associated with a UserID that has at least one FaceID already associated. This ensures that * the FaceIds are associated with the right UserID. The value ranges from 0-100 and default value is * 75. *

*

* If successful, an array of AssociatedFace objects containing the associated FaceIds is * returned. If a given face is already associated with the given UserID, it will be ignored and will * not be returned in the response. If a given face is already associated to a different UserID, isn't * found in the collection, doesn’t meet the UserMatchThreshold, or there are already 100 faces * associated with the UserID, it will be returned as part of an array of * UnsuccessfulFaceAssociations. *

*

* The UserStatus reflects the status of an operation which updates a UserID representation with a list * of given faces. The UserStatus can be: *

*
    *
  • *

    * ACTIVE - All associations or disassociations of FaceID(s) for a UserID are complete. *

    *
  • *
  • *

    * CREATED - A UserID has been created, but has no FaceID(s) associated with it. *

    *
  • *
  • *

    * UPDATING - A UserID is being updated and there are current associations or disassociations of FaceID(s) taking * place. *

    *
  • *
* * @param associateFacesRequest * @return A Java Future containing the result of the AssociateFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ConflictException A User with the same Id already exists within the collection, or the update or * deletion of the User caused an inconsistent state. **
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.AssociateFaces */ @Override public CompletableFuture associateFaces(AssociateFacesRequest associateFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, associateFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AssociateFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AssociateFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("AssociateFaces") .withMarshaller(new AssociateFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(associateFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Compares a face in the source input image with each of the 100 largest faces detected in the target * input image. *

*

* If the source image contains multiple faces, the service detects the largest face and compares it with each face * detected in the target image. *

* *

* CompareFaces uses machine learning algorithms, which are probabilistic. A false negative is an incorrect * prediction that a face in the target image has a low similarity confidence score when compared to the face in the * source image. To reduce the probability of false negatives, we recommend that you compare the target image * against multiple source images. If you plan to use CompareFaces to make a decision that impacts an * individual's rights, privacy, or access to services, we recommend that you pass the result to a human for review * and further validation before taking action. *

*
*

* You pass the input and target images either as base64-encoded image bytes or as references to images in an Amazon * S3 bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes isn't supported. The * image must be formatted as a PNG or JPEG file. *

*

* In response, the operation returns an array of face matches ordered by similarity score in descending order. For * each face match, the response provides a bounding box of the face, facial landmarks, pose details (pitch, roll, * and yaw), quality (brightness and sharpness), and confidence value (indicating the level of confidence that the * bounding box contains a face). The response also provides a similarity score, which indicates how closely the * faces match. *

* *

* By default, only faces with a similarity score of greater than or equal to 80% are returned in the response. You * can change this value by specifying the SimilarityThreshold parameter. *

*
*

* CompareFaces also returns an array of faces that don't match the source image. For each face, it * returns a bounding box, confidence value, landmarks, pose details, and quality. The response also returns * information about the face in the source image, including the bounding box of the face and confidence value. *

*

* The QualityFilter input parameter allows you to filter out detected faces that don’t meet a required * quality bar. The quality bar is based on a variety of common use cases. Use QualityFilter to set the * quality bar by specifying LOW, MEDIUM, or HIGH. If you do not want to * filter detected faces, specify NONE. The default value is NONE. *

*

* If the image doesn't contain Exif metadata, CompareFaces returns orientation information for the * source and target images. Use these values to display the images with the correct image orientation. *

*

* If no faces are detected in the source or target images, CompareFaces returns an * InvalidParameterException error. *

* *

* This is a stateless API operation. That is, data returned by this operation doesn't persist. *

*
*

* For an example, see Comparing Faces in Images in the Amazon Rekognition Developer Guide. *

*

* This operation requires permissions to perform the rekognition:CompareFaces action. *

* * @param compareFacesRequest * @return A Java Future containing the result of the CompareFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CompareFaces */ @Override public CompletableFuture compareFaces(CompareFacesRequest compareFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, compareFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CompareFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CompareFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CompareFaces").withMarshaller(new CompareFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(compareFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Copies a version of an Amazon Rekognition Custom Labels model from a source project to a destination project. The * source and destination projects can be in different AWS accounts but must be in the same AWS Region. You can't * copy a model to another AWS service. *

*

* To copy a model version to a different AWS account, you need to create a resource-based policy known as a * project policy. You attach the project policy to the source project by calling PutProjectPolicy. * The project policy gives permission to copy the model version from a trusting AWS account to a trusted account. *

*

* For more information creating and attaching a project policy, see Attaching a project policy (SDK) in the * Amazon Rekognition Custom Labels Developer Guide. *

*

* If you are copying a model version to a project in the same AWS account, you don't need to create a project * policy. *

* *

* To copy a model, the destination project, source project, and source model version must already exist. *

*
*

* Copying a model version takes a while to complete. To get the current status, call DescribeProjectVersions * and check the value of Status in the ProjectVersionDescription object. The copy operation has * finished when the value of Status is COPYING_COMPLETED. *

*

* This operation requires permissions to perform the rekognition:CopyProjectVersion action. *

* * @param copyProjectVersionRequest * @return A Java Future containing the result of the CopyProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CopyProjectVersion */ @Override public CompletableFuture copyProjectVersion(CopyProjectVersionRequest copyProjectVersionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, copyProjectVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CopyProjectVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CopyProjectVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CopyProjectVersion") .withMarshaller(new CopyProjectVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(copyProjectVersionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Creates a collection in an AWS Region. You can add faces to the collection using the IndexFaces operation. *

*

* For example, you might create collections, one for each of your application users. A user can then index faces * using the IndexFaces operation and persist results in a specific collection. Then, a user can search * the collection for faces in the user-specific container. *

*

* When you create a collection, it is associated with the latest version of the face model version. *

* *

* Collection names are case-sensitive. *

*
*

* This operation requires permissions to perform the rekognition:CreateCollection action. If you want * to tag your collection, you also require permission to perform the rekognition:TagResource * operation. *

* * @param createCollectionRequest * @return A Java Future containing the result of the CreateCollection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceAlreadyExistsException A resource with the specified ID already exists.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateCollection */ @Override public CompletableFuture createCollection(CreateCollectionRequest createCollectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createCollectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateCollection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateCollectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateCollection") .withMarshaller(new CreateCollectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createCollectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Creates a new Amazon Rekognition Custom Labels dataset. You can create a dataset by using an Amazon Sagemaker * format manifest file or by copying an existing Amazon Rekognition Custom Labels dataset. *

*

* To create a training dataset for a project, specify train for the value of DatasetType. * To create the test dataset for a project, specify test for the value of DatasetType. *

*

* The response from CreateDataset is the Amazon Resource Name (ARN) for the dataset. Creating a * dataset takes a while to complete. Use DescribeDataset to check the current status. The dataset created * successfully if the value of Status is CREATE_COMPLETE. *

*

* To check if any non-terminal errors occurred, call ListDatasetEntries and check for the presence of * errors lists in the JSON Lines. *

*

* Dataset creation fails if a terminal error occurs (Status = CREATE_FAILED). Currently, * you can't access the terminal error information. *

*

* For more information, see Creating dataset in the Amazon Rekognition Custom Labels Developer Guide. *

*

* This operation requires permissions to perform the rekognition:CreateDataset action. If you want to * copy an existing dataset, you also require permission to perform the rekognition:ListDatasetEntries * action. *

* * @param createDatasetRequest * @return A Java Future containing the result of the CreateDataset operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • ResourceAlreadyExistsException A resource with the specified ID already exists.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateDataset */ @Override public CompletableFuture createDataset(CreateDatasetRequest createDatasetRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createDatasetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateDataset"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateDatasetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateDataset") .withMarshaller(new CreateDatasetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createDatasetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* This API operation initiates a Face Liveness session. It returns a SessionId, which you can use to * start streaming Face Liveness video and get the results for a Face Liveness session. You can use the * OutputConfig option in the Settings parameter to provide an Amazon S3 bucket location. The Amazon S3 * bucket stores reference images and audit images. You can use AuditImagesLimit to limit the number of * audit images returned. This number is between 0 and 4. By default, it is set to 0. The limit is best effort and * based on the duration of the selfie-video. *

* * @param createFaceLivenessSessionRequest * @return A Java Future containing the result of the CreateFaceLivenessSession operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateFaceLivenessSession */ @Override public CompletableFuture createFaceLivenessSession( CreateFaceLivenessSessionRequest createFaceLivenessSessionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createFaceLivenessSessionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateFaceLivenessSession"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateFaceLivenessSessionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateFaceLivenessSession") .withMarshaller(new CreateFaceLivenessSessionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createFaceLivenessSessionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Creates a new Amazon Rekognition Custom Labels project. A project is a group of resources (datasets, model * versions) that you use to create and manage Amazon Rekognition Custom Labels models. *

*

* This operation requires permissions to perform the rekognition:CreateProject action. *

* * @param createProjectRequest * @return A Java Future containing the result of the CreateProject operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceInUseException The specified resource is already being used.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateProject */ @Override public CompletableFuture createProject(CreateProjectRequest createProjectRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createProjectRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateProject"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateProjectResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateProject") .withMarshaller(new CreateProjectRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createProjectRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Creates a new version of a model and begins training. Models are managed as part of an Amazon Rekognition Custom * Labels project. The response from CreateProjectVersion is an Amazon Resource Name (ARN) for the * version of the model. *

*

* Training uses the training and test datasets associated with the project. For more information, see Creating * training and test dataset in the Amazon Rekognition Custom Labels Developer Guide. *

* *

* You can train a model in a project that doesn't have associated datasets by specifying manifest files in the * TrainingData and TestingData fields. *

*

* If you open the console after training a model with manifest files, Amazon Rekognition Custom Labels creates the * datasets for you using the most recent manifest files. You can no longer train a model version for the project by * specifying manifest files. *

*

* Instead of training with a project without associated datasets, we recommend that you use the manifest files to * create training and test datasets for the project. *

*
*

* Training takes a while to complete. You can get the current status by calling DescribeProjectVersions. * Training completed successfully if the value of the Status field is TRAINING_COMPLETED. *

*

* If training fails, see Debugging a failed model training in the Amazon Rekognition Custom Labels developer * guide. *

*

* Once training has successfully completed, call DescribeProjectVersions to get the training results and * evaluate the model. For more information, see Improving a trained Amazon Rekognition Custom Labels model in the * Amazon Rekognition Custom Labels developers guide. *

*

* After evaluating the model, you start the model by calling StartProjectVersion. *

*

* This operation requires permissions to perform the rekognition:CreateProjectVersion action. *

* * @param createProjectVersionRequest * @return A Java Future containing the result of the CreateProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateProjectVersion */ @Override public CompletableFuture createProjectVersion( CreateProjectVersionRequest createProjectVersionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createProjectVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateProjectVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateProjectVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateProjectVersion") .withMarshaller(new CreateProjectVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createProjectVersionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Creates an Amazon Rekognition stream processor that you can use to detect and recognize faces or to detect labels * in a streaming video. *

*

* Amazon Rekognition Video is a consumer of live video from Amazon Kinesis Video Streams. There are two different * settings for stream processors in Amazon Rekognition: detecting faces and detecting labels. *

*
    *
  • *

    * If you are creating a stream processor for detecting faces, you provide as input a Kinesis video stream ( * Input) and a Kinesis data stream (Output) stream for receiving the output. You must use * the FaceSearch option in Settings, specifying the collection that contains the faces * you want to recognize. After you have finished analyzing a streaming video, use StopStreamProcessor to * stop processing. *

    *
  • *
  • *

    * If you are creating a stream processor to detect labels, you provide as input a Kinesis video stream ( * Input), Amazon S3 bucket information (Output), and an Amazon SNS topic ARN ( * NotificationChannel). You can also provide a KMS key ID to encrypt the data sent to your Amazon S3 * bucket. You specify what you want to detect by using the ConnectedHome option in settings, and * selecting one of the following: PERSON, PET, PACKAGE, ALL You * can also specify where in the frame you want Amazon Rekognition to monitor with RegionsOfInterest. * When you run the StartStreamProcessor operation on a label detection stream processor, you input start and * stop information to determine the length of the processing time. *

    *
  • *
*

* Use Name to assign an identifier for the stream processor. You use Name to manage the * stream processor. For example, you can start processing the source video by calling StartStreamProcessor * with the Name field. *

*

* This operation requires permissions to perform the rekognition:CreateStreamProcessor action. If you * want to tag your stream processor, you also require permission to perform the * rekognition:TagResource operation. *

* * @param createStreamProcessorRequest * @return A Java Future containing the result of the CreateStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateStreamProcessor */ @Override public CompletableFuture createStreamProcessor( CreateStreamProcessorRequest createStreamProcessorRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createStreamProcessorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateStreamProcessor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateStreamProcessorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateStreamProcessor") .withMarshaller(new CreateStreamProcessorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createStreamProcessorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Creates a new User within a collection specified by CollectionId. Takes UserId as a * parameter, which is a user provided ID which should be unique within the collection. The provided * UserId will alias the system generated UUID to make the UserId more user friendly. *

*

* Uses a ClientToken, an idempotency token that ensures a call to CreateUser completes * only once. If the value is not supplied, the AWS SDK generates an idempotency token for the requests. This * prevents retries after a network error results from making multiple CreateUser calls. *

* * @param createUserRequest * @return A Java Future containing the result of the CreateUser operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ConflictException A User with the same Id already exists within the collection, or the update or * deletion of the User caused an inconsistent state. **
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.CreateUser */ @Override public CompletableFuture createUser(CreateUserRequest createUserRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createUserRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateUser"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateUserResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("CreateUser") .withMarshaller(new CreateUserRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createUserRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes the specified collection. Note that this operation removes all faces in the collection. For an example, * see Deleting a * collection. *

*

* This operation requires permissions to perform the rekognition:DeleteCollection action. *

* * @param deleteCollectionRequest * @return A Java Future containing the result of the DeleteCollection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteCollection */ @Override public CompletableFuture deleteCollection(DeleteCollectionRequest deleteCollectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteCollectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteCollection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteCollectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteCollection") .withMarshaller(new DeleteCollectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteCollectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes an existing Amazon Rekognition Custom Labels dataset. Deleting a dataset might take while. Use * DescribeDataset to check the current status. The dataset is still deleting if the value of * Status is DELETE_IN_PROGRESS. If you try to access the dataset after it is deleted, you * get a ResourceNotFoundException exception. *

*

* You can't delete a dataset while it is creating (Status = CREATE_IN_PROGRESS) or if the * dataset is updating (Status = UPDATE_IN_PROGRESS). *

*

* This operation requires permissions to perform the rekognition:DeleteDataset action. *

* * @param deleteDatasetRequest * @return A Java Future containing the result of the DeleteDataset operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteDataset */ @Override public CompletableFuture deleteDataset(DeleteDatasetRequest deleteDatasetRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteDatasetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteDataset"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteDatasetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteDataset") .withMarshaller(new DeleteDatasetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteDatasetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes faces from a collection. You specify a collection ID and an array of face IDs to remove from the * collection. *

*

* This operation requires permissions to perform the rekognition:DeleteFaces action. *

* * @param deleteFacesRequest * @return A Java Future containing the result of the DeleteFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteFaces */ @Override public CompletableFuture deleteFaces(DeleteFacesRequest deleteFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFaces").withMarshaller(new DeleteFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes an Amazon Rekognition Custom Labels project. To delete a project you must first delete all models * associated with the project. To delete a model, see DeleteProjectVersion. *

*

* DeleteProject is an asynchronous operation. To check if the project is deleted, call * DescribeProjects. The project is deleted when the project no longer appears in the response. Be aware that * deleting a given project will also delete any ProjectPolicies associated with that project. *

*

* This operation requires permissions to perform the rekognition:DeleteProject action. *

* * @param deleteProjectRequest * @return A Java Future containing the result of the DeleteProject operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteProject */ @Override public CompletableFuture deleteProject(DeleteProjectRequest deleteProjectRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProjectRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProject"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteProjectResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteProject") .withMarshaller(new DeleteProjectRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteProjectRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes an existing project policy. *

*

* To get a list of project policies attached to a project, call ListProjectPolicies. To attach a project * policy to a project, call PutProjectPolicy. *

*

* This operation requires permissions to perform the rekognition:DeleteProjectPolicy action. *

* * @param deleteProjectPolicyRequest * @return A Java Future containing the result of the DeleteProjectPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidPolicyRevisionIdException The supplied revision id for the project policy is invalid.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteProjectPolicy */ @Override public CompletableFuture deleteProjectPolicy( DeleteProjectPolicyRequest deleteProjectPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProjectPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProjectPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteProjectPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteProjectPolicy") .withMarshaller(new DeleteProjectPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteProjectPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes an Amazon Rekognition Custom Labels model. *

*

* You can't delete a model if it is running or if it is training. To check the status of a model, use the * Status field returned from DescribeProjectVersions. To stop a running model call * StopProjectVersion. If the model is training, wait until it finishes. *

*

* This operation requires permissions to perform the rekognition:DeleteProjectVersion action. *

* * @param deleteProjectVersionRequest * @return A Java Future containing the result of the DeleteProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteProjectVersion */ @Override public CompletableFuture deleteProjectVersion( DeleteProjectVersionRequest deleteProjectVersionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProjectVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProjectVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteProjectVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteProjectVersion") .withMarshaller(new DeleteProjectVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteProjectVersionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes the stream processor identified by Name. You assign the value for Name when you * create the stream processor with CreateStreamProcessor. You might not be able to use the same name for a * stream processor for a few seconds after calling DeleteStreamProcessor. *

* * @param deleteStreamProcessorRequest * @return A Java Future containing the result of the DeleteStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteStreamProcessor */ @Override public CompletableFuture deleteStreamProcessor( DeleteStreamProcessorRequest deleteStreamProcessorRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteStreamProcessorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteStreamProcessor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteStreamProcessorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteStreamProcessor") .withMarshaller(new DeleteStreamProcessorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteStreamProcessorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes the specified UserID within the collection. Faces that are associated with the UserID are disassociated * from the UserID before deleting the specified UserID. If the specified Collection or * UserID is already deleted or not found, a ResourceNotFoundException will be thrown. If * the action is successful with a 200 response, an empty HTTP body is returned. *

* * @param deleteUserRequest * @return A Java Future containing the result of the DeleteUser operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ConflictException A User with the same Id already exists within the collection, or the update or * deletion of the User caused an inconsistent state. **
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DeleteUser */ @Override public CompletableFuture deleteUser(DeleteUserRequest deleteUserRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteUserRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteUser"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteUserResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("DeleteUser") .withMarshaller(new DeleteUserRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteUserRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Describes the specified collection. You can use DescribeCollection to get information, such as the * number of faces indexed into a collection and the version of the model used by the collection for face detection. *

*

* For more information, see Describing a Collection in the Amazon Rekognition Developer Guide. *

* * @param describeCollectionRequest * @return A Java Future containing the result of the DescribeCollection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DescribeCollection */ @Override public CompletableFuture describeCollection(DescribeCollectionRequest describeCollectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeCollectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeCollection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeCollectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeCollection") .withMarshaller(new DescribeCollectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeCollectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Describes an Amazon Rekognition Custom Labels dataset. You can get information such as the current status of a * dataset and statistics about the images and labels in a dataset. *

*

* This operation requires permissions to perform the rekognition:DescribeDataset action. *

* * @param describeDatasetRequest * @return A Java Future containing the result of the DescribeDataset operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DescribeDataset */ @Override public CompletableFuture describeDataset(DescribeDatasetRequest describeDatasetRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDatasetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDataset"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeDatasetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeDataset") .withMarshaller(new DescribeDatasetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeDatasetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Lists and describes the versions of a model in an Amazon Rekognition Custom Labels project. You can specify up to * 10 model versions in ProjectVersionArns. If you don't specify a value, descriptions for all model * versions in the project are returned. *

*

* This operation requires permissions to perform the rekognition:DescribeProjectVersions action. *

* * @param describeProjectVersionsRequest * @return A Java Future containing the result of the DescribeProjectVersions operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DescribeProjectVersions */ @Override public CompletableFuture describeProjectVersions( DescribeProjectVersionsRequest describeProjectVersionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeProjectVersionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeProjectVersions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeProjectVersionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeProjectVersions") .withMarshaller(new DescribeProjectVersionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeProjectVersionsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets information about your Amazon Rekognition Custom Labels projects. *

*

* This operation requires permissions to perform the rekognition:DescribeProjects action. *

* * @param describeProjectsRequest * @return A Java Future containing the result of the DescribeProjects operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DescribeProjects */ @Override public CompletableFuture describeProjects(DescribeProjectsRequest describeProjectsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeProjectsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeProjects"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeProjectsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeProjects") .withMarshaller(new DescribeProjectsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeProjectsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Provides information about a stream processor created by CreateStreamProcessor. You can get information * about the input and output streams, the input parameters for the face recognition being performed, and the * current status of the stream processor. *

* * @param describeStreamProcessorRequest * @return A Java Future containing the result of the DescribeStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DescribeStreamProcessor */ @Override public CompletableFuture describeStreamProcessor( DescribeStreamProcessorRequest describeStreamProcessorRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeStreamProcessorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeStreamProcessor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeStreamProcessorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeStreamProcessor") .withMarshaller(new DescribeStreamProcessorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeStreamProcessorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects custom labels in a supplied image by using an Amazon Rekognition Custom Labels model. *

*

* You specify which version of a model version to use by using the ProjectVersionArn input parameter. *

*

* You pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If * you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The image must * be either a PNG or JPEG formatted file. *

*

* For each object that the model version detects on an image, the API returns a (CustomLabel) object * in an array (CustomLabels). Each CustomLabel object provides the label name ( * Name), the level of confidence that the image contains the object (Confidence), and * object location information, if it exists, for the label on the image (Geometry). *

*

* To filter labels that are returned, specify a value for MinConfidence. * DetectCustomLabelsLabels only returns labels with a confidence that's higher than the specified * value. The value of MinConfidence maps to the assumed threshold values created during training. For * more information, see Assumed threshold in the Amazon Rekognition Custom Labels Developer Guide. Amazon * Rekognition Custom Labels metrics expresses an assumed threshold as a floating point value between 0-1. The range * of MinConfidence normalizes the threshold value to a percentage value (0-100). Confidence responses * from DetectCustomLabels are also returned as a percentage. You can use MinConfidence to * change the precision and recall or your model. For more information, see Analyzing an image in the Amazon * Rekognition Custom Labels Developer Guide. *

*

* If you don't specify a value for MinConfidence, DetectCustomLabels returns labels based * on the assumed threshold of each label. *

*

* This is a stateless API operation. That is, the operation does not persist any data. *

*

* This operation requires permissions to perform the rekognition:DetectCustomLabels action. *

*

* For more information, see Analyzing an image in the Amazon Rekognition Custom Labels Developer Guide. *

* * @param detectCustomLabelsRequest * @return A Java Future containing the result of the DetectCustomLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceNotReadyException The requested resource isn't ready. For example, this exception occurs when * you call DetectCustomLabels with a model version that isn't deployed.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DetectCustomLabels */ @Override public CompletableFuture detectCustomLabels(DetectCustomLabelsRequest detectCustomLabelsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, detectCustomLabelsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectCustomLabels"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DetectCustomLabelsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DetectCustomLabels") .withMarshaller(new DetectCustomLabelsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(detectCustomLabelsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects faces within an image that is provided as input. *

*

* DetectFaces detects the 100 largest faces in the image. For each face detected, the operation * returns face details. These details include a bounding box of the face, a confidence value (that the bounding box * contains a face), and a fixed set of attributes such as facial landmarks (for example, coordinates of eye and * mouth), pose, presence of facial occlusion, and so on. *

*

* The face-detection algorithm is most effective on frontal faces. For non-frontal or obscured faces, the algorithm * might not detect the faces or might detect faces with lower confidence. *

*

* You pass the input image either as base64-encoded image bytes or as a reference to an image in an Amazon S3 * bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The * image must be either a PNG or JPEG formatted file. *

* *

* This is a stateless API operation. That is, the operation does not persist any data. *

*
*

* This operation requires permissions to perform the rekognition:DetectFaces action. *

* * @param detectFacesRequest * @return A Java Future containing the result of the DetectFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DetectFaces */ @Override public CompletableFuture detectFaces(DetectFacesRequest detectFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, detectFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DetectFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DetectFaces").withMarshaller(new DetectFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(detectFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects instances of real-world entities within an image (JPEG or PNG) provided as input. This includes objects * like flower, tree, and table; events like wedding, graduation, and birthday party; and concepts like landscape, * evening, and nature. *

*

* For an example, see Analyzing images stored in an Amazon S3 bucket in the Amazon Rekognition Developer Guide. *

*

* You pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If * you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The image must * be either a PNG or JPEG formatted file. *

*

* Optional Parameters *

*

* You can specify one or both of the GENERAL_LABELS and IMAGE_PROPERTIES feature types * when calling the DetectLabels API. Including GENERAL_LABELS will ensure the response includes the * labels detected in the input image, while including IMAGE_PROPERTIES will ensure the response * includes information about the image quality and color. *

*

* When using GENERAL_LABELS and/or IMAGE_PROPERTIES you can provide filtering criteria to * the Settings parameter. You can filter with sets of individual labels or with label categories. You can specify * inclusive filters, exclusive filters, or a combination of inclusive and exclusive filters. For more information * on filtering see Detecting Labels in an * Image. *

*

* You can specify MinConfidence to control the confidence threshold for the labels returned. The * default is 55%. You can also add the MaxLabels parameter to limit the number of labels returned. The * default and upper limit is 1000 labels. *

*

* Response Elements *

*

* For each object, scene, and concept the API returns one or more labels. The API returns the following types of * information about labels: *

*
    *
  • *

    * Name - The name of the detected label. *

    *
  • *
  • *

    * Confidence - The level of confidence in the label assigned to a detected object. *

    *
  • *
  • *

    * Parents - The ancestor labels for a detected label. DetectLabels returns a hierarchical taxonomy of detected * labels. For example, a detected car might be assigned the label car. The label car has two parent labels: Vehicle * (its parent) and Transportation (its grandparent). The response includes the all ancestors for a label, where * every ancestor is a unique label. In the previous example, Car, Vehicle, and Transportation are returned as * unique labels in the response. *

    *
  • *
  • *

    * Aliases - Possible Aliases for the label. *

    *
  • *
  • *

    * Categories - The label categories that the detected label belongs to. *

    *
  • *
  • *

    * BoundingBox — Bounding boxes are described for all instances of detected common object labels, returned in an * array of Instance objects. An Instance object contains a BoundingBox object, describing the location of the label * on the input image. It also includes the confidence for the accuracy of the detected bounding box. *

    *
  • *
*

* The API returns the following information regarding the image, as part of the ImageProperties structure: *

*
    *
  • *

    * Quality - Information about the Sharpness, Brightness, and Contrast of the input image, scored between 0 to 100. * Image quality is returned for the entire image, as well as the background and the foreground. *

    *
  • *
  • *

    * Dominant Color - An array of the dominant colors in the image. *

    *
  • *
  • *

    * Foreground - Information about the sharpness, brightness, and dominant colors of the input image’s foreground. *

    *
  • *
  • *

    * Background - Information about the sharpness, brightness, and dominant colors of the input image’s background. *

    *
  • *
*

* The list of returned labels will include at least one label for every detected object, along with information * about that label. In the following example, suppose the input image has a lighthouse, the sea, and a rock. The * response includes all three labels, one for each object, as well as the confidence in the label: *

*

* {Name: lighthouse, Confidence: 98.4629} *

*

* {Name: rock,Confidence: 79.2097} *

*

* {Name: sea,Confidence: 75.061} *

*

* The list of labels can include multiple labels for the same object. For example, if the input image shows a * flower (for example, a tulip), the operation might return the following three labels. *

*

* {Name: flower,Confidence: 99.0562} *

*

* {Name: plant,Confidence: 99.0562} *

*

* {Name: tulip,Confidence: 99.0562} *

*

* In this example, the detection algorithm more precisely identifies the flower as a tulip. *

* *

* If the object detected is a person, the operation doesn't provide the same facial details that the * DetectFaces operation provides. *

*
*

* This is a stateless API operation that doesn't return any data. *

*

* This operation requires permissions to perform the rekognition:DetectLabels action. *

* * @param detectLabelsRequest * @return A Java Future containing the result of the DetectLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DetectLabels */ @Override public CompletableFuture detectLabels(DetectLabelsRequest detectLabelsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, detectLabelsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectLabels"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DetectLabelsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DetectLabels").withMarshaller(new DetectLabelsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(detectLabelsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects unsafe content in a specified JPEG or PNG format image. Use DetectModerationLabels to * moderate images depending on your requirements. For example, you might want to filter images that contain nudity, * but not images containing suggestive content. *

*

* To filter images, use the labels returned by DetectModerationLabels to determine which types of * content are appropriate. *

*

* For information about moderation labels, see Detecting Unsafe Content in the Amazon Rekognition Developer Guide. *

*

* You pass the input image either as base64-encoded image bytes or as a reference to an image in an Amazon S3 * bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The * image must be either a PNG or JPEG formatted file. *

* * @param detectModerationLabelsRequest * @return A Java Future containing the result of the DetectModerationLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • HumanLoopQuotaExceededException The number of in-progress human reviews you have has exceeded the * number allowed.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DetectModerationLabels */ @Override public CompletableFuture detectModerationLabels( DetectModerationLabelsRequest detectModerationLabelsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, detectModerationLabelsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectModerationLabels"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DetectModerationLabelsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DetectModerationLabels") .withMarshaller(new DetectModerationLabelsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(detectModerationLabelsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects Personal Protective Equipment (PPE) worn by people detected in an image. Amazon Rekognition can detect * the following types of PPE. *

*
    *
  • *

    * Face cover *

    *
  • *
  • *

    * Hand cover *

    *
  • *
  • *

    * Head cover *

    *
  • *
*

* You pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. The * image must be either a PNG or JPG formatted file. *

*

* DetectProtectiveEquipment detects PPE worn by up to 15 persons detected in an image. *

*

* For each person detected in the image the API returns an array of body parts (face, head, left-hand, right-hand). * For each body part, an array of detected items of PPE is returned, including an indicator of whether or not the * PPE covers the body part. The API returns the confidence it has in each detection (person, PPE, body part and * body part coverage). It also returns a bounding box (BoundingBox) for each detected person and each * detected item of PPE. *

*

* You can optionally request a summary of detected PPE items with the SummarizationAttributes input * parameter. The summary provides the following information. *

*
    *
  • *

    * The persons detected as wearing all of the types of PPE that you specify. *

    *
  • *
  • *

    * The persons detected as not wearing all of the types PPE that you specify. *

    *
  • *
  • *

    * The persons detected where PPE adornment could not be determined. *

    *
  • *
*

* This is a stateless API operation. That is, the operation does not persist any data. *

*

* This operation requires permissions to perform the rekognition:DetectProtectiveEquipment action. *

* * @param detectProtectiveEquipmentRequest * @return A Java Future containing the result of the DetectProtectiveEquipment operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DetectProtectiveEquipment */ @Override public CompletableFuture detectProtectiveEquipment( DetectProtectiveEquipmentRequest detectProtectiveEquipmentRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, detectProtectiveEquipmentRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectProtectiveEquipment"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DetectProtectiveEquipmentResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DetectProtectiveEquipment") .withMarshaller(new DetectProtectiveEquipmentRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(detectProtectiveEquipmentRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects text in the input image and converts it into machine-readable text. *

*

* Pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If you * use the AWS CLI to call Amazon Rekognition operations, you must pass it as a reference to an image in an Amazon * S3 bucket. For the AWS CLI, passing image bytes is not supported. The image must be either a .png or .jpeg * formatted file. *

*

* The DetectText operation returns text in an array of TextDetection elements, * TextDetections. Each TextDetection element provides information about a single word or * line of text that was detected in the image. *

*

* A word is one or more script characters that are not separated by spaces. DetectText can detect up * to 100 words in an image. *

*

* A line is a string of equally spaced words. A line isn't necessarily a complete sentence. For example, a driver's * license number is detected as a line. A line ends when there is no aligned text after it. Also, a line ends when * there is a large gap between words, relative to the length of the words. This means, depending on the gap between * words, Amazon Rekognition may detect multiple lines in text aligned in the same direction. Periods don't * represent the end of a line. If a sentence spans multiple lines, the DetectText operation returns * multiple lines. *

*

* To determine whether a TextDetection element is a line of text or a word, use the * TextDetection object Type field. *

*

* To be detected, text must be within +/- 90 degrees orientation of the horizontal axis. *

*

* For more information, see Detecting text in the Amazon Rekognition Developer Guide. *

* * @param detectTextRequest * @return A Java Future containing the result of the DetectText operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DetectText */ @Override public CompletableFuture detectText(DetectTextRequest detectTextRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, detectTextRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectText"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DetectTextResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("DetectText") .withMarshaller(new DetectTextRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(detectTextRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Removes the association between a Face supplied in an array of FaceIds and the User. If * the User is not present already, then a ResourceNotFound exception is thrown. If successful, an * array of faces that are disassociated from the User is returned. If a given face is already disassociated from * the given UserID, it will be ignored and not be returned in the response. If a given face is already associated * with a different User or not found in the collection it will be returned as part of * UnsuccessfulDisassociations. You can remove 1 - 100 face IDs from a user at one time. *

* * @param disassociateFacesRequest * @return A Java Future containing the result of the DisassociateFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ConflictException A User with the same Id already exists within the collection, or the update or * deletion of the User caused an inconsistent state. **
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DisassociateFaces */ @Override public CompletableFuture disassociateFaces(DisassociateFacesRequest disassociateFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, disassociateFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DisassociateFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DisassociateFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DisassociateFaces") .withMarshaller(new DisassociateFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(disassociateFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Distributes the entries (images) in a training dataset across the training dataset and the test dataset for a * project. DistributeDatasetEntries moves 20% of the training dataset images to the test dataset. An * entry is a JSON Line that describes an image. *

*

* You supply the Amazon Resource Names (ARN) of a project's training dataset and test dataset. The training dataset * must contain the images that you want to split. The test dataset must be empty. The datasets must belong to the * same project. To create training and test datasets for a project, call CreateDataset. *

*

* Distributing a dataset takes a while to complete. To check the status call DescribeDataset. The * operation is complete when the Status field for the training dataset and the test dataset is * UPDATE_COMPLETE. If the dataset split fails, the value of Status is * UPDATE_FAILED. *

*

* This operation requires permissions to perform the rekognition:DistributeDatasetEntries action. *

* * @param distributeDatasetEntriesRequest * @return A Java Future containing the result of the DistributeDatasetEntries operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotReadyException The requested resource isn't ready. For example, this exception occurs when * you call DetectCustomLabels with a model version that isn't deployed.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.DistributeDatasetEntries */ @Override public CompletableFuture distributeDatasetEntries( DistributeDatasetEntriesRequest distributeDatasetEntriesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, distributeDatasetEntriesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DistributeDatasetEntries"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DistributeDatasetEntriesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DistributeDatasetEntries") .withMarshaller(new DistributeDatasetEntriesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(distributeDatasetEntriesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the name and additional information about a celebrity based on their Amazon Rekognition ID. The additional * information is returned as an array of URLs. If there is no additional information about the celebrity, this list * is empty. *

*

* For more information, see Getting information about a celebrity in the Amazon Rekognition Developer Guide. *

*

* This operation requires permissions to perform the rekognition:GetCelebrityInfo action. *

* * @param getCelebrityInfoRequest * @return A Java Future containing the result of the GetCelebrityInfo operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetCelebrityInfo */ @Override public CompletableFuture getCelebrityInfo(GetCelebrityInfoRequest getCelebrityInfoRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getCelebrityInfoRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetCelebrityInfo"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetCelebrityInfoResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetCelebrityInfo") .withMarshaller(new GetCelebrityInfoRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getCelebrityInfoRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the celebrity recognition results for a Amazon Rekognition Video analysis started by * StartCelebrityRecognition. *

*

* Celebrity recognition in a video is an asynchronous operation. Analysis is started by a call to * StartCelebrityRecognition which returns a job identifier (JobId). *

*

* When the celebrity recognition operation finishes, Amazon Rekognition Video publishes a completion status to the * Amazon Simple Notification Service topic registered in the initial call to StartCelebrityRecognition * . To get the results of the celebrity recognition analysis, first check that the status value published to the * Amazon SNS topic is SUCCEEDED. If so, call GetCelebrityDetection and pass the job * identifier (JobId) from the initial call to StartCelebrityDetection. *

*

* For more information, see Working With Stored Videos in the Amazon Rekognition Developer Guide. *

*

* GetCelebrityRecognition returns detected celebrities and the time(s) they are detected in an array ( * Celebrities) of CelebrityRecognition objects. Each CelebrityRecognition contains * information about the celebrity in a CelebrityDetail object and the time, Timestamp, the * celebrity was detected. This CelebrityDetail object stores information about the detected celebrity's face * attributes, a face bounding box, known gender, the celebrity's name, and a confidence estimate. *

* *

* GetCelebrityRecognition only returns the default facial attributes (BoundingBox, * Confidence, Landmarks, Pose, and Quality). The * BoundingBox field only applies to the detected face instance. The other facial attributes listed in * the Face object of the following response syntax are not returned. For more information, see * FaceDetail in the Amazon Rekognition Developer Guide. *

*
*

* By default, the Celebrities array is sorted by time (milliseconds from the start of the video). You * can also sort the array by celebrity by specifying the value ID in the SortBy input * parameter. *

*

* The CelebrityDetail object includes the celebrity identifer and additional information urls. If you * don't store the additional information urls, you can get them later by calling GetCelebrityInfo with the * celebrity identifer. *

*

* No information is returned for faces not recognized as celebrities. *

*

* Use MaxResults parameter to limit the number of labels returned. If there are more results than specified in * MaxResults, the value of NextToken in the operation response contains a pagination * token for getting the next set of results. To get the next page of results, call * GetCelebrityDetection and populate the NextToken request parameter with the token value * returned from the previous call to GetCelebrityRecognition. *

* * @param getCelebrityRecognitionRequest * @return A Java Future containing the result of the GetCelebrityRecognition operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetCelebrityRecognition */ @Override public CompletableFuture getCelebrityRecognition( GetCelebrityRecognitionRequest getCelebrityRecognitionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getCelebrityRecognitionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetCelebrityRecognition"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetCelebrityRecognitionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetCelebrityRecognition") .withMarshaller(new GetCelebrityRecognitionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getCelebrityRecognitionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the inappropriate, unwanted, or offensive content analysis results for a Amazon Rekognition Video analysis * started by StartContentModeration. For a list of moderation labels in Amazon Rekognition, see Using the image and video * moderation APIs. *

*

* Amazon Rekognition Video inappropriate or offensive content detection in a stored video is an asynchronous * operation. You start analysis by calling StartContentModeration which returns a job identifier ( * JobId). When analysis finishes, Amazon Rekognition Video publishes a completion status to the Amazon * Simple Notification Service topic registered in the initial call to StartContentModeration. To get * the results of the content analysis, first check that the status value published to the Amazon SNS topic is * SUCCEEDED. If so, call GetContentModeration and pass the job identifier ( * JobId) from the initial call to StartContentModeration. *

*

* For more information, see Working with Stored Videos in the Amazon Rekognition Devlopers Guide. *

*

* GetContentModeration returns detected inappropriate, unwanted, or offensive content moderation * labels, and the time they are detected, in an array, ModerationLabels, of * ContentModerationDetection objects. *

*

* By default, the moderated labels are returned sorted by time, in milliseconds from the start of the video. You * can also sort them by moderated label by specifying NAME for the SortBy input * parameter. *

*

* Since video analysis can return a large number of results, use the MaxResults parameter to limit the * number of labels returned in a single call to GetContentModeration. If there are more results than * specified in MaxResults, the value of NextToken in the operation response contains a * pagination token for getting the next set of results. To get the next page of results, call * GetContentModeration and populate the NextToken request parameter with the value of * NextToken returned from the previous call to GetContentModeration. *

*

* For more information, see moderating content in the Amazon Rekognition Developer Guide. *

* * @param getContentModerationRequest * @return A Java Future containing the result of the GetContentModeration operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetContentModeration */ @Override public CompletableFuture getContentModeration( GetContentModerationRequest getContentModerationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getContentModerationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetContentModeration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetContentModerationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetContentModeration") .withMarshaller(new GetContentModerationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getContentModerationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets face detection results for a Amazon Rekognition Video analysis started by StartFaceDetection. *

*

* Face detection with Amazon Rekognition Video is an asynchronous operation. You start face detection by calling * StartFaceDetection which returns a job identifier (JobId). When the face detection operation * finishes, Amazon Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic * registered in the initial call to StartFaceDetection. To get the results of the face detection * operation, first check that the status value published to the Amazon SNS topic is SUCCEEDED. If so, * call GetFaceDetection and pass the job identifier (JobId) from the initial call to * StartFaceDetection. *

*

* GetFaceDetection returns an array of detected faces (Faces) sorted by the time the * faces were detected. *

*

* Use MaxResults parameter to limit the number of labels returned. If there are more results than specified in * MaxResults, the value of NextToken in the operation response contains a pagination * token for getting the next set of results. To get the next page of results, call GetFaceDetection * and populate the NextToken request parameter with the token value returned from the previous call to * GetFaceDetection. *

* * @param getFaceDetectionRequest * @return A Java Future containing the result of the GetFaceDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetFaceDetection */ @Override public CompletableFuture getFaceDetection(GetFaceDetectionRequest getFaceDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getFaceDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFaceDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFaceDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFaceDetection") .withMarshaller(new GetFaceDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getFaceDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Retrieves the results of a specific Face Liveness session. It requires the sessionId as input, which * was created using CreateFaceLivenessSession. Returns the corresponding Face Liveness confidence * score, a reference image that includes a face bounding box, and audit images that also contain face bounding * boxes. The Face Liveness confidence score ranges from 0 to 100. The reference image can optionally be returned. *

* * @param getFaceLivenessSessionResultsRequest * @return A Java Future containing the result of the GetFaceLivenessSessionResults operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • SessionNotFoundException Occurs when a given sessionId is not found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetFaceLivenessSessionResults */ @Override public CompletableFuture getFaceLivenessSessionResults( GetFaceLivenessSessionResultsRequest getFaceLivenessSessionResultsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getFaceLivenessSessionResultsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFaceLivenessSessionResults"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFaceLivenessSessionResultsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFaceLivenessSessionResults") .withMarshaller(new GetFaceLivenessSessionResultsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getFaceLivenessSessionResultsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the face search results for Amazon Rekognition Video face search started by StartFaceSearch. The * search returns faces in a collection that match the faces of persons detected in a video. It also includes the * time(s) that faces are matched in the video. *

*

* Face search in a video is an asynchronous operation. You start face search by calling to StartFaceSearch * which returns a job identifier (JobId). When the search operation finishes, Amazon Rekognition Video * publishes a completion status to the Amazon Simple Notification Service topic registered in the initial call to * StartFaceSearch. To get the search results, first check that the status value published to the * Amazon SNS topic is SUCCEEDED. If so, call GetFaceSearch and pass the job identifier ( * JobId) from the initial call to StartFaceSearch. *

*

* For more information, see Searching Faces in a Collection in the Amazon Rekognition Developer Guide. *

*

* The search results are retured in an array, Persons, of PersonMatch objects. Each * PersonMatch element contains details about the matching faces in the input collection, person * information (facial attributes, bounding boxes, and person identifer) for the matched person, and the time the * person was matched in the video. *

* *

* GetFaceSearch only returns the default facial attributes (BoundingBox, * Confidence, Landmarks, Pose, and Quality). The other facial * attributes listed in the Face object of the following response syntax are not returned. For more * information, see FaceDetail in the Amazon Rekognition Developer Guide. *

*
*

* By default, the Persons array is sorted by the time, in milliseconds from the start of the video, * persons are matched. You can also sort by persons by specifying INDEX for the SORTBY * input parameter. *

* * @param getFaceSearchRequest * @return A Java Future containing the result of the GetFaceSearch operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetFaceSearch */ @Override public CompletableFuture getFaceSearch(GetFaceSearchRequest getFaceSearchRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getFaceSearchRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFaceSearch"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetFaceSearchResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFaceSearch") .withMarshaller(new GetFaceSearchRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getFaceSearchRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the label detection results of a Amazon Rekognition Video analysis started by StartLabelDetection. *

*

* The label detection operation is started by a call to StartLabelDetection which returns a job identifier ( * JobId). When the label detection operation finishes, Amazon Rekognition publishes a completion * status to the Amazon Simple Notification Service topic registered in the initial call to * StartlabelDetection. *

*

* To get the results of the label detection operation, first check that the status value published to the Amazon * SNS topic is SUCCEEDED. If so, call GetLabelDetection and pass the job identifier ( * JobId) from the initial call to StartLabelDetection. *

*

* GetLabelDetection returns an array of detected labels (Labels) sorted by the time the * labels were detected. You can also sort by the label name by specifying NAME for the * SortBy input parameter. If there is no NAME specified, the default sort is by * timestamp. *

*

* You can select how results are aggregated by using the AggregateBy input parameter. The default * aggregation method is TIMESTAMPS. You can also aggregate by SEGMENTS, which aggregates * all instances of labels detected in a given segment. *

*

* The returned Labels array may include the following attributes: *

*
    *
  • *

    * Name - The name of the detected label. *

    *
  • *
  • *

    * Confidence - The level of confidence in the label assigned to a detected object. *

    *
  • *
  • *

    * Parents - The ancestor labels for a detected label. GetLabelDetection returns a hierarchical taxonomy of detected * labels. For example, a detected car might be assigned the label car. The label car has two parent labels: Vehicle * (its parent) and Transportation (its grandparent). The response includes the all ancestors for a label, where * every ancestor is a unique label. In the previous example, Car, Vehicle, and Transportation are returned as * unique labels in the response. *

    *
  • *
  • *

    * Aliases - Possible Aliases for the label. *

    *
  • *
  • *

    * Categories - The label categories that the detected label belongs to. *

    *
  • *
  • *

    * BoundingBox — Bounding boxes are described for all instances of detected common object labels, returned in an * array of Instance objects. An Instance object contains a BoundingBox object, describing the location of the label * on the input image. It also includes the confidence for the accuracy of the detected bounding box. *

    *
  • *
  • *

    * Timestamp - Time, in milliseconds from the start of the video, that the label was detected. For aggregation by * SEGMENTS, the StartTimestampMillis, EndTimestampMillis, and * DurationMillis structures are what define a segment. Although the “Timestamp” structure is still * returned with each label, its value is set to be the same as StartTimestampMillis. *

    *
  • *
*

* Timestamp and Bounding box information are returned for detected Instances, only if aggregation is done by * TIMESTAMPS. If aggregating by SEGMENTS, information about detected instances isn’t * returned. *

*

* The version of the label model used for the detection is also returned. *

*

* Note DominantColors isn't returned for Instances, although it is shown as part of * the response in the sample seen below. *

*

* Use MaxResults parameter to limit the number of labels returned. If there are more results than * specified in MaxResults, the value of NextToken in the operation response contains a * pagination token for getting the next set of results. To get the next page of results, call * GetlabelDetection and populate the NextToken request parameter with the token value * returned from the previous call to GetLabelDetection. *

* * @param getLabelDetectionRequest * @return A Java Future containing the result of the GetLabelDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetLabelDetection */ @Override public CompletableFuture getLabelDetection(GetLabelDetectionRequest getLabelDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getLabelDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLabelDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetLabelDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLabelDetection") .withMarshaller(new GetLabelDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getLabelDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the path tracking results of a Amazon Rekognition Video analysis started by StartPersonTracking. *

*

* The person path tracking operation is started by a call to StartPersonTracking which returns a job * identifier (JobId). When the operation finishes, Amazon Rekognition Video publishes a completion * status to the Amazon Simple Notification Service topic registered in the initial call to * StartPersonTracking. *

*

* To get the results of the person path tracking operation, first check that the status value published to the * Amazon SNS topic is SUCCEEDED. If so, call GetPersonTracking and pass the job identifier ( * JobId) from the initial call to StartPersonTracking. *

*

* GetPersonTracking returns an array, Persons, of tracked persons and the time(s) their * paths were tracked in the video. *

* *

* GetPersonTracking only returns the default facial attributes (BoundingBox, * Confidence, Landmarks, Pose, and Quality). The other facial * attributes listed in the Face object of the following response syntax are not returned. *

*

* For more information, see FaceDetail in the Amazon Rekognition Developer Guide. *

*
*

* By default, the array is sorted by the time(s) a person's path is tracked in the video. You can sort by tracked * persons by specifying INDEX for the SortBy input parameter. *

*

* Use the MaxResults parameter to limit the number of items returned. If there are more results than * specified in MaxResults, the value of NextToken in the operation response contains a * pagination token for getting the next set of results. To get the next page of results, call * GetPersonTracking and populate the NextToken request parameter with the token value * returned from the previous call to GetPersonTracking. *

* * @param getPersonTrackingRequest * @return A Java Future containing the result of the GetPersonTracking operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetPersonTracking */ @Override public CompletableFuture getPersonTracking(GetPersonTrackingRequest getPersonTrackingRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getPersonTrackingRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetPersonTracking"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetPersonTrackingResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetPersonTracking") .withMarshaller(new GetPersonTrackingRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getPersonTrackingRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the segment detection results of a Amazon Rekognition Video analysis started by * StartSegmentDetection. *

*

* Segment detection with Amazon Rekognition Video is an asynchronous operation. You start segment detection by * calling StartSegmentDetection which returns a job identifier (JobId). When the segment * detection operation finishes, Amazon Rekognition publishes a completion status to the Amazon Simple Notification * Service topic registered in the initial call to StartSegmentDetection. To get the results of the * segment detection operation, first check that the status value published to the Amazon SNS topic is * SUCCEEDED. if so, call GetSegmentDetection and pass the job identifier ( * JobId) from the initial call of StartSegmentDetection. *

*

* GetSegmentDetection returns detected segments in an array (Segments) of * SegmentDetection objects. Segments is sorted by the segment types specified in the * SegmentTypes input parameter of StartSegmentDetection. Each element of the array * includes the detected segment, the precentage confidence in the acuracy of the detected segment, the type of the * segment, and the frame in which the segment was detected. *

*

* Use SelectedSegmentTypes to find out the type of segment detection requested in the call to * StartSegmentDetection. *

*

* Use the MaxResults parameter to limit the number of segment detections returned. If there are more * results than specified in MaxResults, the value of NextToken in the operation response * contains a pagination token for getting the next set of results. To get the next page of results, call * GetSegmentDetection and populate the NextToken request parameter with the token value * returned from the previous call to GetSegmentDetection. *

*

* For more information, see Detecting video segments in stored video in the Amazon Rekognition Developer Guide. *

* * @param getSegmentDetectionRequest * @return A Java Future containing the result of the GetSegmentDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetSegmentDetection */ @Override public CompletableFuture getSegmentDetection( GetSegmentDetectionRequest getSegmentDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getSegmentDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetSegmentDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetSegmentDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetSegmentDetection") .withMarshaller(new GetSegmentDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getSegmentDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets the text detection results of a Amazon Rekognition Video analysis started by StartTextDetection. *

*

* Text detection with Amazon Rekognition Video is an asynchronous operation. You start text detection by calling * StartTextDetection which returns a job identifier (JobId) When the text detection operation * finishes, Amazon Rekognition publishes a completion status to the Amazon Simple Notification Service topic * registered in the initial call to StartTextDetection. To get the results of the text detection * operation, first check that the status value published to the Amazon SNS topic is SUCCEEDED. if so, * call GetTextDetection and pass the job identifier (JobId) from the initial call of * StartLabelDetection. *

*

* GetTextDetection returns an array of detected text (TextDetections) sorted by the time * the text was detected, up to 50 words per frame of video. *

*

* Each element of the array includes the detected text, the precentage confidence in the acuracy of the detected * text, the time the text was detected, bounding box information for where the text was located, and unique * identifiers for words and their lines. *

*

* Use MaxResults parameter to limit the number of text detections returned. If there are more results than * specified in MaxResults, the value of NextToken in the operation response contains a * pagination token for getting the next set of results. To get the next page of results, call * GetTextDetection and populate the NextToken request parameter with the token value * returned from the previous call to GetTextDetection. *

* * @param getTextDetectionRequest * @return A Java Future containing the result of the GetTextDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.GetTextDetection */ @Override public CompletableFuture getTextDetection(GetTextDetectionRequest getTextDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getTextDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetTextDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetTextDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetTextDetection") .withMarshaller(new GetTextDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getTextDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Detects faces in the input image and adds them to the specified collection. *

*

* Amazon Rekognition doesn't save the actual faces that are detected. Instead, the underlying detection algorithm * first detects the faces in the input image. For each face, the algorithm extracts facial features into a feature * vector, and stores it in the backend database. Amazon Rekognition uses feature vectors when it performs face * match and search operations using the SearchFaces and SearchFacesByImage operations. *

*

* For more information, see Adding faces to a collection in the Amazon Rekognition Developer Guide. *

*

* To get the number of faces in a collection, call DescribeCollection. *

*

* If you're using version 1.0 of the face detection model, IndexFaces indexes the 15 largest faces in * the input image. Later versions of the face detection model index the 100 largest faces in the input image. *

*

* If you're using version 4 or later of the face model, image orientation information is not returned in the * OrientationCorrection field. *

*

* To determine which version of the model you're using, call DescribeCollection and supply the collection * ID. You can also get the model version from the value of FaceModelVersion in the response from * IndexFaces *

*

* For more information, see Model Versioning in the Amazon Rekognition Developer Guide. *

*

* If you provide the optional ExternalImageId for the input image you provided, Amazon Rekognition * associates this ID with all faces that it detects. When you call the ListFaces operation, the response * returns the external ID. You can use this external image ID to create a client-side index to associate the faces * with each image. You can then use the index to find all faces in an image. *

*

* You can specify the maximum number of faces to index with the MaxFaces input parameter. This is * useful when you want to index the largest faces in an image and don't want to index smaller faces, such as those * belonging to people standing in the background. *

*

* The QualityFilter input parameter allows you to filter out detected faces that don’t meet a required * quality bar. The quality bar is based on a variety of common use cases. By default, IndexFaces * chooses the quality bar that's used to filter faces. You can also explicitly choose the quality bar. Use * QualityFilter, to set the quality bar by specifying LOW, MEDIUM, or * HIGH. If you do not want to filter detected faces, specify NONE. *

* *

* To use quality filtering, you need a collection associated with version 3 of the face model or higher. To get the * version of the face model associated with a collection, call DescribeCollection. *

*
*

* Information about faces detected in an image, but not indexed, is returned in an array of UnindexedFace * objects, UnindexedFaces. Faces aren't indexed for reasons such as: *

*
    *
  • *

    * The number of faces detected exceeds the value of the MaxFaces request parameter. *

    *
  • *
  • *

    * The face is too small compared to the image dimensions. *

    *
  • *
  • *

    * The face is too blurry. *

    *
  • *
  • *

    * The image is too dark. *

    *
  • *
  • *

    * The face has an extreme pose. *

    *
  • *
  • *

    * The face doesn’t have enough detail to be suitable for face search. *

    *
  • *
*

* In response, the IndexFaces operation returns an array of metadata for all detected faces, * FaceRecords. This includes: *

*
    *
  • *

    * The bounding box, BoundingBox, of the detected face. *

    *
  • *
  • *

    * A confidence value, Confidence, which indicates the confidence that the bounding box contains a * face. *

    *
  • *
  • *

    * A face ID, FaceId, assigned by the service for each face that's detected and stored. *

    *
  • *
  • *

    * An image ID, ImageId, assigned by the service for the input image. *

    *
  • *
*

* If you request ALL or specific facial attributes (e.g., FACE_OCCLUDED) by using the * detectionAttributes parameter, Amazon Rekognition returns detailed facial attributes, such as facial landmarks * (for example, location of eye and mouth), facial occlusion, and other facial attributes. *

*

* If you provide the same image, specify the same collection, and use the same external ID in the * IndexFaces operation, Amazon Rekognition doesn't save duplicate face metadata. *

*

*

* The input image is passed either as base64-encoded image bytes, or as a reference to an image in an Amazon S3 * bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes isn't supported. The * image must be formatted as a PNG or JPEG file. *

*

* This operation requires permissions to perform the rekognition:IndexFaces action. *

* * @param indexFacesRequest * @return A Java Future containing the result of the IndexFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.IndexFaces */ @Override public CompletableFuture indexFaces(IndexFacesRequest indexFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, indexFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "IndexFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, IndexFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("IndexFaces") .withMarshaller(new IndexFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(indexFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns list of collection IDs in your account. If the result is truncated, the response also provides a * NextToken that you can use in the subsequent request to fetch the next set of collection IDs. *

*

* For an example, see Listing collections in the Amazon Rekognition Developer Guide. *

*

* This operation requires permissions to perform the rekognition:ListCollections action. *

* * @param listCollectionsRequest * @return A Java Future containing the result of the ListCollections operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListCollections */ @Override public CompletableFuture listCollections(ListCollectionsRequest listCollectionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listCollectionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListCollections"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListCollectionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListCollections") .withMarshaller(new ListCollectionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listCollectionsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Lists the entries (images) within a dataset. An entry is a JSON Line that contains the information for a single * image, including the image location, assigned labels, and object location bounding boxes. For more information, * see Creating a * manifest file. *

*

* JSON Lines in the response include information about non-terminal errors found in the dataset. Non terminal * errors are reported in errors lists within each JSON Line. The same information is reported in the * training and testing validation result manifests that Amazon Rekognition Custom Labels creates during model * training. *

*

* You can filter the response in variety of ways, such as choosing which labels to return and returning JSON Lines * created after a specific date. *

*

* This operation requires permissions to perform the rekognition:ListDatasetEntries action. *

* * @param listDatasetEntriesRequest * @return A Java Future containing the result of the ListDatasetEntries operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ResourceNotReadyException The requested resource isn't ready. For example, this exception occurs when * you call DetectCustomLabels with a model version that isn't deployed.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListDatasetEntries */ @Override public CompletableFuture listDatasetEntries(ListDatasetEntriesRequest listDatasetEntriesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listDatasetEntriesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListDatasetEntries"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListDatasetEntriesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListDatasetEntries") .withMarshaller(new ListDatasetEntriesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listDatasetEntriesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Lists the labels in a dataset. Amazon Rekognition Custom Labels uses labels to describe images. For more * information, see Labeling * images. *

*

* Lists the labels in a dataset. Amazon Rekognition Custom Labels uses labels to describe images. For more * information, see Labeling images in the Amazon Rekognition Custom Labels Developer Guide. *

* * @param listDatasetLabelsRequest * @return A Java Future containing the result of the ListDatasetLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceNotReadyException The requested resource isn't ready. For example, this exception occurs when * you call DetectCustomLabels with a model version that isn't deployed.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListDatasetLabels */ @Override public CompletableFuture listDatasetLabels(ListDatasetLabelsRequest listDatasetLabelsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listDatasetLabelsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListDatasetLabels"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListDatasetLabelsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListDatasetLabels") .withMarshaller(new ListDatasetLabelsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listDatasetLabelsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns metadata for faces in the specified collection. This metadata includes information such as the bounding * box coordinates, the confidence (that the bounding box contains a face), and face ID. For an example, see Listing * Faces in a Collection in the Amazon Rekognition Developer Guide. *

*

* This operation requires permissions to perform the rekognition:ListFaces action. *

* * @param listFacesRequest * @return A Java Future containing the result of the ListFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListFaces */ @Override public CompletableFuture listFaces(ListFacesRequest listFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("ListFaces") .withMarshaller(new ListFacesRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withMetricCollector(apiCallMetricCollector) .withInput(listFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets a list of the project policies attached to a project. *

*

* To attach a project policy to a project, call PutProjectPolicy. To remove a project policy from a project, * call DeleteProjectPolicy. *

*

* This operation requires permissions to perform the rekognition:ListProjectPolicies action. *

* * @param listProjectPoliciesRequest * @return A Java Future containing the result of the ListProjectPolicies operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListProjectPolicies */ @Override public CompletableFuture listProjectPolicies( ListProjectPoliciesRequest listProjectPoliciesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listProjectPoliciesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListProjectPolicies"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListProjectPoliciesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListProjectPolicies") .withMarshaller(new ListProjectPoliciesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listProjectPoliciesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Gets a list of stream processors that you have created with CreateStreamProcessor. *

* * @param listStreamProcessorsRequest * @return A Java Future containing the result of the ListStreamProcessors operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListStreamProcessors */ @Override public CompletableFuture listStreamProcessors( ListStreamProcessorsRequest listStreamProcessorsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listStreamProcessorsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListStreamProcessors"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListStreamProcessorsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListStreamProcessors") .withMarshaller(new ListStreamProcessorsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listStreamProcessorsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns a list of tags in an Amazon Rekognition collection, stream processor, or Custom Labels model. *

*

* This operation requires permissions to perform the rekognition:ListTagsForResource action. *

* * @param listTagsForResourceRequest * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListTagsForResource */ @Override public CompletableFuture listTagsForResource( ListTagsForResourceRequest listTagsForResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListTagsForResource") .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listTagsForResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns metadata of the User such as UserID in the specified collection. Anonymous User (to reserve * faces without any identity) is not returned as part of this request. The results are sorted by system generated * primary key ID. If the response is truncated, NextToken is returned in the response that can be used * in the subsequent request to retrieve the next set of identities. *

* * @param listUsersRequest * @return A Java Future containing the result of the ListUsers operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidPaginationTokenException Pagination token in the request is not valid.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.ListUsers */ @Override public CompletableFuture listUsers(ListUsersRequest listUsersRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listUsersRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListUsers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListUsersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("ListUsers") .withMarshaller(new ListUsersRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withMetricCollector(apiCallMetricCollector) .withInput(listUsersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Attaches a project policy to a Amazon Rekognition Custom Labels project in a trusting AWS account. A project * policy specifies that a trusted AWS account can copy a model version from a trusting AWS account to a project in * the trusted AWS account. To copy a model version you use the CopyProjectVersion operation. *

*

* For more information about the format of a project policy document, see Attaching a project policy (SDK) in the * Amazon Rekognition Custom Labels Developer Guide. *

*

* The response from PutProjectPolicy is a revision ID for the project policy. You can attach multiple * project policies to a project. You can also update an existing project policy by specifying the policy revision * ID of the existing policy. *

*

* To remove a project policy from a project, call DeleteProjectPolicy. To get a list of project policies * attached to a project, call ListProjectPolicies. *

*

* You copy a model version by calling CopyProjectVersion. *

*

* This operation requires permissions to perform the rekognition:PutProjectPolicy action. *

* * @param putProjectPolicyRequest * @return A Java Future containing the result of the PutProjectPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidPolicyRevisionIdException The supplied revision id for the project policy is invalid.
  • *
  • MalformedPolicyDocumentException The format of the project policy document that you supplied to * PutProjectPolicy is incorrect.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceAlreadyExistsException A resource with the specified ID already exists.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.PutProjectPolicy */ @Override public CompletableFuture putProjectPolicy(PutProjectPolicyRequest putProjectPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putProjectPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutProjectPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutProjectPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutProjectPolicy") .withMarshaller(new PutProjectPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putProjectPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns an array of celebrities recognized in the input image. For more information, see Recognizing celebrities * in the Amazon Rekognition Developer Guide. *

*

* RecognizeCelebrities returns the 64 largest faces in the image. It lists the recognized celebrities * in the CelebrityFaces array and any unrecognized faces in the UnrecognizedFaces array. * RecognizeCelebrities doesn't return celebrities whose faces aren't among the largest 64 faces in the * image. *

*

* For each celebrity recognized, RecognizeCelebrities returns a Celebrity object. The * Celebrity object contains the celebrity name, ID, URL links to additional information, match * confidence, and a ComparedFace object that you can use to locate the celebrity's face on the image. *

*

* Amazon Rekognition doesn't retain information about which images a celebrity has been recognized in. Your * application must store this information and use the Celebrity ID property as a unique identifier for * the celebrity. If you don't store the celebrity name or additional information URLs returned by * RecognizeCelebrities, you will need the ID to identify the celebrity in a call to the * GetCelebrityInfo operation. *

*

* You pass the input image either as base64-encoded image bytes or as a reference to an image in an Amazon S3 * bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The * image must be either a PNG or JPEG formatted file. *

*

* For an example, see Recognizing celebrities in an image in the Amazon Rekognition Developer Guide. *

*

* This operation requires permissions to perform the rekognition:RecognizeCelebrities operation. *

* * @param recognizeCelebritiesRequest * @return A Java Future containing the result of the RecognizeCelebrities operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.RecognizeCelebrities */ @Override public CompletableFuture recognizeCelebrities( RecognizeCelebritiesRequest recognizeCelebritiesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, recognizeCelebritiesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RecognizeCelebrities"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RecognizeCelebritiesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RecognizeCelebrities") .withMarshaller(new RecognizeCelebritiesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(recognizeCelebritiesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* For a given input face ID, searches for matching faces in the collection the face belongs to. You get a face ID * when you add a face to the collection using the IndexFaces operation. The operation compares the features * of the input face with faces in the specified collection. *

* *

* You can also search faces without indexing faces by using the SearchFacesByImage operation. *

*
*

* The operation response returns an array of faces that match, ordered by similarity score with the highest * similarity first. More specifically, it is an array of metadata for each face match that is found. Along with the * metadata, the response also includes a confidence value for each face match, indicating the * confidence that the specific face matches the input face. *

*

* For an example, see Searching for a face using its face ID in the Amazon Rekognition Developer Guide. *

*

* This operation requires permissions to perform the rekognition:SearchFaces action. *

* * @param searchFacesRequest * @return A Java Future containing the result of the SearchFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.SearchFaces */ @Override public CompletableFuture searchFaces(SearchFacesRequest searchFacesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, searchFacesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SearchFaces"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, SearchFacesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SearchFaces").withMarshaller(new SearchFacesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(searchFacesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* For a given input image, first detects the largest face in the image, and then searches the specified collection * for matching faces. The operation compares the features of the input face with faces in the specified collection. *

* *

* To search for all faces in an input image, you might first call the IndexFaces operation, and then use the * face IDs returned in subsequent calls to the SearchFaces operation. *

*

* You can also call the DetectFaces operation and use the bounding boxes in the response to make face * crops, which then you can pass in to the SearchFacesByImage operation. *

*
*

* You pass the input image either as base64-encoded image bytes or as a reference to an image in an Amazon S3 * bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The * image must be either a PNG or JPEG formatted file. *

*

* The response returns an array of faces that match, ordered by similarity score with the highest similarity first. * More specifically, it is an array of metadata for each face match found. Along with the metadata, the response * also includes a similarity indicating how similar the face is to the input face. In the response, * the operation also returns the bounding box (and a confidence level that the bounding box contains a face) of the * face that Amazon Rekognition used for the input image. *

*

* If no faces are detected in the input image, SearchFacesByImage returns an * InvalidParameterException error. *

*

* For an example, Searching for a Face Using an Image in the Amazon Rekognition Developer Guide. *

*

* The QualityFilter input parameter allows you to filter out detected faces that don’t meet a required * quality bar. The quality bar is based on a variety of common use cases. Use QualityFilter to set the * quality bar for filtering by specifying LOW, MEDIUM, or HIGH. If you do * not want to filter detected faces, specify NONE. The default value is NONE. *

* *

* To use quality filtering, you need a collection associated with version 3 of the face model or higher. To get the * version of the face model associated with a collection, call DescribeCollection. *

*
*

* This operation requires permissions to perform the rekognition:SearchFacesByImage action. *

* * @param searchFacesByImageRequest * @return A Java Future containing the result of the SearchFacesByImage operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.SearchFacesByImage */ @Override public CompletableFuture searchFacesByImage(SearchFacesByImageRequest searchFacesByImageRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, searchFacesByImageRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SearchFacesByImage"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, SearchFacesByImageResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SearchFacesByImage") .withMarshaller(new SearchFacesByImageRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(searchFacesByImageRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Searches for UserIDs within a collection based on a FaceId or UserId. This API can be * used to find the closest UserID (with a highest similarity) to associate a face. The request must be provided * with either FaceId or UserId. The operation returns an array of UserID that match the * FaceId or UserId, ordered by similarity score with the highest similarity first. *

* * @param searchUsersRequest * @return A Java Future containing the result of the SearchUsers operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.SearchUsers */ @Override public CompletableFuture searchUsers(SearchUsersRequest searchUsersRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, searchUsersRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SearchUsers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, SearchUsersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SearchUsers").withMarshaller(new SearchUsersRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(searchUsersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Searches for UserIDs using a supplied image. It first detects the largest face in the image, and then searches a * specified collection for matching UserIDs. *

*

* The operation returns an array of UserIDs that match the face in the supplied image, ordered by similarity score * with the highest similarity first. It also returns a bounding box for the face found in the input image. *

*

* Information about faces detected in the supplied image, but not used for the search, is returned in an array of * UnsearchedFace objects. If no valid face is detected in the image, the response will contain an * empty UserMatches list and no SearchedFace object. *

* * @param searchUsersByImageRequest * @return A Java Future containing the result of the SearchUsersByImage operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidImageFormatException The provided image format is not supported.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • ImageTooLargeException The input image size exceeds the allowed limit. If you are calling * DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information, * see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.SearchUsersByImage */ @Override public CompletableFuture searchUsersByImage(SearchUsersByImageRequest searchUsersByImageRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, searchUsersByImageRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SearchUsersByImage"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, SearchUsersByImageResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SearchUsersByImage") .withMarshaller(new SearchUsersByImageRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(searchUsersByImageRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts asynchronous recognition of celebrities in a stored video. *

*

* Amazon Rekognition Video can detect celebrities in a video must be stored in an Amazon S3 bucket. Use * Video to specify the bucket name and the filename of the video. StartCelebrityRecognition * returns a job identifier (JobId) which you use to get the results of the analysis. When celebrity * recognition analysis is finished, Amazon Rekognition Video publishes a completion status to the Amazon Simple * Notification Service topic that you specify in NotificationChannel. To get the results of the * celebrity recognition analysis, first check that the status value published to the Amazon SNS topic is * SUCCEEDED. If so, call GetCelebrityRecognition and pass the job identifier ( * JobId) from the initial call to StartCelebrityRecognition. *

*

* For more information, see Recognizing celebrities in the Amazon Rekognition Developer Guide. *

* * @param startCelebrityRecognitionRequest * @return A Java Future containing the result of the StartCelebrityRecognition operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartCelebrityRecognition */ @Override public CompletableFuture startCelebrityRecognition( StartCelebrityRecognitionRequest startCelebrityRecognitionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startCelebrityRecognitionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartCelebrityRecognition"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartCelebrityRecognitionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartCelebrityRecognition") .withMarshaller(new StartCelebrityRecognitionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startCelebrityRecognitionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts asynchronous detection of inappropriate, unwanted, or offensive content in a stored video. For a list of * moderation labels in Amazon Rekognition, see Using the image and video * moderation APIs. *

*

* Amazon Rekognition Video can moderate content in a video stored in an Amazon S3 bucket. Use Video to * specify the bucket name and the filename of the video. StartContentModeration returns a job * identifier (JobId) which you use to get the results of the analysis. When content analysis is * finished, Amazon Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic * that you specify in NotificationChannel. *

*

* To get the results of the content analysis, first check that the status value published to the Amazon SNS topic * is SUCCEEDED. If so, call GetContentModeration and pass the job identifier ( * JobId) from the initial call to StartContentModeration. *

*

* For more information, see Moderating content in the Amazon Rekognition Developer Guide. *

* * @param startContentModerationRequest * @return A Java Future containing the result of the StartContentModeration operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartContentModeration */ @Override public CompletableFuture startContentModeration( StartContentModerationRequest startContentModerationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startContentModerationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartContentModeration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartContentModerationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartContentModeration") .withMarshaller(new StartContentModerationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startContentModerationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts asynchronous detection of faces in a stored video. *

*

* Amazon Rekognition Video can detect faces in a video stored in an Amazon S3 bucket. Use Video to specify * the bucket name and the filename of the video. StartFaceDetection returns a job identifier ( * JobId) that you use to get the results of the operation. When face detection is finished, Amazon * Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic that you specify * in NotificationChannel. To get the results of the face detection operation, first check that the * status value published to the Amazon SNS topic is SUCCEEDED. If so, call GetFaceDetection and * pass the job identifier (JobId) from the initial call to StartFaceDetection. *

*

* For more information, see Detecting faces in a stored video in the Amazon Rekognition Developer Guide. *

* * @param startFaceDetectionRequest * @return A Java Future containing the result of the StartFaceDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartFaceDetection */ @Override public CompletableFuture startFaceDetection(StartFaceDetectionRequest startFaceDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startFaceDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartFaceDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartFaceDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartFaceDetection") .withMarshaller(new StartFaceDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startFaceDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts the asynchronous search for faces in a collection that match the faces of persons detected in a stored * video. *

*

* The video must be stored in an Amazon S3 bucket. Use Video to specify the bucket name and the filename of * the video. StartFaceSearch returns a job identifier (JobId) which you use to get the * search results once the search has completed. When searching is finished, Amazon Rekognition Video publishes a * completion status to the Amazon Simple Notification Service topic that you specify in * NotificationChannel. To get the search results, first check that the status value published to the * Amazon SNS topic is SUCCEEDED. If so, call GetFaceSearch and pass the job identifier ( * JobId) from the initial call to StartFaceSearch. For more information, see Searching stored * videos for faces. *

* * @param startFaceSearchRequest * @return A Java Future containing the result of the StartFaceSearch operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartFaceSearch */ @Override public CompletableFuture startFaceSearch(StartFaceSearchRequest startFaceSearchRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startFaceSearchRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartFaceSearch"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartFaceSearchResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartFaceSearch") .withMarshaller(new StartFaceSearchRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startFaceSearchRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts asynchronous detection of labels in a stored video. *

*

* Amazon Rekognition Video can detect labels in a video. Labels are instances of real-world entities. This includes * objects like flower, tree, and table; events like wedding, graduation, and birthday party; concepts like * landscape, evening, and nature; and activities like a person getting out of a car or a person skiing. *

*

* The video must be stored in an Amazon S3 bucket. Use Video to specify the bucket name and the filename of * the video. StartLabelDetection returns a job identifier (JobId) which you use to get * the results of the operation. When label detection is finished, Amazon Rekognition Video publishes a completion * status to the Amazon Simple Notification Service topic that you specify in NotificationChannel. *

*

* To get the results of the label detection operation, first check that the status value published to the Amazon * SNS topic is SUCCEEDED. If so, call GetLabelDetection and pass the job identifier ( * JobId) from the initial call to StartLabelDetection. *

*

* Optional Parameters *

*

* StartLabelDetection has the GENERAL_LABELS Feature applied by default. This feature * allows you to provide filtering criteria to the Settings parameter. You can filter with sets of * individual labels or with label categories. You can specify inclusive filters, exclusive filters, or a * combination of inclusive and exclusive filters. For more information on filtering, see Detecting labels in a * video. *

*

* You can specify MinConfidence to control the confidence threshold for the labels returned. The * default is 50. *

* * @param startLabelDetectionRequest * @return A Java Future containing the result of the StartLabelDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartLabelDetection */ @Override public CompletableFuture startLabelDetection( StartLabelDetectionRequest startLabelDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startLabelDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartLabelDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartLabelDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartLabelDetection") .withMarshaller(new StartLabelDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startLabelDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts the asynchronous tracking of a person's path in a stored video. *

*

* Amazon Rekognition Video can track the path of people in a video stored in an Amazon S3 bucket. Use Video * to specify the bucket name and the filename of the video. StartPersonTracking returns a job * identifier (JobId) which you use to get the results of the operation. When label detection is * finished, Amazon Rekognition publishes a completion status to the Amazon Simple Notification Service topic that * you specify in NotificationChannel. *

*

* To get the results of the person detection operation, first check that the status value published to the Amazon * SNS topic is SUCCEEDED. If so, call GetPersonTracking and pass the job identifier ( * JobId) from the initial call to StartPersonTracking. *

* * @param startPersonTrackingRequest * @return A Java Future containing the result of the StartPersonTracking operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartPersonTracking */ @Override public CompletableFuture startPersonTracking( StartPersonTrackingRequest startPersonTrackingRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startPersonTrackingRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartPersonTracking"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartPersonTrackingResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartPersonTracking") .withMarshaller(new StartPersonTrackingRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startPersonTrackingRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts the running of the version of a model. Starting a model takes a while to complete. To check the current * state of the model, use DescribeProjectVersions. *

*

* Once the model is running, you can detect custom labels in new images by calling DetectCustomLabels. *

* *

* You are charged for the amount of time that the model is running. To stop a running model, call * StopProjectVersion. *

*
*

* For more information, see Running a trained Amazon Rekognition Custom Labels model in the Amazon * Rekognition Custom Labels Guide. *

*

* This operation requires permissions to perform the rekognition:StartProjectVersion action. *

* * @param startProjectVersionRequest * @return A Java Future containing the result of the StartProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartProjectVersion */ @Override public CompletableFuture startProjectVersion( StartProjectVersionRequest startProjectVersionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startProjectVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartProjectVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartProjectVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartProjectVersion") .withMarshaller(new StartProjectVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startProjectVersionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts asynchronous detection of segment detection in a stored video. *

*

* Amazon Rekognition Video can detect segments in a video stored in an Amazon S3 bucket. Use Video to * specify the bucket name and the filename of the video. StartSegmentDetection returns a job * identifier (JobId) which you use to get the results of the operation. When segment detection is * finished, Amazon Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic * that you specify in NotificationChannel. *

*

* You can use the Filters (StartSegmentDetectionFilters) input parameter to specify the minimum * detection confidence returned in the response. Within Filters, use ShotFilter * (StartShotDetectionFilter) to filter detected shots. Use TechnicalCueFilter * (StartTechnicalCueDetectionFilter) to filter technical cues. *

*

* To get the results of the segment detection operation, first check that the status value published to the Amazon * SNS topic is SUCCEEDED. if so, call GetSegmentDetection and pass the job identifier ( * JobId) from the initial call to StartSegmentDetection. *

*

* For more information, see Detecting video segments in stored video in the Amazon Rekognition Developer Guide. *

* * @param startSegmentDetectionRequest * @return A Java Future containing the result of the StartSegmentDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartSegmentDetection */ @Override public CompletableFuture startSegmentDetection( StartSegmentDetectionRequest startSegmentDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startSegmentDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartSegmentDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartSegmentDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartSegmentDetection") .withMarshaller(new StartSegmentDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startSegmentDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts processing a stream processor. You create a stream processor by calling CreateStreamProcessor. To * tell StartStreamProcessor which stream processor to start, use the value of the Name * field specified in the call to CreateStreamProcessor. *

*

* If you are using a label detection stream processor to detect labels, you need to provide a * Start selector and a Stop selector to determine the length of the stream processing * time. *

* * @param startStreamProcessorRequest * @return A Java Future containing the result of the StartStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartStreamProcessor */ @Override public CompletableFuture startStreamProcessor( StartStreamProcessorRequest startStreamProcessorRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startStreamProcessorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartStreamProcessor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartStreamProcessorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartStreamProcessor") .withMarshaller(new StartStreamProcessorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startStreamProcessorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts asynchronous detection of text in a stored video. *

*

* Amazon Rekognition Video can detect text in a video stored in an Amazon S3 bucket. Use Video to specify * the bucket name and the filename of the video. StartTextDetection returns a job identifier ( * JobId) which you use to get the results of the operation. When text detection is finished, Amazon * Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic that you specify * in NotificationChannel. *

*

* To get the results of the text detection operation, first check that the status value published to the Amazon SNS * topic is SUCCEEDED. if so, call GetTextDetection and pass the job identifier ( * JobId) from the initial call to StartTextDetection. *

* * @param startTextDetectionRequest * @return A Java Future containing the result of the StartTextDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • IdempotentParameterMismatchException A ClientRequestToken input parameter was reused * with an operation, but at least one of the other input parameters is different from the previous call to * the operation.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the * request.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • VideoTooLargeException The file size or duration of the supplied media is too large. The maximum file * size is 10GB. The maximum duration is 6 hours.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StartTextDetection */ @Override public CompletableFuture startTextDetection(StartTextDetectionRequest startTextDetectionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startTextDetectionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartTextDetection"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartTextDetectionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartTextDetection") .withMarshaller(new StartTextDetectionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startTextDetectionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Stops a running model. The operation might take a while to complete. To check the current status, call * DescribeProjectVersions. *

*

* This operation requires permissions to perform the rekognition:StopProjectVersion action. *

* * @param stopProjectVersionRequest * @return A Java Future containing the result of the StopProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StopProjectVersion */ @Override public CompletableFuture stopProjectVersion(StopProjectVersionRequest stopProjectVersionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, stopProjectVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StopProjectVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StopProjectVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StopProjectVersion") .withMarshaller(new StopProjectVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(stopProjectVersionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Stops a running stream processor that was created by CreateStreamProcessor. *

* * @param stopStreamProcessorRequest * @return A Java Future containing the result of the StopStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.StopStreamProcessor */ @Override public CompletableFuture stopStreamProcessor( StopStreamProcessorRequest stopStreamProcessorRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, stopStreamProcessorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StopStreamProcessor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StopStreamProcessorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StopStreamProcessor") .withMarshaller(new StopStreamProcessorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(stopStreamProcessorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Adds one or more key-value tags to an Amazon Rekognition collection, stream processor, or Custom Labels model. * For more information, see Tagging AWS * Resources. *

*

* This operation requires permissions to perform the rekognition:TagResource action. *

* * @param tagResourceRequest * @return A Java Future containing the result of the TagResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ServiceQuotaExceededException *

    * The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in * Amazon Rekognition in the Amazon Rekognition Developer Guide.

  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.TagResource */ @Override public CompletableFuture tagResource(TagResourceRequest tagResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TagResource").withMarshaller(new TagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(tagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Removes one or more tags from an Amazon Rekognition collection, stream processor, or Custom Labels model. *

*

* This operation requires permissions to perform the rekognition:UntagResource action. *

* * @param untagResourceRequest * @return A Java Future containing the result of the UntagResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.UntagResource */ @Override public CompletableFuture untagResource(UntagResourceRequest untagResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UntagResource") .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(untagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Adds or updates one or more entries (images) in a dataset. An entry is a JSON Line which contains the information * for a single image, including the image location, assigned labels, and object location bounding boxes. For more * information, see Image-Level labels in manifest files and Object localization in manifest files in the Amazon * Rekognition Custom Labels Developer Guide. *

*

* If the source-ref field in the JSON line references an existing image, the existing image in the * dataset is updated. If source-ref field doesn't reference an existing image, the image is added as a * new image to the dataset. *

*

* You specify the changes that you want to make in the Changes input parameter. There isn't a limit to * the number JSON Lines that you can change, but the size of Changes must be less than 5MB. *

*

* UpdateDatasetEntries returns immediatly, but the dataset update might take a while to complete. Use * DescribeDataset to check the current status. The dataset updated successfully if the value of * Status is UPDATE_COMPLETE. *

*

* To check if any non-terminal errors occured, call ListDatasetEntries and check for the presence of * errors lists in the JSON Lines. *

*

* Dataset update fails if a terminal error occurs (Status = UPDATE_FAILED). Currently, * you can't access the terminal error information from the Amazon Rekognition Custom Labels SDK. *

*

* This operation requires permissions to perform the rekognition:UpdateDatasetEntries action. *

* * @param updateDatasetEntriesRequest * @return A Java Future containing the result of the UpdateDatasetEntries operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start * too many Amazon Rekognition Video jobs concurrently, calls to start operations ( * StartLabelDetection, for example) will raise a LimitExceededException exception * (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition * service limit.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.UpdateDatasetEntries */ @Override public CompletableFuture updateDatasetEntries( UpdateDatasetEntriesRequest updateDatasetEntriesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, updateDatasetEntriesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateDatasetEntries"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateDatasetEntriesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateDatasetEntries") .withMarshaller(new UpdateDatasetEntriesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(updateDatasetEntriesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Allows you to update a stream processor. You can change some settings and regions of interest and delete certain * parameters. *

* * @param updateStreamProcessorRequest * @return A Java Future containing the result of the UpdateStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • AccessDeniedException You are not authorized to perform the action.
  • *
  • InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
  • *
  • ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call * again.
  • *
  • InvalidParameterException Input parameter violated a constraint. Validate your parameter before * calling the API operation again.
  • *
  • ResourceNotFoundException The resource specified in the request cannot be found.
  • *
  • ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you * want to increase this limit, contact Amazon Rekognition.
  • *
  • ResourceInUseException The specified resource is already being used.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample RekognitionAsyncClient.UpdateStreamProcessor */ @Override public CompletableFuture updateStreamProcessor( UpdateStreamProcessorRequest updateStreamProcessorRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, updateStreamProcessorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateStreamProcessor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateStreamProcessorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateStreamProcessor") .withMarshaller(new UpdateStreamProcessorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(updateStreamProcessorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } @Override public RekognitionAsyncWaiter waiter() { return RekognitionAsyncWaiter.builder().client(this).scheduledExecutorService(executorService).build(); } @Override public final RekognitionServiceClientConfiguration serviceClientConfiguration() { return this.serviceClientConfiguration; } @Override public final String serviceName() { return SERVICE_NAME; } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(RekognitionException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("MalformedPolicyDocumentException") .exceptionBuilderSupplier(MalformedPolicyDocumentException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotReadyException") .exceptionBuilderSupplier(ResourceNotReadyException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidPolicyRevisionIdException") .exceptionBuilderSupplier(InvalidPolicyRevisionIdException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("HumanLoopQuotaExceededException") .exceptionBuilderSupplier(HumanLoopQuotaExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ServiceQuotaExceededException") .exceptionBuilderSupplier(ServiceQuotaExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LimitExceededException") .exceptionBuilderSupplier(LimitExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotFoundException") .exceptionBuilderSupplier(ResourceNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("IdempotentParameterMismatchException") .exceptionBuilderSupplier(IdempotentParameterMismatchException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ProvisionedThroughputExceededException") .exceptionBuilderSupplier(ProvisionedThroughputExceededException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceAlreadyExistsException") .exceptionBuilderSupplier(ResourceAlreadyExistsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidPaginationTokenException") .exceptionBuilderSupplier(InvalidPaginationTokenException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidParameterException") .exceptionBuilderSupplier(InvalidParameterException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceInUseException") .exceptionBuilderSupplier(ResourceInUseException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidImageFormatException") .exceptionBuilderSupplier(InvalidImageFormatException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ThrottlingException") .exceptionBuilderSupplier(ThrottlingException::builder).httpStatusCode(500).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SessionNotFoundException") .exceptionBuilderSupplier(SessionNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidS3ObjectException") .exceptionBuilderSupplier(InvalidS3ObjectException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("VideoTooLargeException") .exceptionBuilderSupplier(VideoTooLargeException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("AccessDeniedException") .exceptionBuilderSupplier(AccessDeniedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ConflictException") .exceptionBuilderSupplier(ConflictException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ImageTooLargeException") .exceptionBuilderSupplier(ImageTooLargeException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InternalServerError") .exceptionBuilderSupplier(InternalServerErrorException::builder).httpStatusCode(500).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } @Override public void close() { clientHandler.close(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy