/**
 * 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;

/**
 * The FindSimilarOptionalParameter model.
 */
public class FindSimilarOptionalParameter {
    /**
     * An existing user-specified unique candidate face list, created in Face
     * List - Create a Face List. Face list contains a set of persistedFaceIds
     * which are persisted and will never expire. Parameter faceListId and
     * faceIds should not be provided at the same time.
     */
    private String faceListId;

    /**
     * An array of candidate faceIds. All of them are created by Face - Detect
     * and the faceIds will expire 24 hours after the detection call.
     */
    private List<UUID> faceIds;

    /**
     * The number of top similar faces returned. The valid range is [1, 1000].
     */
    private Integer maxNumOfCandidatesReturned;

    /**
     * Similar face searching mode. It can be "matchPerson" or "matchFace".
     * Possible values include: 'matchPerson', 'matchFace'.
     */
    private FindSimilarMatchMode mode;

    /**
     * Gets or sets the preferred language for the response.
     */
    private String thisclientacceptLanguage;

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

    /**
     * Set the faceListId value.
     *
     * @param faceListId the faceListId value to set
     * @return the FindSimilarOptionalParameter object itself.
     */
    public FindSimilarOptionalParameter withFaceListId(String faceListId) {
        this.faceListId = faceListId;
        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 FindSimilarOptionalParameter object itself.
     */
    public FindSimilarOptionalParameter 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 FindSimilarOptionalParameter object itself.
     */
    public FindSimilarOptionalParameter withMaxNumOfCandidatesReturned(Integer maxNumOfCandidatesReturned) {
        this.maxNumOfCandidatesReturned = maxNumOfCandidatesReturned;
        return this;
    }

    /**
     * Get the mode value.
     *
     * @return the mode value
     */
    public FindSimilarMatchMode mode() {
        return this.mode;
    }

    /**
     * Set the mode value.
     *
     * @param mode the mode value to set
     * @return the FindSimilarOptionalParameter object itself.
     */
    public FindSimilarOptionalParameter withMode(FindSimilarMatchMode mode) {
        this.mode = mode;
        return this;
    }

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

    /**
     * Set the thisclientacceptLanguage value.
     *
     * @param thisclientacceptLanguage the thisclientacceptLanguage value to set
     * @return the FindSimilarOptionalParameter object itself.
     */
    public FindSimilarOptionalParameter withThisclientacceptLanguage(String thisclientacceptLanguage) {
        this.thisclientacceptLanguage = thisclientacceptLanguage;
        return this;
    }

}
