// *** 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 luxifer.Scaleway
{
    public static class GetTemDomain
    {
        /// <summary>
        /// Gets information about a transactional email domain.
        /// </summary>
        public static Task<GetTemDomainResult> InvokeAsync(GetTemDomainArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetTemDomainResult>("scaleway:index/getTemDomain:getTemDomain", args ?? new GetTemDomainArgs(), options.WithDefaults());

        /// <summary>
        /// Gets information about a transactional email domain.
        /// </summary>
        public static Output<GetTemDomainResult> Invoke(GetTemDomainInvokeArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetTemDomainResult>("scaleway:index/getTemDomain:getTemDomain", args ?? new GetTemDomainInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetTemDomainArgs : global::Pulumi.InvokeArgs
    {
        [Input("domainId")]
        public string? DomainId { get; set; }

        /// <summary>
        /// The domain name.
        /// Only one of `name` and `id` should be specified.
        /// </summary>
        [Input("name")]
        public string? Name { get; set; }

        /// <summary>
        /// `region`) The region in which the domain exists.
        /// </summary>
        [Input("region")]
        public string? Region { get; set; }

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

    public sealed class GetTemDomainInvokeArgs : global::Pulumi.InvokeArgs
    {
        [Input("domainId")]
        public Input<string>? DomainId { get; set; }

        /// <summary>
        /// The domain name.
        /// Only one of `name` and `id` should be specified.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// `region`) The region in which the domain exists.
        /// </summary>
        [Input("region")]
        public Input<string>? Region { get; set; }

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


    [OutputType]
    public sealed class GetTemDomainResult
    {
        public readonly bool AcceptTos;
        /// <summary>
        /// The date and time of the Transaction Email Domain's creation (RFC 3339 format).
        /// </summary>
        public readonly string CreatedAt;
        /// <summary>
        /// The DKIM public key, as should be recorded in the DNS zone.
        /// </summary>
        public readonly string DkimConfig;
        public readonly string? DomainId;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// The error message if the last check failed.
        /// </summary>
        public readonly string LastError;
        /// <summary>
        /// The date and time the domain was last found to be valid (RFC 3339 format).
        /// </summary>
        public readonly string LastValidAt;
        public readonly string? Name;
        /// <summary>
        /// The date and time of the next scheduled check (RFC 3339 format).
        /// </summary>
        public readonly string NextCheckAt;
        public readonly string ProjectId;
        public readonly string? Region;
        /// <summary>
        /// The date and time of the revocation of the domain (RFC 3339 format).
        /// </summary>
        public readonly string RevokedAt;
        /// <summary>
        /// The SMTP host to use to send emails.
        /// </summary>
        public readonly string SmtpHost;
        /// <summary>
        /// The SMTP port to use to send emails over TLS.
        /// </summary>
        public readonly int SmtpPort;
        /// <summary>
        /// The SMTP port to use to send emails over TLS.
        /// </summary>
        public readonly int SmtpPortAlternative;
        /// <summary>
        /// The SMTP port to use to send emails.
        /// </summary>
        public readonly int SmtpPortUnsecure;
        /// <summary>
        /// The SMTPS port to use to send emails over TLS Wrapper.
        /// </summary>
        public readonly int SmtpsPort;
        /// <summary>
        /// The SMTPS port to use to send emails over TLS Wrapper.
        /// </summary>
        public readonly int SmtpsPortAlternative;
        /// <summary>
        /// The snippet of the SPF record that should be registered in the DNS zone.
        /// </summary>
        public readonly string SpfConfig;
        /// <summary>
        /// The status of the Transaction Email Domain.
        /// </summary>
        public readonly string Status;

        [OutputConstructor]
        private GetTemDomainResult(
            bool acceptTos,

            string createdAt,

            string dkimConfig,

            string? domainId,

            string id,

            string lastError,

            string lastValidAt,

            string? name,

            string nextCheckAt,

            string projectId,

            string? region,

            string revokedAt,

            string smtpHost,

            int smtpPort,

            int smtpPortAlternative,

            int smtpPortUnsecure,

            int smtpsPort,

            int smtpsPortAlternative,

            string spfConfig,

            string status)
        {
            AcceptTos = acceptTos;
            CreatedAt = createdAt;
            DkimConfig = dkimConfig;
            DomainId = domainId;
            Id = id;
            LastError = lastError;
            LastValidAt = lastValidAt;
            Name = name;
            NextCheckAt = nextCheckAt;
            ProjectId = projectId;
            Region = region;
            RevokedAt = revokedAt;
            SmtpHost = smtpHost;
            SmtpPort = smtpPort;
            SmtpPortAlternative = smtpPortAlternative;
            SmtpPortUnsecure = smtpPortUnsecure;
            SmtpsPort = smtpsPort;
            SmtpsPortAlternative = smtpsPortAlternative;
            SpfConfig = spfConfig;
            Status = status;
        }
    }
}
