private async Task AddNewCeo()
        {
            StringBuilder requestUri = new StringBuilder(_spContext.SPAppWebUrl.ToString())
                                       .Append("_api/web/lists/getbytitle('CeoList')/items");

            // updated ceo
            var newCeoJson = new SpChiefExecutiveJson {
                Metadata = new JsonMetadata {
                    Type = "SP.Data.CeoListListItem"
                },
                Title           = "Satya Nadella",
                TenureStartYear = "2014",
                TenureEndYear   = "Present"
            };

            StringContent requestContent = new StringContent(JsonConvert.SerializeObject(
                                                                 newCeoJson,
                                                                 Formatting.None,
                                                                 new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            }));

            requestContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=verbose");

            HttpClient         client  = new HttpClient();
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri.ToString());

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _spContext.UserAccessTokenForSPAppWeb);
            request.Headers.Add("Accept", "application/json;odata=verbose");
            request.Headers.Add("If-Match", "*");
            request.Content = requestContent;

            await client.SendAsync(request);
        }
        private async Task UpdateCurrentCeo()
        {
            // get list of all current CEO's
            var results = await GetChiefExecutives();

            // get CEO with no tenure end date
            var currentCeo = results.FirstOrDefault(ceo => ceo.TenureEndYear == "Present");

            StringBuilder requestUri = new StringBuilder(_spContext.SPAppWebUrl.ToString())
                                       .Append("_api/web/lists/getbytitle('CEO List')/items")
                                       .Append("(" + currentCeo.Id + ")");

            // updated ceo
            var existingCeoJson = new SpChiefExecutiveJson
            {
                Metadata = new JsonMetadata {
                    Type = "SP.Data.CEO_x0020_ListListItem"
                },
                TenureEndYear = "2014"
            };

            StringContent requestContent = new StringContent(JsonConvert.SerializeObject(
                                                                 existingCeoJson,
                                                                 Formatting.None,
                                                                 new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            }));

            requestContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=verbose");

            HttpClient         client  = new HttpClient();
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri.ToString());

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _spContext.UserAccessTokenForSPAppWeb);
            request.Headers.Add("Accept", "application/json;odata=verbose");
            request.Headers.Add("If-Match", "*");
            request.Headers.Add("X-Http-Method", "Merge");
            request.Content = requestContent;

            await client.SendAsync(request);
        }