{"action":"created","comment":{"url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/comments/217134230","pull_request_review_id":154764218,"id":217134230,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNzEzNDIzMA==","diff_hunk":"@@ -0,0 +1,193 @@\n+﻿// ------------------------------------------------------------------------------\n+//  Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.  See License in the project root for license information.\n+// ------------------------------------------------------------------------------\n+\n+using System;\n+using System.Collections.Generic;\n+using System.Linq;\n+using System.Threading.Tasks;\n+using System.Threading;\n+using System.Net.Http;\n+using System.Net;\n+using System.Net.Http.Headers;\n+using System.IO;\n+\n+namespace Microsoft.Graph\n+{ \n+    /// <summary>\n+    /// An <see cref=\"DelegatingHandler\"/> implementation using standard .NET libraries.\n+    /// </summary>\n+    public class RetryHandler : DelegatingHandler\n+    {\n+\n+        // All values for fields are temporary\n+        private const int MAX_RETRY = 3;\n+        private const string RETRY_AFTER = \"Retry-After\";\n+        private const string RETRY_ATTEMPT = \"Retry-Attempt\";\n+        private const int DELAY_MILLISECONDES = 6000;\n+        private const int MAX_DELAY_MILLISECONDS = 10000;\n+        private int m_pow = 1;\n+\n+        /// <summary>\n+        /// Construct a new <see cref=\"RetryHandler\"/>\n+        /// </summary>\n+        /// <param name=\"innerHandler\">An HTTP message handler to pass to the <see cref=\"HttpMessageHandler\"/> for sending requests.</param>\n+        public RetryHandler(HttpMessageHandler innerHandler)\n+        {\n+            InnerHandler = innerHandler;\n+        }\n+\n+        /// <summary>\n+        /// Send a HTTP request \n+        /// </summary>\n+        /// <param name=\"httpRequest\">The HTTP request<see cref=\"HttpRequestMessage\"/>needs to be sent.</param>\n+        /// <param name=\"cancellationToken\">The <see cref=\"CancellationToken\"/> for the request.</param>\n+        /// <returns></returns>\n+        protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage httpRequest, CancellationToken cancellationToken)\n+        {\n+            // Send request first time\n+            var response = await base.SendAsync(httpRequest, cancellationToken);\n+\n+            // Check request's payloads and response status\n+            if (IsRetry(response) && IsBuffed(httpRequest))\n+            {\n+\n+                response = await SendRetryAsync(response, cancellationToken);\n+            }\n+\n+            return response;\n+        }\n+\n+        /// <summary>\n+        /// Retry sending the HTTP request \n+        /// </summary>\n+        /// <param name=\"response\">The <see cref=\"HttpResponseMessage\"/> needs to be retried.</param>\n+        /// <param name=\"cancellationToken\">The <see cref=\"CancellationToken\"/> for the retry.</param>\n+        /// <returns></returns>\n+        public async Task<HttpResponseMessage> SendRetryAsync(HttpResponseMessage response, CancellationToken cancellationToken)\n+        {\n+\n+\n+            int retryCount = 0;\n+\n+          \n+            while (retryCount < MAX_RETRY)\n+            {\n+\n+                // Call Delay method to get delay time from response's Retry-After header or from exponential backoff \n+                // Start Task.Delay task\n+                Task delay = Delay(response, retryCount);\n+\n+                // Get the original request\n+                var request = response.RequestMessage;\n+\n+                // Increase retryCount and then update Retry-Attempt in request header\n+                retryCount++;\n+                AddOrUpdateRetryAttempt(request, retryCount);\n+\n+                // Delay time\n+                await delay;\n+\n+                // Call base.SendAsync to send the request\n+                response = await base.SendAsync(request, cancellationToken);\n+\n+                if (!IsRetry(response) || !IsBuffed(request))\n+                {\n+                    return response;\n+                }\n+\n+            }\n+            throw new ServiceException(\n+                         new Error\n+                         {\n+                             Code = ErrorConstants.Codes.TooManyRetries,\n+                             Message = string.Format(ErrorConstants.Messages.TooManyRedirectsFormatString, retryCount)\n+                         });\n+\n+        }\n+\n+\n+\n+        /// <summary>\n+        /// Check the HTTP response's status to determine whether it should be retried or not.\n+        /// </summary>\n+        /// <param name=\"response\">The <see cref=\"HttpResponseMessage\"/>returned.</param>\n+        /// <returns></returns>\n+        public bool IsRetry(HttpResponseMessage response)\n+        {\n+            if ((response.StatusCode == HttpStatusCode.ServiceUnavailable ||\n+                response.StatusCode == (HttpStatusCode)429))\n+            {\n+                return true;\n+            }\n+            return false;\n+        }\n+\n+        /// <summary>\n+        /// Check the HTTP request's content to determine whether it can be retried or not.\n+        /// </summary>\n+        /// <param name=\"request\">The <see cref=\"HttpRequestMessage\"/>needs to be sent.</param>\n+        /// <returns></returns>\n+        private bool IsBuffed(HttpRequestMessage request)\n+        {\n+            HttpContent content = request.Content;\n+\n+            if ((request.Method == HttpMethod.Put || request.Method == HttpMethod.Post) \n+                && (content == null || content.Headers.ContentLength == null || (int)content.Headers.ContentLength == -1))\n+            {\n+                return false;\n+            }\n+            return true;\n+           \n+        }\n+\n+        /// <summary>\n+        /// Update Retry-Attempt header in the HTTP request\n+        /// </summary>\n+        /// <param name=\"request\">The <see cref=\"HttpRequestMessage\"/>needs to be sent.</param>\n+        /// <param name=\"retry_count\">Retry times</param>\n+        private void AddOrUpdateRetryAttempt(HttpRequestMessage request, int retry_count)\n+        {\n+            if (request.Headers.Contains(RETRY_ATTEMPT))\n+            {\n+                request.Headers.Remove(RETRY_ATTEMPT);\n+            }\n+            request.Headers.Add(RETRY_ATTEMPT, retry_count.ToString());\n+        }\n+\n+        /// <summary>\n+        /// Delay task operation based on Retry-After header in the response or exponential backoff\n+        /// </summary>\n+        /// <param name=\"response\">The <see cref=\"HttpResponseMessage\"/>returned.</param>\n+        /// <param name=\"retry_count\">The retry counts</param>\n+        /// <returns>The <see cref=\"Task\"/> for delay operation.</returns>\n+        public Task Delay(HttpResponseMessage response, int retry_count)\n+        {\n+            \n+            TimeSpan delay = TimeSpan.FromMilliseconds(0);\n+            HttpHeaders headers = response.Headers;\n+            if (headers.TryGetValues(RETRY_AFTER, out IEnumerable<string> values))\n+            {\n+                string retry_after = values.First();\n+                if (Int32.TryParse(retry_after, out int delay_seconds))\n+                {\n+                    delay = TimeSpan.FromSeconds(delay_seconds);\n+                }\n+            }\n+            else\n+            {\n+                if (retry_count < 31)\n+                {\n+                    m_pow = m_pow << 1; // m_pow = Pow(2, m_retries - 1)\n+                }\n+                int delay_time = Math.Min(DELAY_MILLISECONDES * (m_pow - 1) / 2,\n+                    MAX_DELAY_MILLISECONDS);","path":"src/Microsoft.Graph.Core/Requests/RetryHandler.cs","position":184,"original_position":184,"commit_id":"7aa40f0ae7736c7b52a28d80a0a6d80c6848c8e8","original_commit_id":"7aa40f0ae7736c7b52a28d80a0a6d80c6848c8e8","user":{"login":"MIchaelMainer","id":8527305,"node_id":"MDQ6VXNlcjg1MjczMDU=","avatar_url":"https://avatars0.githubusercontent.com/u/8527305?v=4","gravatar_id":"","url":"https://api.github.com/users/MIchaelMainer","html_url":"https://github.com/MIchaelMainer","followers_url":"https://api.github.com/users/MIchaelMainer/followers","following_url":"https://api.github.com/users/MIchaelMainer/following{/other_user}","gists_url":"https://api.github.com/users/MIchaelMainer/gists{/gist_id}","starred_url":"https://api.github.com/users/MIchaelMainer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MIchaelMainer/subscriptions","organizations_url":"https://api.github.com/users/MIchaelMainer/orgs","repos_url":"https://api.github.com/users/MIchaelMainer/repos","events_url":"https://api.github.com/users/MIchaelMainer/events{/privacy}","received_events_url":"https://api.github.com/users/MIchaelMainer/received_events","type":"User","site_admin":false},"body":"MAX_DELAY_MILLISECONDS - the value is 10000. Is this value arbitrary, did we get it from AGS, or did we get it from other source? What's the thought around 10 seconds here?","created_at":"2018-09-12T18:06:43Z","updated_at":"2018-09-12T18:21:04Z","html_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet/pull/295#discussion_r217134230","pull_request_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/comments/217134230"},"html":{"href":"https://github.com/microsoftgraph/msgraph-sdk-dotnet/pull/295#discussion_r217134230"},"pull_request":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295"}}},"pull_request":{"url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295","id":214065684,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0MDY1Njg0","html_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet/pull/295","diff_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet/pull/295.diff","patch_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet/pull/295.patch","issue_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/295","number":295,"state":"open","locked":false,"title":"Add Retry Handler Class for review","user":{"login":"vikyding","id":12685196,"node_id":"MDQ6VXNlcjEyNjg1MTk2","avatar_url":"https://avatars1.githubusercontent.com/u/12685196?v=4","gravatar_id":"","url":"https://api.github.com/users/vikyding","html_url":"https://github.com/vikyding","followers_url":"https://api.github.com/users/vikyding/followers","following_url":"https://api.github.com/users/vikyding/following{/other_user}","gists_url":"https://api.github.com/users/vikyding/gists{/gist_id}","starred_url":"https://api.github.com/users/vikyding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vikyding/subscriptions","organizations_url":"https://api.github.com/users/vikyding/orgs","repos_url":"https://api.github.com/users/vikyding/repos","events_url":"https://api.github.com/users/vikyding/events{/privacy}","received_events_url":"https://api.github.com/users/vikyding/received_events","type":"User","site_admin":false},"body":"@darrelmiller @MIchaelMainer This PR is not for merge. I just pushed the code for reviewing and looking for more feedback from you especially for how to check requests with payloads with stream forward only. And the values for fields. Very appreciate your suggestions and help. Thanks.","created_at":"2018-09-08T00:19:38Z","updated_at":"2018-09-12T18:21:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"04e85f1be8a3161b9245e3c9580a7f961918eb61","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295/commits","review_comments_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295/comments","review_comment_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/295/comments","statuses_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/statuses/7aa40f0ae7736c7b52a28d80a0a6d80c6848c8e8","head":{"label":"microsoftgraph:AddRetryHandler","ref":"AddRetryHandler","sha":"7aa40f0ae7736c7b52a28d80a0a6d80c6848c8e8","user":{"login":"microsoftgraph","id":17304259,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MzA0MjU5","avatar_url":"https://avatars2.githubusercontent.com/u/17304259?v=4","gravatar_id":"","url":"https://api.github.com/users/microsoftgraph","html_url":"https://github.com/microsoftgraph","followers_url":"https://api.github.com/users/microsoftgraph/followers","following_url":"https://api.github.com/users/microsoftgraph/following{/other_user}","gists_url":"https://api.github.com/users/microsoftgraph/gists{/gist_id}","starred_url":"https://api.github.com/users/microsoftgraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/microsoftgraph/subscriptions","organizations_url":"https://api.github.com/users/microsoftgraph/orgs","repos_url":"https://api.github.com/users/microsoftgraph/repos","events_url":"https://api.github.com/users/microsoftgraph/events{/privacy}","received_events_url":"https://api.github.com/users/microsoftgraph/received_events","type":"Organization","site_admin":false},"repo":{"id":53027441,"node_id":"MDEwOlJlcG9zaXRvcnk1MzAyNzQ0MQ==","name":"msgraph-sdk-dotnet","full_name":"microsoftgraph/msgraph-sdk-dotnet","owner":{"login":"microsoftgraph","id":17304259,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MzA0MjU5","avatar_url":"https://avatars2.githubusercontent.com/u/17304259?v=4","gravatar_id":"","url":"https://api.github.com/users/microsoftgraph","html_url":"https://github.com/microsoftgraph","followers_url":"https://api.github.com/users/microsoftgraph/followers","following_url":"https://api.github.com/users/microsoftgraph/following{/other_user}","gists_url":"https://api.github.com/users/microsoftgraph/gists{/gist_id}","starred_url":"https://api.github.com/users/microsoftgraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/microsoftgraph/subscriptions","organizations_url":"https://api.github.com/users/microsoftgraph/orgs","repos_url":"https://api.github.com/users/microsoftgraph/repos","events_url":"https://api.github.com/users/microsoftgraph/events{/privacy}","received_events_url":"https://api.github.com/users/microsoftgraph/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet","description":"Microsoft Graph Client Library for .NET!","fork":false,"url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet","forks_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/forks","keys_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/teams","hooks_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/hooks","issue_events_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/events","assignees_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/tags","blobs_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/languages","stargazers_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/stargazers","contributors_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/contributors","subscribers_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/subscribers","subscription_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/subscription","commits_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/merges","archive_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/downloads","issues_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/deployments","created_at":"2016-03-03T06:39:37Z","updated_at":"2018-09-11T01:27:31Z","pushed_at":"2018-09-10T21:45:02Z","git_url":"git://github.com/microsoftgraph/msgraph-sdk-dotnet.git","ssh_url":"git@github.com:microsoftgraph/msgraph-sdk-dotnet.git","clone_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet.git","svn_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet","homepage":"https://graph.microsoft.io","size":5712,"stargazers_count":152,"watchers_count":152,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":72,"mirror_url":null,"archived":false,"open_issues_count":24,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":72,"open_issues":24,"watchers":152,"default_branch":"dev"}},"base":{"label":"microsoftgraph:dev","ref":"dev","sha":"d848f51b4e53e4e28d018cc9747fd001ab41ed2a","user":{"login":"microsoftgraph","id":17304259,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MzA0MjU5","avatar_url":"https://avatars2.githubusercontent.com/u/17304259?v=4","gravatar_id":"","url":"https://api.github.com/users/microsoftgraph","html_url":"https://github.com/microsoftgraph","followers_url":"https://api.github.com/users/microsoftgraph/followers","following_url":"https://api.github.com/users/microsoftgraph/following{/other_user}","gists_url":"https://api.github.com/users/microsoftgraph/gists{/gist_id}","starred_url":"https://api.github.com/users/microsoftgraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/microsoftgraph/subscriptions","organizations_url":"https://api.github.com/users/microsoftgraph/orgs","repos_url":"https://api.github.com/users/microsoftgraph/repos","events_url":"https://api.github.com/users/microsoftgraph/events{/privacy}","received_events_url":"https://api.github.com/users/microsoftgraph/received_events","type":"Organization","site_admin":false},"repo":{"id":53027441,"node_id":"MDEwOlJlcG9zaXRvcnk1MzAyNzQ0MQ==","name":"msgraph-sdk-dotnet","full_name":"microsoftgraph/msgraph-sdk-dotnet","owner":{"login":"microsoftgraph","id":17304259,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MzA0MjU5","avatar_url":"https://avatars2.githubusercontent.com/u/17304259?v=4","gravatar_id":"","url":"https://api.github.com/users/microsoftgraph","html_url":"https://github.com/microsoftgraph","followers_url":"https://api.github.com/users/microsoftgraph/followers","following_url":"https://api.github.com/users/microsoftgraph/following{/other_user}","gists_url":"https://api.github.com/users/microsoftgraph/gists{/gist_id}","starred_url":"https://api.github.com/users/microsoftgraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/microsoftgraph/subscriptions","organizations_url":"https://api.github.com/users/microsoftgraph/orgs","repos_url":"https://api.github.com/users/microsoftgraph/repos","events_url":"https://api.github.com/users/microsoftgraph/events{/privacy}","received_events_url":"https://api.github.com/users/microsoftgraph/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet","description":"Microsoft Graph Client Library for .NET!","fork":false,"url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet","forks_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/forks","keys_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/teams","hooks_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/hooks","issue_events_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/events","assignees_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/tags","blobs_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/languages","stargazers_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/stargazers","contributors_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/contributors","subscribers_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/subscribers","subscription_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/subscription","commits_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/merges","archive_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/downloads","issues_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/deployments","created_at":"2016-03-03T06:39:37Z","updated_at":"2018-09-11T01:27:31Z","pushed_at":"2018-09-10T21:45:02Z","git_url":"git://github.com/microsoftgraph/msgraph-sdk-dotnet.git","ssh_url":"git@github.com:microsoftgraph/msgraph-sdk-dotnet.git","clone_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet.git","svn_url":"https://github.com/microsoftgraph/msgraph-sdk-dotnet","homepage":"https://graph.microsoft.io","size":5712,"stargazers_count":152,"watchers_count":152,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":72,"mirror_url":null,"archived":false,"open_issues_count":24,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":72,"open_issues":24,"watchers":152,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295"},"html":{"href":"https://github.com/microsoftgraph/msgraph-sdk-dotnet/pull/295"},"issue":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/295"},"comments":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/issues/295/comments"},"review_comments":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295/comments"},"review_comment":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/pulls/295/commits"},"statuses":{"href":"https://api.github.com/repos/microsoftgraph/msgraph-sdk-dotnet/statuses/7aa40f0ae7736c7b52a28d80a0a6d80c6848c8e8"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"MIchaelMainer"}}