public async Task <ActionResult <Models.ApimSubscription> > UpdateSubsription([FromBody] Models.ApimSubscriptionCreateOrUpdateContract model, string id, bool?notify)
        {
            var requestUri = ApiUriFormatter.GetRequestUri(this.settings.Value, $"subscriptions/{id}", (notify != null) ? $"&notify={notify}" : string.Empty);
            var request    = new HttpRequestMessage(HttpMethod.Head, requestUri);

            var response = await client.SendAsync(request);

            response.EnsureSuccessStatusCode();
            response.Headers.TryGetValues("etag", out IEnumerable <string> etags);

            // optionally handle if match to make sure not to override a subscription after it has been changed
            request = new HttpRequestMessage(HttpMethod.Patch, requestUri)
            {
                Content = new StringContent(JsonConvert.SerializeObject(model.ToSubscriptionCreateOrUpdateContract(this.settings.Value), new JsonSerializerSettings {
                    NullValueHandling = NullValueHandling.Ignore
                }), Encoding.Unicode, "application/json")
            };

            request.Headers.TryAddWithoutValidation("If-Match", etags.First().Replace("\"", string.Empty));
            response = await client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            return(NoContent());
        }
        public async Task <ActionResult <Models.ApimSubscription> > CreateOrUpdateSubscription([FromBody] Models.ApimSubscriptionCreateOrUpdateContract model, string id, bool?notify)
        {
            var requestUri = ApiUriFormatter.GetRequestUri(this.settings.Value, $"subscriptions/{id}", (notify != null) ? $"&notify={notify}" : string.Empty);
            var createOrUpdateSubscriptionContract = model.ToSubscriptionCreateOrUpdateContract(this.settings.Value);
            var request = new HttpRequestMessage(HttpMethod.Put, requestUri)
            {
                Content = new StringContent(JsonConvert.SerializeObject(createOrUpdateSubscriptionContract, new JsonSerializerSettings {
                    NullValueHandling = NullValueHandling.Ignore
                }), Encoding.Unicode, "application/json")
            };

            var response = await client.SendAsync(request);

            response.EnsureSuccessStatusCode();
            var responseData = await response.Content.ReadAsAsync <Models.SubscriptionContract>();

            var value = responseData.ToApimSubscription();

            return(Ok(value));
        }