<filename>sdk/dotnet/GetSystemDdns.cs// *** 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 GetSystemDdns
    {
        /// <summary>
        /// Use this data source to get information on an fortios system ddns
        /// </summary>
        public static Task<GetSystemDdnsResult> InvokeAsync(GetSystemDdnsArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemDdnsResult>("fortios:index/getSystemDdns:getSystemDdns", args ?? new GetSystemDdnsArgs(), options.WithDefaults());

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


    public sealed class GetSystemDdnsArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the ddnsid of the desired system ddns.
        /// </summary>
        [Input("ddnsid", required: true)]
        public int Ddnsid { 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 GetSystemDdnsArgs()
        {
        }
        public static new GetSystemDdnsArgs Empty => new GetSystemDdnsArgs();
    }

    public sealed class GetSystemDdnsInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the ddnsid of the desired system ddns.
        /// </summary>
        [Input("ddnsid", required: true)]
        public Input<int> Ddnsid { 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 GetSystemDdnsInvokeArgs()
        {
        }
        public static new GetSystemDdnsInvokeArgs Empty => new GetSystemDdnsInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemDdnsResult
    {
        /// <summary>
        /// Address type of interface address in DDNS update.
        /// </summary>
        public readonly string AddrType;
        /// <summary>
        /// Bound IP address.
        /// </summary>
        public readonly string BoundIp;
        /// <summary>
        /// Enable/disable use of clear text connections.
        /// </summary>
        public readonly string ClearText;
        /// <summary>
        /// Enable/disable TSIG authentication for your DDNS server.
        /// </summary>
        public readonly string DdnsAuth;
        /// <summary>
        /// Your fully qualified domain name (for example, yourname.DDNS.com).
        /// </summary>
        public readonly string DdnsDomain;
        /// <summary>
        /// DDNS update key (base 64 encoding).
        /// </summary>
        public readonly string DdnsKey;
        /// <summary>
        /// DDNS update key name.
        /// </summary>
        public readonly string DdnsKeyname;
        /// <summary>
        /// DDNS password.
        /// </summary>
        public readonly string DdnsPassword;
        /// <summary>
        /// Select a DDNS service provider.
        /// </summary>
        public readonly string DdnsServer;
        /// <summary>
        /// Generic DDNS server IP/FQDN list. The structure of `ddns_server_addr` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemDdnsDdnsServerAddrResult> DdnsServerAddrs;
        /// <summary>
        /// Generic DDNS server IP.
        /// </summary>
        public readonly string DdnsServerIp;
        /// <summary>
        /// DDNS Serial Number.
        /// </summary>
        public readonly string DdnsSn;
        /// <summary>
        /// Time-to-live for DDNS packets.
        /// </summary>
        public readonly int DdnsTtl;
        /// <summary>
        /// DDNS user name.
        /// </summary>
        public readonly string DdnsUsername;
        /// <summary>
        /// Zone of your domain name (for example, DDNS.com).
        /// </summary>
        public readonly string DdnsZone;
        /// <summary>
        /// DDNS ID.
        /// </summary>
        public readonly int Ddnsid;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Monitored interface. The structure of `monitor_interface` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemDdnsMonitorInterfaceResult> MonitorInterfaces;
        /// <summary>
        /// Address type of the DDNS server.
        /// </summary>
        public readonly string ServerType;
        /// <summary>
        /// Name of local certificate for SSL connections.
        /// </summary>
        public readonly string SslCertificate;
        /// <summary>
        /// DDNS update interval (60 - 2592000 sec, default = 300).
        /// </summary>
        public readonly int UpdateInterval;
        /// <summary>
        /// Enable/disable use of public IP address.
        /// </summary>
        public readonly string UsePublicIp;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetSystemDdnsResult(
            string addrType,

            string boundIp,

            string clearText,

            string ddnsAuth,

            string ddnsDomain,

            string ddnsKey,

            string ddnsKeyname,

            string ddnsPassword,

            string ddnsServer,

            ImmutableArray<Outputs.GetSystemDdnsDdnsServerAddrResult> ddnsServerAddrs,

            string ddnsServerIp,

            string ddnsSn,

            int ddnsTtl,

            string ddnsUsername,

            string ddnsZone,

            int ddnsid,

            string id,

            ImmutableArray<Outputs.GetSystemDdnsMonitorInterfaceResult> monitorInterfaces,

            string serverType,

            string sslCertificate,

            int updateInterval,

            string usePublicIp,

            string? vdomparam)
        {
            AddrType = addrType;
            BoundIp = boundIp;
            ClearText = clearText;
            DdnsAuth = ddnsAuth;
            DdnsDomain = ddnsDomain;
            DdnsKey = ddnsKey;
            DdnsKeyname = ddnsKeyname;
            DdnsPassword = ddnsPassword;
            DdnsServer = ddnsServer;
            DdnsServerAddrs = ddnsServerAddrs;
            DdnsServerIp = ddnsServerIp;
            DdnsSn = ddnsSn;
            DdnsTtl = ddnsTtl;
            DdnsUsername = ddnsUsername;
            DdnsZone = ddnsZone;
            Ddnsid = ddnsid;
            Id = id;
            MonitorInterfaces = monitorInterfaces;
            ServerType = serverType;
            SslCertificate = sslCertificate;
            UpdateInterval = updateInterval;
            UsePublicIp = usePublicIp;
            Vdomparam = vdomparam;
        }
    }
}
