// *** 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
{
    public static class GetFirewallInternetserviceextension
    {
        /// <summary>
        /// Use this data source to get information on an fortios firewall internetserviceextension
        /// </summary>
        public static Task<GetFirewallInternetserviceextensionResult> InvokeAsync(GetFirewallInternetserviceextensionArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetFirewallInternetserviceextensionResult>("fortios:index/getFirewallInternetserviceextension:getFirewallInternetserviceextension", args ?? new GetFirewallInternetserviceextensionArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios firewall internetserviceextension
        /// </summary>
        public static Output<GetFirewallInternetserviceextensionResult> Invoke(GetFirewallInternetserviceextensionInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetFirewallInternetserviceextensionResult>("fortios:index/getFirewallInternetserviceextension:getFirewallInternetserviceextension", args ?? new GetFirewallInternetserviceextensionInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetFirewallInternetserviceextensionArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the fosid of the desired firewall internetserviceextension.
        /// </summary>
        [Input("fosid", required: true)]
        public int Fosid { get; set; }

        /// <summary>
        /// Specifies the vdom to which the data source 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 string? Vdomparam { get; set; }

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

    public sealed class GetFirewallInternetserviceextensionInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the fosid of the desired firewall internetserviceextension.
        /// </summary>
        [Input("fosid", required: true)]
        public Input<int> Fosid { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source 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 GetFirewallInternetserviceextensionInvokeArgs()
        {
        }
        public static new GetFirewallInternetserviceextensionInvokeArgs Empty => new GetFirewallInternetserviceextensionInvokeArgs();
    }


    [OutputType]
    public sealed class GetFirewallInternetserviceextensionResult
    {
        /// <summary>
        /// Comment.
        /// </summary>
        public readonly string Comment;
        /// <summary>
        /// Disable entries in the Internet Service database. The structure of `disable_entry` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallInternetserviceextensionDisableEntryResult> DisableEntries;
        /// <summary>
        /// Entries added to the Internet Service extension database. The structure of `entry` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallInternetserviceextensionEntryResult> Entries;
        /// <summary>
        /// Internet Service ID in the Internet Service database.
        /// </summary>
        public readonly int Fosid;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetFirewallInternetserviceextensionResult(
            string comment,

            ImmutableArray<Outputs.GetFirewallInternetserviceextensionDisableEntryResult> disableEntries,

            ImmutableArray<Outputs.GetFirewallInternetserviceextensionEntryResult> entries,

            int fosid,

            string id,

            string? vdomparam)
        {
            Comment = comment;
            DisableEntries = disableEntries;
            Entries = entries;
            Fosid = fosid;
            Id = id;
            Vdomparam = vdomparam;
        }
    }
}
