async Task CreateDocument(string collectionName, string content)
        {
            Thread.Sleep(500); // Try to avoid error 429 (Too Many Requests) without increasing the pricing tier. Don´t do this in a real app.

            string uri = $"{_EndpointUrl}dbs/{_DatabaseId}/colls/{collectionName}/docs";

            using (var _httpClient = new HttpClient())
            {
                _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                _httpClient.DefaultRequestHeaders.Add("x-ms-date", utc_date);
                _httpClient.DefaultRequestHeaders.Add("x-ms-version", "2015-08-06");

                string verb         = "POST";
                string resourceType = "docs";
                string resourceLink = $"dbs/{_DatabaseId}/colls/{collectionName}";

                string authHeader = DocumentAuthorization.GenerateMasterKeyAuthorizationSignature(verb, resourceLink, resourceType, _Key, "master", "1.0", utc_date);
                _httpClient.DefaultRequestHeaders.Remove("authorization");
                _httpClient.DefaultRequestHeaders.Add("authorization", authHeader);

                var response = await _httpClient.PostAsync(new Uri(uri), new StringContent(content, Encoding.UTF8, "application/json"));

                response.EnsureSuccessStatusCode();
            }
        }
        async Task <bool> ExistsDatabase()
        {
            string baseUri = $"{_EndpointUrl}dbs/{_DatabaseId}";

            using (var _httpClient = new HttpClient())
            {
                _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                _httpClient.DefaultRequestHeaders.Add("x-ms-date", utc_date);
                _httpClient.DefaultRequestHeaders.Add("x-ms-version", "2015-08-06");

                string verb         = "GET";
                string resourceType = "dbs";
                string resourceLink = "dbs/" + _DatabaseId;

                string authHeader = DocumentAuthorization.GenerateMasterKeyAuthorizationSignature(verb, resourceLink, resourceType, _Key, "master", "1.0", utc_date);
                _httpClient.DefaultRequestHeaders.Remove("authorization");
                _httpClient.DefaultRequestHeaders.Add("authorization", authHeader);

                var response = await _httpClient.GetAsync(new Uri(baseUri));

                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    return(true);
                }
            }

            return(false);
        }
        async Task CreateCollection(string collectionName)
        {
            string uri = $"{_EndpointUrl}dbs/{_DatabaseId}/colls";

            using (var _httpClient = new HttpClient())
            {
                _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                _httpClient.DefaultRequestHeaders.Add("x-ms-date", utc_date);
                _httpClient.DefaultRequestHeaders.Add("x-ms-version", "2015-08-06");

                string verb         = "POST";
                string resourceType = "colls";
                string resourceLink = $"dbs/{_DatabaseId}/colls";
                string resourceId   = $"dbs/{_DatabaseId}";

                string authHeader = DocumentAuthorization.GenerateMasterKeyAuthorizationSignature(verb, resourceId, resourceType, _Key, "master", "1.0", utc_date);
                _httpClient.DefaultRequestHeaders.Remove("authorization");
                _httpClient.DefaultRequestHeaders.Add("authorization", authHeader);

                var content  = JsonConvert.SerializeObject(new { id = collectionName });
                var response = await _httpClient.PostAsync(uri, new StringContent(content, Encoding.UTF8, "application/json"));

                response.EnsureSuccessStatusCode();
            }
        }