<reponame>cuemby/pulumi-equinix<filename>sdk/dotnet/Config/Config.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.Immutable;

namespace Cuemby.Equinix
{
    public static class Config
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification = 
        "Double underscore prefix used to avoid conflicts with variable names.")]
        private sealed class __Value<T>
        {
            private readonly Func<T> _getter;
            private T _value = default!;
            private bool _set;

            public __Value(Func<T> getter)
            {
                _getter = getter;
            }

            public T Get() => _set ? _value : _getter();

            public void Set(T value)
            {
                _value = value;
                _set = true;
            }
        }

        private static readonly Pulumi.Config __config = new Pulumi.Config("equinix");

        private static readonly __Value<string?> _authToken = new __Value<string?>(() => __config.Get("authToken"));
        /// <summary>
        /// The Equinix Metal API auth key for API operations
        /// </summary>
        public static string? AuthToken
        {
            get => _authToken.Get();
            set => _authToken.Set(value);
        }

        private static readonly __Value<string?> _clientId = new __Value<string?>(() => __config.Get("clientId"));
        /// <summary>
        /// API Consumer Key available under My Apps section in developer portal
        /// </summary>
        public static string? ClientId
        {
            get => _clientId.Get();
            set => _clientId.Set(value);
        }

        private static readonly __Value<string?> _clientSecret = new __Value<string?>(() => __config.Get("clientSecret"));
        /// <summary>
        /// API Consumer secret available under My Apps section in developer portal
        /// </summary>
        public static string? ClientSecret
        {
            get => _clientSecret.Get();
            set => _clientSecret.Set(value);
        }

        private static readonly __Value<string?> _endpoint = new __Value<string?>(() => __config.Get("endpoint"));
        /// <summary>
        /// The Equinix API base URL to point out desired environment. Defaults to https://api.equinix.com
        /// </summary>
        public static string? Endpoint
        {
            get => _endpoint.Get();
            set => _endpoint.Set(value);
        }

        private static readonly __Value<int?> _maxRetries = new __Value<int?>(() => __config.GetInt32("maxRetries"));
        public static int? MaxRetries
        {
            get => _maxRetries.Get();
            set => _maxRetries.Set(value);
        }

        private static readonly __Value<int?> _maxRetryWaitSeconds = new __Value<int?>(() => __config.GetInt32("maxRetryWaitSeconds"));
        public static int? MaxRetryWaitSeconds
        {
            get => _maxRetryWaitSeconds.Get();
            set => _maxRetryWaitSeconds.Set(value);
        }

        private static readonly __Value<int?> _requestTimeout = new __Value<int?>(() => __config.GetInt32("requestTimeout"));
        /// <summary>
        /// The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request.
        /// Defaults to 30
        /// </summary>
        public static int? RequestTimeout
        {
            get => _requestTimeout.Get();
            set => _requestTimeout.Set(value);
        }

        private static readonly __Value<int?> _responseMaxPageSize = new __Value<int?>(() => __config.GetInt32("responseMaxPageSize"));
        /// <summary>
        /// The maximum number of records in a single response for REST queries that produce paginated responses
        /// </summary>
        public static int? ResponseMaxPageSize
        {
            get => _responseMaxPageSize.Get();
            set => _responseMaxPageSize.Set(value);
        }

        private static readonly __Value<string?> _token = new __Value<string?>(() => __config.Get("token"));
        /// <summary>
        /// API token from the developer sandbox
        /// </summary>
        public static string? Token
        {
            get => _token.Get();
            set => _token.Set(value);
        }

    }
}
