public async Task <DatasetDefinition> CreateDatasetAsync(DatasetDefinition dataset) { if (string.IsNullOrWhiteSpace(_masterKey)) { throw new KeenException("An API MasterKey is required to get dataset results."); } // Validate if (null == dataset) { throw new KeenException("An instance of DatasetDefinition must be provided"); } // This throws if dataset is not valid. dataset.Validate(); var content = JsonConvert.SerializeObject(dataset, SerializerSettings); var responseMsg = await _keenHttpClient .PutAsync(GetDatasetUrl(dataset.DatasetName), _masterKey, content) .ConfigureAwait(continueOnCapturedContext: false); var responseString = await responseMsg .Content .ReadAsStringAsync() .ConfigureAwait(continueOnCapturedContext: false); var response = JObject.Parse(responseString); KeenUtil.CheckApiErrorCode(response); if (!responseMsg.IsSuccessStatusCode) { throw new KeenException($"Request failed with status: {responseMsg.StatusCode}"); } return(JsonConvert.DeserializeObject <DatasetDefinition>(responseString, SerializerSettings)); }