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

package com.azure.communication.networktraversal.implementation.models;

import com.azure.communication.networktraversal.models.RouteType;
import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Request for a CommunicationRelayConfiguration. */
@Fluent
public final class CommunicationRelayConfigurationRequest {
    /*
     * An identity to be associated with telemetry for data relayed using the
     * returned credentials. Must be an existing ACS user identity. If not
     * provided, the telemetry will not contain an associated identity value.
     */
    @JsonProperty(value = "id")
    private String id;

    /*
     * Filter the routing methodology returned. If not provided, will return
     * all route types in separate ICE servers.
     */
    @JsonProperty(value = "routeType")
    private RouteType routeType;

    /*
     * The credential Time-To-Live (TTL), in seconds. The default value will be
     * used if given value exceeds it.
     */
    @JsonProperty(value = "ttl")
    private Integer ttl;

    /**
     * Get the id property: An identity to be associated with telemetry for data relayed using the returned credentials.
     * Must be an existing ACS user identity. If not provided, the telemetry will not contain an associated identity
     * value.
     *
     * @return the id value.
     */
    public String getId() {
        return this.id;
    }

    /**
     * Set the id property: An identity to be associated with telemetry for data relayed using the returned credentials.
     * Must be an existing ACS user identity. If not provided, the telemetry will not contain an associated identity
     * value.
     *
     * @param id the id value to set.
     * @return the CommunicationRelayConfigurationRequest object itself.
     */
    public CommunicationRelayConfigurationRequest setId(String id) {
        this.id = id;
        return this;
    }

    /**
     * Get the routeType property: Filter the routing methodology returned. If not provided, will return all route types
     * in separate ICE servers.
     *
     * @return the routeType value.
     */
    public RouteType getRouteType() {
        return this.routeType;
    }

    /**
     * Set the routeType property: Filter the routing methodology returned. If not provided, will return all route types
     * in separate ICE servers.
     *
     * @param routeType the routeType value to set.
     * @return the CommunicationRelayConfigurationRequest object itself.
     */
    public CommunicationRelayConfigurationRequest setRouteType(RouteType routeType) {
        this.routeType = routeType;
        return this;
    }

    /**
     * Get the ttl property: The credential Time-To-Live (TTL), in seconds. The default value will be used if given
     * value exceeds it.
     *
     * @return the ttl value.
     */
    public Integer getTtl() {
        return this.ttl;
    }

    /**
     * Set the ttl property: The credential Time-To-Live (TTL), in seconds. The default value will be used if given
     * value exceeds it.
     *
     * @param ttl the ttl value to set.
     * @return the CommunicationRelayConfigurationRequest object itself.
     */
    public CommunicationRelayConfigurationRequest setTtl(Integer ttl) {
        this.ttl = ttl;
        return this;
    }
}
