// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.hdinsight.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** Gets the application HTTP endpoints. */
@Fluent
public final class ApplicationGetHttpsEndpoint {
    /*
     * The list of access modes for the application.
     */
    @JsonProperty(value = "accessModes")
    private List<String> accessModes;

    /*
     * The location of the endpoint.
     */
    @JsonProperty(value = "location", access = JsonProperty.Access.WRITE_ONLY)
    private String location;

    /*
     * The destination port to connect to.
     */
    @JsonProperty(value = "destinationPort")
    private Integer destinationPort;

    /*
     * The public port to connect to.
     */
    @JsonProperty(value = "publicPort", access = JsonProperty.Access.WRITE_ONLY)
    private Integer publicPort;

    /*
     * The private ip address of the endpoint.
     */
    @JsonProperty(value = "privateIPAddress")
    private String privateIpAddress;

    /*
     * The subdomain suffix of the application.
     */
    @JsonProperty(value = "subDomainSuffix")
    private String subDomainSuffix;

    /*
     * The value indicates whether to disable GatewayAuth.
     */
    @JsonProperty(value = "disableGatewayAuth")
    private Boolean disableGatewayAuth;

    /** Creates an instance of ApplicationGetHttpsEndpoint class. */
    public ApplicationGetHttpsEndpoint() {
    }

    /**
     * Get the accessModes property: The list of access modes for the application.
     *
     * @return the accessModes value.
     */
    public List<String> accessModes() {
        return this.accessModes;
    }

    /**
     * Set the accessModes property: The list of access modes for the application.
     *
     * @param accessModes the accessModes value to set.
     * @return the ApplicationGetHttpsEndpoint object itself.
     */
    public ApplicationGetHttpsEndpoint withAccessModes(List<String> accessModes) {
        this.accessModes = accessModes;
        return this;
    }

    /**
     * Get the location property: The location of the endpoint.
     *
     * @return the location value.
     */
    public String location() {
        return this.location;
    }

    /**
     * Get the destinationPort property: The destination port to connect to.
     *
     * @return the destinationPort value.
     */
    public Integer destinationPort() {
        return this.destinationPort;
    }

    /**
     * Set the destinationPort property: The destination port to connect to.
     *
     * @param destinationPort the destinationPort value to set.
     * @return the ApplicationGetHttpsEndpoint object itself.
     */
    public ApplicationGetHttpsEndpoint withDestinationPort(Integer destinationPort) {
        this.destinationPort = destinationPort;
        return this;
    }

    /**
     * Get the publicPort property: The public port to connect to.
     *
     * @return the publicPort value.
     */
    public Integer publicPort() {
        return this.publicPort;
    }

    /**
     * Get the privateIpAddress property: The private ip address of the endpoint.
     *
     * @return the privateIpAddress value.
     */
    public String privateIpAddress() {
        return this.privateIpAddress;
    }

    /**
     * Set the privateIpAddress property: The private ip address of the endpoint.
     *
     * @param privateIpAddress the privateIpAddress value to set.
     * @return the ApplicationGetHttpsEndpoint object itself.
     */
    public ApplicationGetHttpsEndpoint withPrivateIpAddress(String privateIpAddress) {
        this.privateIpAddress = privateIpAddress;
        return this;
    }

    /**
     * Get the subDomainSuffix property: The subdomain suffix of the application.
     *
     * @return the subDomainSuffix value.
     */
    public String subDomainSuffix() {
        return this.subDomainSuffix;
    }

    /**
     * Set the subDomainSuffix property: The subdomain suffix of the application.
     *
     * @param subDomainSuffix the subDomainSuffix value to set.
     * @return the ApplicationGetHttpsEndpoint object itself.
     */
    public ApplicationGetHttpsEndpoint withSubDomainSuffix(String subDomainSuffix) {
        this.subDomainSuffix = subDomainSuffix;
        return this;
    }

    /**
     * Get the disableGatewayAuth property: The value indicates whether to disable GatewayAuth.
     *
     * @return the disableGatewayAuth value.
     */
    public Boolean disableGatewayAuth() {
        return this.disableGatewayAuth;
    }

    /**
     * Set the disableGatewayAuth property: The value indicates whether to disable GatewayAuth.
     *
     * @param disableGatewayAuth the disableGatewayAuth value to set.
     * @return the ApplicationGetHttpsEndpoint object itself.
     */
    public ApplicationGetHttpsEndpoint withDisableGatewayAuth(Boolean disableGatewayAuth) {
        this.disableGatewayAuth = disableGatewayAuth;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
