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

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


    public sealed class GetSystemDnsdatabaseArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired system dnsdatabase.
        /// </summary>
        [Input("name", required: true)]
        public string Name { 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 string? Vdomparam { get; set; }

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

    public sealed class GetSystemDnsdatabaseInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired system dnsdatabase.
        /// </summary>
        [Input("name", required: true)]
        public Input<string> Name { 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 GetSystemDnsdatabaseInvokeArgs()
        {
        }
        public static new GetSystemDnsdatabaseInvokeArgs Empty => new GetSystemDnsdatabaseInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemDnsdatabaseResult
    {
        /// <summary>
        /// DNS zone transfer IP address list.
        /// </summary>
        public readonly string AllowTransfer;
        /// <summary>
        /// Enable/disable authoritative zone.
        /// </summary>
        public readonly string Authoritative;
        /// <summary>
        /// Email address of the administrator for this zone.
        /// You can specify only the username (e.g. admin) or full email address (e.g. nnheo@example.com)
        /// When using a simple username, the domain of the email will be this zone.
        /// </summary>
        public readonly string Contact;
        /// <summary>
        /// DNS entry. The structure of `dns_entry` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemDnsdatabaseDnsEntryResult> DnsEntries;
        /// <summary>
        /// Domain name.
        /// </summary>
        public readonly string Domain;
        /// <summary>
        /// DNS zone forwarder IP address list.
        /// </summary>
        public readonly string Forwarder;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// IP address of master DNS server. Entries in this master DNS server and imported into the DNS zone.
        /// </summary>
        public readonly string IpMaster;
        /// <summary>
        /// IP address of primary DNS server. Entries in this primary DNS server and imported into the DNS zone.
        /// </summary>
        public readonly string IpPrimary;
        /// <summary>
        /// Zone name.
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// Domain name of the default DNS server for this zone.
        /// </summary>
        public readonly string PrimaryName;
        /// <summary>
        /// Maximum number of resource records (10 - 65536, 0 means infinite).
        /// </summary>
        public readonly int RrMax;
        /// <summary>
        /// Source IP for forwarding to DNS server.
        /// </summary>
        public readonly string SourceIp;
        /// <summary>
        /// Enable/disable resource record status.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// Time-to-live for this entry (0 to 2147483647 sec, default = 0).
        /// </summary>
        public readonly int Ttl;
        /// <summary>
        /// Resource record type.
        /// </summary>
        public readonly string Type;
        public readonly string? Vdomparam;
        /// <summary>
        /// Zone view (public to serve public clients, shadow to serve internal clients).
        /// </summary>
        public readonly string View;

        [OutputConstructor]
        private GetSystemDnsdatabaseResult(
            string allowTransfer,

            string authoritative,

            string contact,

            ImmutableArray<Outputs.GetSystemDnsdatabaseDnsEntryResult> dnsEntries,

            string domain,

            string forwarder,

            string id,

            string ipMaster,

            string ipPrimary,

            string name,

            string primaryName,

            int rrMax,

            string sourceIp,

            string status,

            int ttl,

            string type,

            string? vdomparam,

            string view)
        {
            AllowTransfer = allowTransfer;
            Authoritative = authoritative;
            Contact = contact;
            DnsEntries = dnsEntries;
            Domain = domain;
            Forwarder = forwarder;
            Id = id;
            IpMaster = ipMaster;
            IpPrimary = ipPrimary;
            Name = name;
            PrimaryName = primaryName;
            RrMax = rrMax;
            SourceIp = sourceIp;
            Status = status;
            Ttl = ttl;
            Type = type;
            Vdomparam = vdomparam;
            View = view;
        }
    }
}
