/// <summary>
        /// Create a stream dataset
        /// </summary>
        /// <param name="datasetSchema">Schema and metadata for the dataset to create</param>
        /// <param name="updateMethod">Update method type for stream dataset. Options are Append or Replace</param>
        /// <returns></returns>
        public async Task <StreamDataset> CreateAsync(IDatasetSchema datasetSchema, UpdateMethod updateMethod)
        {
            string streamUri = "v1/streams";

            //_domoHttpClient.SetContentType("application/json");
            _domoHttpClient.SetAcceptRequestHeaders("application/json");
            string dsUpdateMethod = "";

            if (updateMethod == UpdateMethod.APPEND)
            {
                dsUpdateMethod = "APPEND";
            }
            else if (updateMethod == UpdateMethod.REPLACE)
            {
                dsUpdateMethod = "REPLACE";
            }
            var streamSchema = new StreamDatasetSchema()
            {
                DataSet = datasetSchema, UpdateMethod = dsUpdateMethod
            };
            string schemaJson = JsonConvert.SerializeObject(streamSchema, new JsonSerializerSettings()
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
            StringContent content = new StringContent(schemaJson, Encoding.UTF8, "application/json");

            var response = await _domoHttpClient.Client.PostAsync(streamUri, content);

            string responseMessage = await response.Content.ReadAsStringAsync();

            var newStreamDataset = JsonConvert.DeserializeObject <StreamDataset>(responseMessage);

            return(newStreamDataset);
        }
        /// <summary>
        /// Creates a dataset in DOMO with the specified schema. Does not populate dataset with data.
        /// </summary>
        /// <param name="schema"></param>
        /// <returns>Dataset object with newly created dataset information</returns>
        public async Task <Dataset> CreateDatasetAsync(IDatasetSchema schema)
        {
            string datasetUri = "v1/datasets";

            _domoHttpClient.SetAcceptRequestHeaders("application/json");
            DatasetSchema correctSchema = new DatasetSchema()
            {
                Description = schema.Description, Rows = schema.Rows, Name = schema.Name, Schema = schema.Schema
            };
            string        schemaJson = JsonConvert.SerializeObject(correctSchema, _serializerSettings);
            StringContent content    = new StringContent(schemaJson, Encoding.UTF8, "application/json");
            var           response   = await _domoHttpClient.Client.PostAsync(datasetUri, content);

            string responseMessage = await response.Content.ReadAsStringAsync();

            var newDataset = JsonConvert.DeserializeObject <Dataset>(responseMessage);

            return(newDataset);
        }
        /// <summary>
        /// Updates the dataset schema
        /// </summary>
        /// <param name="datasetId"></param>
        /// <param name="datasetSchema"></param>
        /// <returns>Http Response from Dataset Metadata request</returns>
        public async Task <HttpResponseMessage> UpdateDatasetMetadataAsync(string datasetId, IDatasetSchema schema)
        {
            string datasetUri = $"v1/datasets/{datasetId}";

            _domoHttpClient.SetAcceptRequestHeaders("application/json");
            DatasetSchema correctSchema = new DatasetSchema()
            {
                Description = schema.Description, Rows = schema.Rows, Name = schema.Name, Schema = schema.Schema
            };
            string        schemaJson = JsonConvert.SerializeObject(correctSchema, _serializerSettings);
            StringContent content    = new StringContent(schemaJson, Encoding.UTF8, "application/json");

            var response = await _domoHttpClient.Client.PutAsync(datasetUri, content);

            return(response);
        }