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

/**
 * The base class "ProductionOrStagingEndpointInfo" inherits from.
 */
public class EndpointInfo {
    /**
     * The version ID to publish.
     */
    @JsonProperty(value = "versionId")
    private String versionId;

    /**
     * Indicates if the staging slot should be used, instead of the Production
     * one.
     */
    @JsonProperty(value = "isStaging")
    private Boolean isStaging;

    /**
     * The Runtime endpoint URL for this model version.
     */
    @JsonProperty(value = "endpointUrl")
    private String endpointUrl;

    /**
     * The target region that the application is published to.
     */
    @JsonProperty(value = "region")
    private String region;

    /**
     * The endpoint key.
     */
    @JsonProperty(value = "assignedEndpointKey")
    private String assignedEndpointKey;

    /**
     * The endpoint's region.
     */
    @JsonProperty(value = "endpointRegion")
    private String endpointRegion;

    /**
     * Regions where publishing failed.
     */
    @JsonProperty(value = "failedRegions")
    private String failedRegions;

    /**
     * Timestamp when was last published.
     */
    @JsonProperty(value = "publishedDateTime")
    private String publishedDateTime;

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

    /**
     * Set the versionId value.
     *
     * @param versionId the versionId value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withVersionId(String versionId) {
        this.versionId = versionId;
        return this;
    }

    /**
     * Get the isStaging value.
     *
     * @return the isStaging value
     */
    public Boolean isStaging() {
        return this.isStaging;
    }

    /**
     * Set the isStaging value.
     *
     * @param isStaging the isStaging value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withIsStaging(Boolean isStaging) {
        this.isStaging = isStaging;
        return this;
    }

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

    /**
     * Set the endpointUrl value.
     *
     * @param endpointUrl the endpointUrl value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withEndpointUrl(String endpointUrl) {
        this.endpointUrl = endpointUrl;
        return this;
    }

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

    /**
     * Set the region value.
     *
     * @param region the region value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withRegion(String region) {
        this.region = region;
        return this;
    }

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

    /**
     * Set the assignedEndpointKey value.
     *
     * @param assignedEndpointKey the assignedEndpointKey value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withAssignedEndpointKey(String assignedEndpointKey) {
        this.assignedEndpointKey = assignedEndpointKey;
        return this;
    }

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

    /**
     * Set the endpointRegion value.
     *
     * @param endpointRegion the endpointRegion value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withEndpointRegion(String endpointRegion) {
        this.endpointRegion = endpointRegion;
        return this;
    }

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

    /**
     * Set the failedRegions value.
     *
     * @param failedRegions the failedRegions value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withFailedRegions(String failedRegions) {
        this.failedRegions = failedRegions;
        return this;
    }

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

    /**
     * Set the publishedDateTime value.
     *
     * @param publishedDateTime the publishedDateTime value to set
     * @return the EndpointInfo object itself.
     */
    public EndpointInfo withPublishedDateTime(String publishedDateTime) {
        this.publishedDateTime = publishedDateTime;
        return this;
    }

}
