public async Task <WidgetResource> CreateWidget(WidgetResource widget)
        {
            using (var client = NewClient())
            {
                var requestDocument = RequestDocument.Containing(widget);
                var response        = await client.PostAsJsonAsync("widgets", requestDocument);

                response.EnsureSuccessStatusCode();
                var responseContent = await response.Content.ReadAsStringAsync();

                var responseDocument = JsonConvert.DeserializeObject <ResponseDocument <WidgetResource> >(responseContent);
                return(responseDocument.Data);
            }
        }
        public async Task <WidgetResource> UpdateWidget(string id, WidgetResource updates)
        {
            using (var client = NewClient())
            {
                var requestDocument = RequestDocument.Containing(updates);
                var requestContent  = JsonConvert.SerializeObject(requestDocument);
                var requestMessage  = new HttpRequestMessage(new HttpMethod("PATCH"), "widgets/" + id)
                {
                    Content = new StringContent(requestContent, Encoding.UTF8, "application/json")
                };

                var response = await client.SendAsync(requestMessage);

                response.EnsureSuccessStatusCode();
                var responseContent = await response.Content.ReadAsStringAsync();

                var responseDocument = JsonConvert.DeserializeObject <ResponseDocument <WidgetResource> >(responseContent);
                return(responseDocument.Data);
            }
        }