// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.Routeros.CapsMan
{
    /// <summary>
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Routeros = Pulumi.Routeros;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var test3a = new Routeros.CapsMan.Aaa("test3a", new()
    ///     {
    ///         CalledFormat = "ssid",
    ///         MacMode = "as-username-and-password",
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// ```sh
    ///  $ pulumi import routeros:CapsMan/aaa:Aaa test_3a .
    /// ```
    /// </summary>
    [RouterosResourceType("routeros:CapsMan/aaa:Aaa")]
    public partial class Aaa : global::Pulumi.CustomResource
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Output("___id_")]
        public Output<int?> ___id_ { get; private set; } = null!;

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Output("___path_")]
        public Output<string?> ___path_ { get; private set; } = null!;

        /// <summary>
        /// Format of how the 'called-id' identifier will be passed to RADIUS. When configuring radius server clients, you can specify 'called-id' in order to separate multiple entires.
        /// </summary>
        [Output("calledFormat")]
        public Output<string?> CalledFormat { get; private set; } = null!;

        /// <summary>
        /// When RADIUS accounting is used, Access Point periodically sends accounting information updates to the RADIUS server. This property specifies the default update interval that can be overridden by the RADIUS server using the Acct-Interim-Interval attribute.
        /// </summary>
        [Output("interimUpdate")]
        public Output<string> InterimUpdate { get; private set; } = null!;

        /// <summary>
        /// If this value is set to a time interval, the Access Point will cache RADIUS MAC authentication responses for a specified time, and will not contact the RADIUS server if matching cache entry already exists. The value disabled will disable the cache, Access Point will always contact the RADIUS server.
        /// </summary>
        [Output("macCaching")]
        public Output<string> MacCaching { get; private set; } = null!;

        /// <summary>
        /// Controls how the MAC address of the client is encoded by Access Point in the User-Name attribute of the MAC authentication and MAC accounting RADIUS requests.
        /// </summary>
        [Output("macFormat")]
        public Output<string?> MacFormat { get; private set; } = null!;

        /// <summary>
        /// By default Access Point uses an empty password, when sending Access-Request during MAC authentication. When this property is set to as-username-and-password, Access Point will use the same value for the User-Password attribute as for the User-Name attribute.
        /// </summary>
        [Output("macMode")]
        public Output<string?> MacMode { get; private set; } = null!;


        /// <summary>
        /// Create a Aaa resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public Aaa(string name, AaaArgs? args = null, CustomResourceOptions? options = null)
            : base("routeros:CapsMan/aaa:Aaa", name, args ?? new AaaArgs(), MakeResourceOptions(options, ""))
        {
        }

        private Aaa(string name, Input<string> id, AaaState? state = null, CustomResourceOptions? options = null)
            : base("routeros:CapsMan/aaa:Aaa", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing Aaa resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static Aaa Get(string name, Input<string> id, AaaState? state = null, CustomResourceOptions? options = null)
        {
            return new Aaa(name, id, state, options);
        }
    }

    public sealed class AaaArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___id_")]
        public Input<int>? ___id_ { get; set; }

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___path_")]
        public Input<string>? ___path_ { get; set; }

        /// <summary>
        /// Format of how the 'called-id' identifier will be passed to RADIUS. When configuring radius server clients, you can specify 'called-id' in order to separate multiple entires.
        /// </summary>
        [Input("calledFormat")]
        public Input<string>? CalledFormat { get; set; }

        /// <summary>
        /// When RADIUS accounting is used, Access Point periodically sends accounting information updates to the RADIUS server. This property specifies the default update interval that can be overridden by the RADIUS server using the Acct-Interim-Interval attribute.
        /// </summary>
        [Input("interimUpdate")]
        public Input<string>? InterimUpdate { get; set; }

        /// <summary>
        /// If this value is set to a time interval, the Access Point will cache RADIUS MAC authentication responses for a specified time, and will not contact the RADIUS server if matching cache entry already exists. The value disabled will disable the cache, Access Point will always contact the RADIUS server.
        /// </summary>
        [Input("macCaching")]
        public Input<string>? MacCaching { get; set; }

        /// <summary>
        /// Controls how the MAC address of the client is encoded by Access Point in the User-Name attribute of the MAC authentication and MAC accounting RADIUS requests.
        /// </summary>
        [Input("macFormat")]
        public Input<string>? MacFormat { get; set; }

        /// <summary>
        /// By default Access Point uses an empty password, when sending Access-Request during MAC authentication. When this property is set to as-username-and-password, Access Point will use the same value for the User-Password attribute as for the User-Name attribute.
        /// </summary>
        [Input("macMode")]
        public Input<string>? MacMode { get; set; }

        public AaaArgs()
        {
        }
        public static new AaaArgs Empty => new AaaArgs();
    }

    public sealed class AaaState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___id_")]
        public Input<int>? ___id_ { get; set; }

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___path_")]
        public Input<string>? ___path_ { get; set; }

        /// <summary>
        /// Format of how the 'called-id' identifier will be passed to RADIUS. When configuring radius server clients, you can specify 'called-id' in order to separate multiple entires.
        /// </summary>
        [Input("calledFormat")]
        public Input<string>? CalledFormat { get; set; }

        /// <summary>
        /// When RADIUS accounting is used, Access Point periodically sends accounting information updates to the RADIUS server. This property specifies the default update interval that can be overridden by the RADIUS server using the Acct-Interim-Interval attribute.
        /// </summary>
        [Input("interimUpdate")]
        public Input<string>? InterimUpdate { get; set; }

        /// <summary>
        /// If this value is set to a time interval, the Access Point will cache RADIUS MAC authentication responses for a specified time, and will not contact the RADIUS server if matching cache entry already exists. The value disabled will disable the cache, Access Point will always contact the RADIUS server.
        /// </summary>
        [Input("macCaching")]
        public Input<string>? MacCaching { get; set; }

        /// <summary>
        /// Controls how the MAC address of the client is encoded by Access Point in the User-Name attribute of the MAC authentication and MAC accounting RADIUS requests.
        /// </summary>
        [Input("macFormat")]
        public Input<string>? MacFormat { get; set; }

        /// <summary>
        /// By default Access Point uses an empty password, when sending Access-Request during MAC authentication. When this property is set to as-username-and-password, Access Point will use the same value for the User-Password attribute as for the User-Name attribute.
        /// </summary>
        [Input("macMode")]
        public Input<string>? MacMode { get; set; }

        public AaaState()
        {
        }
        public static new AaaState Empty => new AaaState();
    }
}
