{"action":"created","comment":{"url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/comments/217483108","pull_request_review_id":155206504,"id":217483108,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNzQ4MzEwOA==","diff_hunk":"@@ -0,0 +1,151 @@\n+﻿// Copyright (c) Microsoft. All rights reserved.\n+\n+using System;\n+using System.Net;\n+using System.Net.Http;\n+using System.Threading.Tasks;\n+using Microsoft.Azure.IoTSolutions.DeviceSimulation.Services.Diagnostics;\n+using Microsoft.Azure.IoTSolutions.DeviceSimulation.Services.Exceptions;\n+using Microsoft.Azure.IoTSolutions.DeviceSimulation.Services.Http;\n+using Microsoft.Azure.IoTSolutions.DeviceSimulation.Services.Runtime;\n+using Newtonsoft.Json;\n+\n+namespace Microsoft.Azure.IoTSolutions.DeviceSimulation.Services.AzureManagementAdapter\n+{\n+    public interface IAzureManagementAdapterClient\n+    {\n+        Task<MetricsResponseModel> PostAsync(string token, MetricsRequestsModel requests);\n+    }\n+\n+    public class AzureManagementAdapterClient : IAzureManagementAdapterClient\n+    {\n+        private const string DATE_FORMAT = \"yyyy-MM-ddTHH:mm:ssZ\";\n+        private const string METRICS_API_VERSION = \"2016-06-01\";\n+        private const bool ALLOW_INSECURE_SSL_SERVER = true;\n+        private readonly IHttpClient httpClient;\n+        private readonly ILogger log;\n+        private readonly IServicesConfig config;\n+        private readonly IDeploymentConfig deploymentConfig;\n+        private readonly IDiagnosticsLogger diagnosticsLogger;\n+\n+        public AzureManagementAdapterClient(\n+            IHttpClient httpClient,\n+            IServicesConfig config,\n+            IDeploymentConfig deploymentConfig,\n+            ILogger logger,\n+            IDiagnosticsLogger diagnosticsLogger)\n+        {\n+            this.httpClient = httpClient;\n+            this.log = logger;\n+            this.config = config;\n+            this.deploymentConfig = deploymentConfig;\n+            this.diagnosticsLogger = diagnosticsLogger;\n+        }\n+\n+        public async Task<MetricsResponseModel> PostAsync(string token, MetricsRequestsModel requests)\n+        {\n+            if (requests == null)\n+            {\n+                requests = this.GetMetricsRequests();\n+            }\n+\n+            var request = this.PrepareRequest($\"batch?api-version={this.config.AzureManagementAdapterApiVersion}\", token, requests);\n+            var response = await this.httpClient.PostAsync(request);\n+\n+            this.log.Debug(\"Azure Management response\", () => new { response });\n+\n+            this.ThrowIfError(response);\n+\n+            return JsonConvert.DeserializeObject<MetricsResponseModel>(response.Content);\n+        }\n+\n+        private HttpRequest PrepareRequest(string path, string token, MetricsRequestsModel content = null)\n+        {\n+            var request = new HttpRequest();\n+            request.AddHeader(HttpRequestHeader.Accept.ToString(), \"application/json\");\n+            request.AddHeader(HttpRequestHeader.CacheControl.ToString(), \"no-cache\");\n+            request.AddHeader(HttpRequestHeader.Authorization.ToString(), token);\n+            request.SetUriFromString($\"{this.config.AzureManagementAdapterApiUrl}/{path}\");\n+            request.Options.EnsureSuccess = false;\n+            request.Options.Timeout = this.config.AzureManagementAdapterApiTimeout;\n+            if (this.config.AzureManagementAdapterApiUrl.ToLowerInvariant().StartsWith(\"https:\"))\n+            {\n+                request.Options.AllowInsecureSSLServer = ALLOW_INSECURE_SSL_SERVER;\n+            }\n+\n+            if (content != null)\n+            {\n+                request.SetContent(content);\n+            }\n+\n+            this.log.Debug(\"Azure Management request\", () => new { request });\n+\n+            return request;\n+        }\n+\n+        private void ThrowIfError(IHttpResponse response)\n+        {\n+            if (response.IsError)\n+            {\n+                this.diagnosticsLogger.LogServiceErrorAsync(\"Metrics request error\", new { response.Content });\n+                throw new ExternalDependencyException(\n+                    new HttpRequestException($\"Metrics request error: status code {response.StatusCode}\"));\n+            }\n+        }\n+\n+        private string GetIoTHubMetricsUrl()\n+        {\n+            return $\"/subscriptions/{this.deploymentConfig.AzureSubscriptionId}\" +\n+                   $\"/resourceGroups/{this.deploymentConfig.AzureResourceGroup}\" +\n+                   $\"/providers/Microsoft.Devices/IotHubs/{this.deploymentConfig.AzureIothubName}\" +\n+                   $\"/providers/Microsoft.Insights/metrics?api-version={METRICS_API_VERSION}&\" +\n+                   $\"$filter={this.GetMetricsQuery()}\";\n+        }\n+\n+        private string GetMetricsQuery()\n+        {\n+            // TODO: consider using query params from controller\n+            var now = DateTimeOffset.UtcNow;\n+            var startTime = now.AddHours(-1).ToString(DATE_FORMAT);\n+            var endTime = now.ToString(DATE_FORMAT);\n+\n+            string[] nameArray =\n+            {\n+                \"name.value eq 'devices.connectedDevices.allProtocol'\",\n+                \"name.value eq 'd2c.telemetry.ingress.success'\",\n+                \"name.value eq 'devices.totalDevices'\"\n+            };\n+\n+            string[] typeArray =\n+            {\n+                \"aggregationType eq 'Total'\",\n+                \"aggregationType eq 'Total'\",\n+                \"aggregationType eq 'Total'\"\n+            };\n+\n+            string[] filterArray = {\n+                $\"({string.Join(\" or \", nameArray)})\",\n+                $\"({string.Join(\" or \", typeArray)})\",\n+                $\"startTime eq {startTime}\",\n+                $\"endTime eq {endTime}\",\n+                \"timeGrain eq duration'PT1M'\"\n+            };\n+            \n+            return string.Join(\" and \", filterArray);\n+        }\n+\n+        private MetricsRequestsModel GetMetricsRequests()","path":"Services/AzureManagementAdapter/AzureManagementAdapter.cs","position":137,"original_position":137,"commit_id":"514a2bc9906a3b745a24c62a770996f7c4c2fc30","original_commit_id":"514a2bc9906a3b745a24c62a770996f7c4c2fc30","user":{"login":"maple10001","id":8744187,"node_id":"MDQ6VXNlcjg3NDQxODc=","avatar_url":"https://avatars0.githubusercontent.com/u/8744187?v=4","gravatar_id":"","url":"https://api.github.com/users/maple10001","html_url":"https://github.com/maple10001","followers_url":"https://api.github.com/users/maple10001/followers","following_url":"https://api.github.com/users/maple10001/following{/other_user}","gists_url":"https://api.github.com/users/maple10001/gists{/gist_id}","starred_url":"https://api.github.com/users/maple10001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maple10001/subscriptions","organizations_url":"https://api.github.com/users/maple10001/orgs","repos_url":"https://api.github.com/users/maple10001/repos","events_url":"https://api.github.com/users/maple10001/events{/privacy}","received_events_url":"https://api.github.com/users/maple10001/received_events","type":"User","site_admin":false},"body":"rename to default","created_at":"2018-09-13T18:10:56Z","updated_at":"2018-09-13T18:10:56Z","html_url":"https://github.com/Azure/device-simulation-dotnet/pull/250#discussion_r217483108","pull_request_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/comments/217483108"},"html":{"href":"https://github.com/Azure/device-simulation-dotnet/pull/250#discussion_r217483108"},"pull_request":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250"}}},"pull_request":{"url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250","id":214793605,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0NzkzNjA1","html_url":"https://github.com/Azure/device-simulation-dotnet/pull/250","diff_url":"https://github.com/Azure/device-simulation-dotnet/pull/250.diff","patch_url":"https://github.com/Azure/device-simulation-dotnet/pull/250.patch","issue_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/250","number":250,"state":"open","locked":false,"title":"Iothub metrics","user":{"login":"maple10001","id":8744187,"node_id":"MDQ6VXNlcjg3NDQxODc=","avatar_url":"https://avatars0.githubusercontent.com/u/8744187?v=4","gravatar_id":"","url":"https://api.github.com/users/maple10001","html_url":"https://github.com/maple10001","followers_url":"https://api.github.com/users/maple10001/followers","following_url":"https://api.github.com/users/maple10001/following{/other_user}","gists_url":"https://api.github.com/users/maple10001/gists{/gist_id}","starred_url":"https://api.github.com/users/maple10001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maple10001/subscriptions","organizations_url":"https://api.github.com/users/maple10001/orgs","repos_url":"https://api.github.com/users/maple10001/repos","events_url":"https://api.github.com/users/maple10001/events{/privacy}","received_events_url":"https://api.github.com/users/maple10001/received_events","type":"User","site_admin":false},"body":"# Description and Motivation <!-- Info & Context so we can review your pull request -->\r\nAllow user fetch iothub metrics from device simulation service.\r\n\r\n# Change type <!-- [x] in all the boxes that apply -->\r\n\r\n- [ ] Bug fix\r\n- [x] New feature\r\n- [ ] Enhancement\r\n- [ ] Breaking change (breaks backward compatibility)\r\n\r\n**Checklist:**\r\n\r\n- [x] All tests passed\r\n- [ ] The code follows the code style and conventions of this project\r\n- [ ] The change requires a change to the documentation\r\n- [ ] I have updated the documentation accordingly\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/azure/device-simulation-dotnet/250)\n<!-- Reviewable:end -->\n","created_at":"2018-09-11T23:18:22Z","updated_at":"2018-09-13T18:10:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"32ada38817b3f0bc97f082b08c6ad9d1c2cf5d39","assignee":null,"assignees":[],"requested_reviewers":[{"login":"dluc","id":371009,"node_id":"MDQ6VXNlcjM3MTAwOQ==","avatar_url":"https://avatars2.githubusercontent.com/u/371009?v=4","gravatar_id":"","url":"https://api.github.com/users/dluc","html_url":"https://github.com/dluc","followers_url":"https://api.github.com/users/dluc/followers","following_url":"https://api.github.com/users/dluc/following{/other_user}","gists_url":"https://api.github.com/users/dluc/gists{/gist_id}","starred_url":"https://api.github.com/users/dluc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dluc/subscriptions","organizations_url":"https://api.github.com/users/dluc/orgs","repos_url":"https://api.github.com/users/dluc/repos","events_url":"https://api.github.com/users/dluc/events{/privacy}","received_events_url":"https://api.github.com/users/dluc/received_events","type":"User","site_admin":false},{"login":"timlaverty","id":5084013,"node_id":"MDQ6VXNlcjUwODQwMTM=","avatar_url":"https://avatars2.githubusercontent.com/u/5084013?v=4","gravatar_id":"","url":"https://api.github.com/users/timlaverty","html_url":"https://github.com/timlaverty","followers_url":"https://api.github.com/users/timlaverty/followers","following_url":"https://api.github.com/users/timlaverty/following{/other_user}","gists_url":"https://api.github.com/users/timlaverty/gists{/gist_id}","starred_url":"https://api.github.com/users/timlaverty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timlaverty/subscriptions","organizations_url":"https://api.github.com/users/timlaverty/orgs","repos_url":"https://api.github.com/users/timlaverty/repos","events_url":"https://api.github.com/users/timlaverty/events{/privacy}","received_events_url":"https://api.github.com/users/timlaverty/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250/commits","review_comments_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250/comments","review_comment_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/250/comments","statuses_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/statuses/514a2bc9906a3b745a24c62a770996f7c4c2fc30","head":{"label":"Azure:hx/iothubMetrics","ref":"hx/iothubMetrics","sha":"514a2bc9906a3b745a24c62a770996f7c4c2fc30","user":{"login":"Azure","id":6844498,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4NDQ0OTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6844498?v=4","gravatar_id":"","url":"https://api.github.com/users/Azure","html_url":"https://github.com/Azure","followers_url":"https://api.github.com/users/Azure/followers","following_url":"https://api.github.com/users/Azure/following{/other_user}","gists_url":"https://api.github.com/users/Azure/gists{/gist_id}","starred_url":"https://api.github.com/users/Azure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Azure/subscriptions","organizations_url":"https://api.github.com/users/Azure/orgs","repos_url":"https://api.github.com/users/Azure/repos","events_url":"https://api.github.com/users/Azure/events{/privacy}","received_events_url":"https://api.github.com/users/Azure/received_events","type":"Organization","site_admin":false},"repo":{"id":89741887,"node_id":"MDEwOlJlcG9zaXRvcnk4OTc0MTg4Nw==","name":"device-simulation-dotnet","full_name":"Azure/device-simulation-dotnet","owner":{"login":"Azure","id":6844498,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4NDQ0OTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6844498?v=4","gravatar_id":"","url":"https://api.github.com/users/Azure","html_url":"https://github.com/Azure","followers_url":"https://api.github.com/users/Azure/followers","following_url":"https://api.github.com/users/Azure/following{/other_user}","gists_url":"https://api.github.com/users/Azure/gists{/gist_id}","starred_url":"https://api.github.com/users/Azure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Azure/subscriptions","organizations_url":"https://api.github.com/users/Azure/orgs","repos_url":"https://api.github.com/users/Azure/repos","events_url":"https://api.github.com/users/Azure/events{/privacy}","received_events_url":"https://api.github.com/users/Azure/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Azure/device-simulation-dotnet","description":"IoT Simulation service","fork":false,"url":"https://api.github.com/repos/Azure/device-simulation-dotnet","forks_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/forks","keys_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/teams","hooks_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/hooks","issue_events_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/events","assignees_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/tags","blobs_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/languages","stargazers_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/stargazers","contributors_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/contributors","subscribers_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/subscribers","subscription_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/subscription","commits_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/merges","archive_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/downloads","issues_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/deployments","created_at":"2017-04-28T20:20:08Z","updated_at":"2018-09-13T17:25:33Z","pushed_at":"2018-09-13T17:31:34Z","git_url":"git://github.com/Azure/device-simulation-dotnet.git","ssh_url":"git@github.com:Azure/device-simulation-dotnet.git","clone_url":"https://github.com/Azure/device-simulation-dotnet.git","svn_url":"https://github.com/Azure/device-simulation-dotnet","homepage":"","size":1722,"stargazers_count":28,"watchers_count":28,"language":"C#","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":33,"mirror_url":null,"archived":false,"open_issues_count":77,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":33,"open_issues":77,"watchers":28,"default_branch":"master"}},"base":{"label":"Azure:master","ref":"master","sha":"61c76dd188473e316ccc8486077e83bdeba91c5c","user":{"login":"Azure","id":6844498,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4NDQ0OTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6844498?v=4","gravatar_id":"","url":"https://api.github.com/users/Azure","html_url":"https://github.com/Azure","followers_url":"https://api.github.com/users/Azure/followers","following_url":"https://api.github.com/users/Azure/following{/other_user}","gists_url":"https://api.github.com/users/Azure/gists{/gist_id}","starred_url":"https://api.github.com/users/Azure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Azure/subscriptions","organizations_url":"https://api.github.com/users/Azure/orgs","repos_url":"https://api.github.com/users/Azure/repos","events_url":"https://api.github.com/users/Azure/events{/privacy}","received_events_url":"https://api.github.com/users/Azure/received_events","type":"Organization","site_admin":false},"repo":{"id":89741887,"node_id":"MDEwOlJlcG9zaXRvcnk4OTc0MTg4Nw==","name":"device-simulation-dotnet","full_name":"Azure/device-simulation-dotnet","owner":{"login":"Azure","id":6844498,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY4NDQ0OTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6844498?v=4","gravatar_id":"","url":"https://api.github.com/users/Azure","html_url":"https://github.com/Azure","followers_url":"https://api.github.com/users/Azure/followers","following_url":"https://api.github.com/users/Azure/following{/other_user}","gists_url":"https://api.github.com/users/Azure/gists{/gist_id}","starred_url":"https://api.github.com/users/Azure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Azure/subscriptions","organizations_url":"https://api.github.com/users/Azure/orgs","repos_url":"https://api.github.com/users/Azure/repos","events_url":"https://api.github.com/users/Azure/events{/privacy}","received_events_url":"https://api.github.com/users/Azure/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Azure/device-simulation-dotnet","description":"IoT Simulation service","fork":false,"url":"https://api.github.com/repos/Azure/device-simulation-dotnet","forks_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/forks","keys_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/teams","hooks_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/hooks","issue_events_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/events","assignees_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/tags","blobs_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/languages","stargazers_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/stargazers","contributors_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/contributors","subscribers_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/subscribers","subscription_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/subscription","commits_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/merges","archive_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/downloads","issues_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/Azure/device-simulation-dotnet/deployments","created_at":"2017-04-28T20:20:08Z","updated_at":"2018-09-13T17:25:33Z","pushed_at":"2018-09-13T17:31:34Z","git_url":"git://github.com/Azure/device-simulation-dotnet.git","ssh_url":"git@github.com:Azure/device-simulation-dotnet.git","clone_url":"https://github.com/Azure/device-simulation-dotnet.git","svn_url":"https://github.com/Azure/device-simulation-dotnet","homepage":"","size":1722,"stargazers_count":28,"watchers_count":28,"language":"C#","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":33,"mirror_url":null,"archived":false,"open_issues_count":77,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":33,"open_issues":77,"watchers":28,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250"},"html":{"href":"https://github.com/Azure/device-simulation-dotnet/pull/250"},"issue":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/250"},"comments":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/issues/250/comments"},"review_comments":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250/comments"},"review_comment":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/pulls/250/commits"},"statuses":{"href":"https://api.github.com/repos/Azure/device-simulation-dotnet/statuses/514a2bc9906a3b745a24c62a770996f7c4c2fc30"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"maple10001"}}