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

namespace Pulumiverse.Fortios
{
    /// <summary>
    /// Show Internet Service application.
    /// 
    /// ## Import
    /// 
    /// Firewall InternetService can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/firewallInternetservice:FirewallInternetservice labelname {{fosid}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/firewallInternetservice:FirewallInternetservice labelname {{fosid}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/firewallInternetservice:FirewallInternetservice")]
    public partial class FirewallInternetservice : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Database name this Internet Service belongs to. Valid values: `isdb`, `irdb`.
        /// </summary>
        [Output("database")]
        public Output<string> Database { get; private set; } = null!;

        /// <summary>
        /// How this service may be used in a firewall policy (source, destination or both). Valid values: `src`, `dst`, `both`.
        /// </summary>
        [Output("direction")]
        public Output<string> Direction { get; private set; } = null!;

        /// <summary>
        /// Extra number of IPv6 ranges.
        /// </summary>
        [Output("extraIp6RangeNumber")]
        public Output<int> ExtraIp6RangeNumber { get; private set; } = null!;

        /// <summary>
        /// Extra number of IP ranges.
        /// </summary>
        [Output("extraIpRangeNumber")]
        public Output<int> ExtraIpRangeNumber { get; private set; } = null!;

        /// <summary>
        /// Internet Service ID.
        /// </summary>
        [Output("fosid")]
        public Output<int> Fosid { get; private set; } = null!;

        /// <summary>
        /// Icon ID of Internet Service.
        /// </summary>
        [Output("iconId")]
        public Output<int> IconId { get; private set; } = null!;

        /// <summary>
        /// Number of IPv6 ranges.
        /// </summary>
        [Output("ip6RangeNumber")]
        public Output<int> Ip6RangeNumber { get; private set; } = null!;

        /// <summary>
        /// Total number of IP addresses.
        /// </summary>
        [Output("ipNumber")]
        public Output<int> IpNumber { get; private set; } = null!;

        /// <summary>
        /// Total number of IP ranges.
        /// </summary>
        [Output("ipRangeNumber")]
        public Output<int> IpRangeNumber { get; private set; } = null!;

        /// <summary>
        /// Internet Service name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Indicates whether the Internet Service can be used.
        /// </summary>
        [Output("obsolete")]
        public Output<int> Obsolete { get; private set; } = null!;

        /// <summary>
        /// Reputation level of the Internet Service.
        /// </summary>
        [Output("reputation")]
        public Output<int> Reputation { get; private set; } = null!;

        /// <summary>
        /// Singular level of the Internet Service.
        /// </summary>
        [Output("singularity")]
        public Output<int> Singularity { get; private set; } = null!;

        /// <summary>
        /// Second Level Domain.
        /// </summary>
        [Output("sldId")]
        public Output<int> SldId { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;


        /// <summary>
        /// Create a FirewallInternetservice 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 FirewallInternetservice(string name, FirewallInternetserviceArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/firewallInternetservice:FirewallInternetservice", name, args ?? new FirewallInternetserviceArgs(), MakeResourceOptions(options, ""))
        {
        }

        private FirewallInternetservice(string name, Input<string> id, FirewallInternetserviceState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/firewallInternetservice:FirewallInternetservice", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
            };
            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 FirewallInternetservice 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 FirewallInternetservice Get(string name, Input<string> id, FirewallInternetserviceState? state = null, CustomResourceOptions? options = null)
        {
            return new FirewallInternetservice(name, id, state, options);
        }
    }

    public sealed class FirewallInternetserviceArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Database name this Internet Service belongs to. Valid values: `isdb`, `irdb`.
        /// </summary>
        [Input("database")]
        public Input<string>? Database { get; set; }

        /// <summary>
        /// How this service may be used in a firewall policy (source, destination or both). Valid values: `src`, `dst`, `both`.
        /// </summary>
        [Input("direction")]
        public Input<string>? Direction { get; set; }

        /// <summary>
        /// Extra number of IPv6 ranges.
        /// </summary>
        [Input("extraIp6RangeNumber")]
        public Input<int>? ExtraIp6RangeNumber { get; set; }

