/// <summary>
        /// Create an Instance of a DragonchainClient.
        /// </summary>
        /// <param name="dragonchainId">dragonchainId associated with these credentials</param>
        /// /// <param name="credentialManager">manager to retrieve Dragonchain credentials from config provider</param>
        /// <param name="credentialService">service to retrieve Dragonchain credentials for use in API requests</param>
        /// <param name="httpService">API request service</param>
        /// <param name="logger">Microsoft.Extensions.Logging implementation</param>
        public DragonchainClient(string dragonchainId, ICredentialManager credentialManager, ICredentialService credentialService = null, IHttpService httpService = null, ILogger logger = null)
        {
            logger = logger ?? NullLogger.Instance;
            if (string.IsNullOrWhiteSpace(dragonchainId))
            {
                if (credentialManager == null)
                {
                    throw new FailureByDesignException(FailureCode.PARAM_ERROR, message: "Credential Manager must be provided if dragonchainid is null or empty");
                }
                logger.LogDebug("Dragonchain ID not explicitly provided, will search env/disk");
                dragonchainId = credentialManager.GetDragonchainId();
            }
            _credentialService = credentialService ?? new CredentialService(dragonchainId, credentialManager: credentialManager);
            var endpoint = $"https://{dragonchainId}.api.dragonchain.com";

            _httpService = httpService ?? new HttpService(_credentialService, endpoint, logger);
        }