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

package com.azure.resourcemanager.recoveryservicessiterecovery.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** The InputEndpoint model. */
@Fluent
public final class InputEndpoint {
    /*
     * The endpointName property.
     */
    @JsonProperty(value = "endpointName")
    private String endpointName;

    /*
     * The privatePort property.
     */
    @JsonProperty(value = "privatePort")
    private Integer privatePort;

    /*
     * The publicPort property.
     */
    @JsonProperty(value = "publicPort")
    private Integer publicPort;

    /*
     * The protocol property.
     */
    @JsonProperty(value = "protocol")
    private String protocol;

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

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

    /**
     * Set the endpointName property: The endpointName property.
     *
     * @param endpointName the endpointName value to set.
     * @return the InputEndpoint object itself.
     */
    public InputEndpoint withEndpointName(String endpointName) {
        this.endpointName = endpointName;
        return this;
    }

    /**
     * Get the privatePort property: The privatePort property.
     *
     * @return the privatePort value.
     */
    public Integer privatePort() {
        return this.privatePort;
    }

    /**
     * Set the privatePort property: The privatePort property.
     *
     * @param privatePort the privatePort value to set.
     * @return the InputEndpoint object itself.
     */
    public InputEndpoint withPrivatePort(Integer privatePort) {
        this.privatePort = privatePort;
        return this;
    }

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

    /**
     * Set the publicPort property: The publicPort property.
     *
     * @param publicPort the publicPort value to set.
     * @return the InputEndpoint object itself.
     */
    public InputEndpoint withPublicPort(Integer publicPort) {
        this.publicPort = publicPort;
        return this;
    }

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

    /**
     * Set the protocol property: The protocol property.
     *
     * @param protocol the protocol value to set.
     * @return the InputEndpoint object itself.
     */
    public InputEndpoint withProtocol(String protocol) {
        this.protocol = protocol;
        return this;
    }

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