/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.cognitiveservices.vision.faceapi.models;

import java.util.List;
import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Request body for identify face operation.
 */
public class IdentifyRequest {
    /**
     * PersonGroupId of the target person group, created by
     * PersonGroups.Create.
     */
    @JsonProperty(value = "personGroupId", required = true)
    private String personGroupId;

    /**
     * Array of query faces faceIds, created by the Face - Detect. Each of the
     * faces are identified independently. The valid number of faceIds is
     * between [1, 10].
     */
    @JsonProperty(value = "faceIds", required = true)
    private List<UUID> faceIds;

    /**
     * The range of maxNumOfCandidatesReturned is between 1 and 5 (default is
     * 1).
     */
    @JsonProperty(value = "maxNumOfCandidatesReturned")
    private Integer maxNumOfCandidatesReturned;

    /**
     * Confidence threshold of identification, used to judge whether one face
     * belong to one person. The range of confidenceThreshold is [0, 1]
     * (default specified by algorithm).
     */
    @JsonProperty(value = "confidenceThreshold")
    private Double confidenceThreshold;

    /**
     * Get the personGroupId value.
     *
     * @return the personGroupId value
     */
    public String personGroupId() {
        return this.personGroupId;
    }

    /**
     * Set the personGroupId value.
     *
     * @param personGroupId the personGroupId value to set
     * @return the IdentifyRequest object itself.
     */
    public IdentifyRequest withPersonGroupId(String personGroupId) {
        this.personGroupId = personGroupId;
        return this;
    }

    /**
     * Get the faceIds value.
     *
     * @return the faceIds value
     */
    public List<UUID> faceIds() {
        return this.faceIds;
    }

    /**
     * Set the faceIds value.
     *
     * @param faceIds the faceIds value to set
     * @return the IdentifyRequest object itself.
     */
    public IdentifyRequest withFaceIds(List<UUID> faceIds) {
        this.faceIds = faceIds;
        return this;
    }

    /**
     * Get the maxNumOfCandidatesReturned value.
     *
     * @return the maxNumOfCandidatesReturned value
     */
    public Integer maxNumOfCandidatesReturned() {
        return this.maxNumOfCandidatesReturned;
    }

    /**
     * Set the maxNumOfCandidatesReturned value.
     *
     * @param maxNumOfCandidatesReturned the maxNumOfCandidatesReturned value to set
     * @return the IdentifyRequest object itself.
     */
    public IdentifyRequest withMaxNumOfCandidatesReturned(Integer maxNumOfCandidatesReturned) {
        this.maxNumOfCandidatesReturned = maxNumOfCandidatesReturned;
        return this;
    }

    /**
     * Get the confidenceThreshold value.
     *
     * @return the confidenceThreshold value
     */
    public Double confidenceThreshold() {
        return this.confidenceThreshold;
    }

    /**
     * Set the confidenceThreshold value.
     *
     * @param confidenceThreshold the confidenceThreshold value to set
     * @return the IdentifyRequest object itself.
     */
    public IdentifyRequest withConfidenceThreshold(Double confidenceThreshold) {
        this.confidenceThreshold = confidenceThreshold;
        return this;
    }

}
