/**
 * 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.language.luis.authoring.models;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Properties for creating a new LUIS Application.
 */
public class ApplicationCreateObject {
    /**
     * The culture for the new application. It is the language that your app
     * understands and speaks. E.g.: "en-us". Note: the culture cannot be
     * changed after the app is created.
     */
    @JsonProperty(value = "culture", required = true)
    private String culture;

    /**
     * The domain for the new application. Optional. E.g.: Comics.
     */
    @JsonProperty(value = "domain")
    private String domain;

    /**
     * Description of the new application. Optional.
     */
    @JsonProperty(value = "description")
    private String description;

    /**
     * The initial version ID. Optional. Default value is: "0.1".
     */
    @JsonProperty(value = "initialVersionId")
    private String initialVersionId;

    /**
     * Defines the scenario for the new application. Optional. E.g.: IoT.
     */
    @JsonProperty(value = "usageScenario")
    private String usageScenario;

    /**
     * The name for the new application.
     */
    @JsonProperty(value = "name", required = true)
    private String name;

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

    /**
     * Set the culture value.
     *
     * @param culture the culture value to set
     * @return the ApplicationCreateObject object itself.
     */
    public ApplicationCreateObject withCulture(String culture) {
        this.culture = culture;
        return this;
    }

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

    /**
     * Set the domain value.
     *
     * @param domain the domain value to set
     * @return the ApplicationCreateObject object itself.
     */
    public ApplicationCreateObject withDomain(String domain) {
        this.domain = domain;
        return this;
    }

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

    /**
     * Set the description value.
     *
     * @param description the description value to set
     * @return the ApplicationCreateObject object itself.
     */
    public ApplicationCreateObject withDescription(String description) {
        this.description = description;
        return this;
    }

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

    /**
     * Set the initialVersionId value.
     *
     * @param initialVersionId the initialVersionId value to set
     * @return the ApplicationCreateObject object itself.
     */
    public ApplicationCreateObject withInitialVersionId(String initialVersionId) {
        this.initialVersionId = initialVersionId;
        return this;
    }

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

    /**
     * Set the usageScenario value.
     *
     * @param usageScenario the usageScenario value to set
     * @return the ApplicationCreateObject object itself.
     */
    public ApplicationCreateObject withUsageScenario(String usageScenario) {
        this.usageScenario = usageScenario;
        return this;
    }

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

    /**
     * Set the name value.
     *
     * @param name the name value to set
     * @return the ApplicationCreateObject object itself.
     */
    public ApplicationCreateObject withName(String name) {
        this.name = name;
        return this;
    }

}
