// *** 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 GetSystemVdomexception
    {
        /// <summary>
        /// Use this data source to get information on an fortios system vdomexception
        /// </summary>
        public static Task<GetSystemVdomexceptionResult> InvokeAsync(GetSystemVdomexceptionArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemVdomexceptionResult>("fortios:index/getSystemVdomexception:getSystemVdomexception", args ?? new GetSystemVdomexceptionArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios system vdomexception
        /// </summary>
        public static Output<GetSystemVdomexceptionResult> Invoke(GetSystemVdomexceptionInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemVdomexceptionResult>("fortios:index/getSystemVdomexception:getSystemVdomexception", args ?? new GetSystemVdomexceptionInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemVdomexceptionArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the fosid of the desired system vdomexception.
        /// </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 GetSystemVdomexceptionArgs()
        {
        }
        public static new GetSystemVdomexceptionArgs Empty => new GetSystemVdomexceptionArgs();
    }

    public sealed class GetSystemVdomexceptionInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the fosid of the desired system vdomexception.
        /// </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 GetSystemVdomexceptionInvokeArgs()
        {
        }
        public static new GetSystemVdomexceptionInvokeArgs Empty => new GetSystemVdomexceptionInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemVdomexceptionResult
    {
        /// <summary>
        /// Index &lt;1-4096&gt;.
        /// </summary>
        public readonly int Fosid;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Name of the configuration object that can be configured independently for all VDOMs.
        /// </summary>
        public readonly string Object;
        /// <summary>
        /// Object ID.
        /// </summary>
        public readonly int Oid;
        /// <summary>
        /// Determine whether the configuration object can be configured separately for all VDOMs or if some VDOMs share the same configuration.
        /// </summary>
        public readonly string Scope;
        public readonly string? Vdomparam;
        /// <summary>
        /// Names of the VDOMs. The structure of `vdom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemVdomexceptionVdomResult> Vdoms;

        [OutputConstructor]
        private GetSystemVdomexceptionResult(
            int fosid,

            string id,

            string @object,

            int oid,

            string scope,

            string? vdomparam,

            ImmutableArray<Outputs.GetSystemVdomexceptionVdomResult> vdoms)
        {
            Fosid = fosid;
            Id = id;
            Object = @object;
            Oid = oid;
            Scope = scope;
            Vdomparam = vdomparam;
            Vdoms = vdoms;
        }
    }
}