        /// <summary>
        /// Extra number of IP ranges.
        /// </summary>
        [Input("extraIpRangeNumber")]
        public Input<int>? ExtraIpRangeNumber { get; set; }

        /// <summary>
        /// Internet Service ID.
        /// </summary>
        [Input("fosid")]
        public Input<int>? Fosid { get; set; }

        /// <summary>
        /// Icon ID of Internet Service.
        /// </summary>
        [Input("iconId")]
        public Input<int>? IconId { get; set; }

        /// <summary>
        /// Number of IPv6 ranges.
        /// </summary>
        [Input("ip6RangeNumber")]
        public Input<int>? Ip6RangeNumber { get; set; }

        /// <summary>
        /// Total number of IP addresses.
        /// </summary>
        [Input("ipNumber")]
        public Input<int>? IpNumber { get; set; }

        /// <summary>
        /// Total number of IP ranges.
        /// </summary>
        [Input("ipRangeNumber")]
        public Input<int>? IpRangeNumber { get; set; }

        /// <summary>
        /// Internet Service name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Indicates whether the Internet Service can be used.
        /// </summary>
        [Input("obsolete")]
        public Input<int>? Obsolete { get; set; }

        /// <summary>
        /// Reputation level of the Internet Service.
        /// </summary>
        [Input("reputation")]
        public Input<int>? Reputation { get; set; }

        /// <summary>
        /// Singular level of the Internet Service.
        /// </summary>
        [Input("singularity")]
        public Input<int>? Singularity { get; set; }

        /// <summary>
        /// Second Level Domain.
        /// </summary>
        [Input("sldId")]
        public Input<int>? SldId { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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

    public sealed class FirewallInternetserviceState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Database name this Internet Service belongs to. Valid values: `isdb`, `irdb`.
        /// </summary>
        [Input("database")]
        public Input<string>? Database { get; set; }

        /// <summary>
        /// How this service may be used in a firewall policy (source, destination or both). Valid values: `src`, `dst`, `both`.
        /// </summary>
        [Input("direction")]
        public Input<string>? Direction { get; set; }

        /// <summary>
        /// Extra number of IPv6 ranges.
        /// </summary>
        [Input("extraIp6RangeNumber")]
        public Input<int>? ExtraIp6RangeNumber { get; set; }

        /// <summary>
        /// Extra number of IP ranges.
        /// </summary>
        [Input("extraIpRangeNumber")]
        public Input<int>? ExtraIpRangeNumber { get; set; }

        /// <summary>
        /// Internet Service ID.
        /// </summary>
        [Input("fosid")]
        public Input<int>? Fosid { get; set; }

        /// <summary>
        /// Icon ID of Internet Service.
        /// </summary>
        [Input("iconId")]
        public Input<int>? IconId { get; set; }

        /// <summary>
        /// Number of IPv6 ranges.
        /// </summary>
        [Input("ip6RangeNumber")]
        public Input<int>? Ip6RangeNumber { get; set; }

        /// <summary>
        /// Total number of IP addresses.
        /// </summary>
        [Input("ipNumber")]
        public Input<int>? IpNumber { get; set; }

        /// <summary>
        /// Total number of IP ranges.
        /// </summary>
        [Input("ipRangeNumber")]
        public Input<int>? IpRangeNumber { get; set; }

        /// <summary>
        /// Internet Service name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Indicates whether the Internet Service can be used.
        /// </summary>
        [Input("obsolete")]
        public Input<int>? Obsolete { get; set; }

        /// <summary>
        /// Reputation level of the Internet Service.
        /// </summary>
        [Input("reputation")]
        public Input<int>? Reputation { get; set; }

        /// <summary>
        /// Singular level of the Internet Service.
        /// </summary>
        [Input("singularity")]
        public Input<int>? Singularity { get; set; }

        /// <summary>
        /// Second Level Domain.
        /// </summary>
        [Input("sldId")]
        public Input<int>? SldId { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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