{"action":"created","comment":{"url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/comments/48905765","id":48905765,"diff_hunk":"@@ -0,0 +1,497 @@\n+﻿/*\n+ * Markdown Scanner\n+ * Copyright (c) Microsoft Corporation\n+ * All rights reserved. \n+ * \n+ * MIT License\n+ * \n+ * Permission is hereby granted, free of charge, to any person obtaining a copy of \n+ * this software and associated documentation files (the \"\"Software\"\"), to deal in \n+ * the Software without restriction, including without limitation the rights to use, \n+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\n+ * Software, and to permit persons to whom the Software is furnished to do so, \n+ * subject to the following conditions:\n+ * \n+ * The above copyright notice and this permission notice shall be included in all \n+ * copies or substantial portions of the Software.\n+ * \n+ * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, \n+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A \n+ * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT \n+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION \n+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE \n+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n+ */\n+\n+namespace ApiDocs.Publishing.CSDL\n+{\n+    using ApiDocs.Validation;\n+    using ApiDocs.Validation.Writers;\n+    using System;\n+    using System.Collections.Generic;\n+    using System.Linq;\n+    using System.Text;\n+    using System.Threading.Tasks;\n+    using ApiDocs.Validation.OData;\n+\n+    public class CsdlWriter : DocumentPublisher\n+    {\n+        private string[] validNamespaces;\n+\n+        public CsdlWriter(DocSet docs, string[] namespacesToExport)\n+            : base(docs)\n+        {\n+            validNamespaces = namespacesToExport;\n+        }\n+\n+        public override async Task PublishToFolderAsync(string outputFolder)\n+        {\n+            // Step 1: Generate an EntityFramework OM from the documentation\n+            EntityFramework framework = CreateEntityFrameworkFromDocs();\n+\n+            // Step 2: Generate XML representation of EDMX\n+            var xmlData = ODataParser.GenerateEdmx(framework);\n+\n+            // Step 3: Write the XML to disk\n+            var outputDir = new System.IO.DirectoryInfo(outputFolder);\n+            outputDir.Create();\n+\n+            var outputFilename = System.IO.Path.Combine(outputFolder, \"metadata.edmx\");\n+            using (var writer = System.IO.File.CreateText(outputFilename))\n+            {\n+                await writer.WriteAsync(xmlData);\n+                await writer.FlushAsync();\n+                writer.Close();\n+            }\n+        }\n+\n+        private EntityFramework CreateEntityFrameworkFromDocs()\n+        {\n+            var edmx = new EntityFramework();\n+            \n+            // Add resources\n+            foreach (var resource in Documents.Resources)\n+            {\n+                var targetSchema = FindOrCreateSchemaForNamespace(resource.Name.NamespaceOnly(), edmx);\n+                if (targetSchema != null)\n+                {\n+                    AddResourceToSchema(targetSchema, resource, edmx);\n+                }\n+            }\n+\n+            // Figure out the EntityCollection\n+            BuildEntityCollection(edmx);\n+\n+            // Add actions to the collection\n+            this.ProcessRestRequestPaths(edmx);\n+\n+            return edmx;\n+        }\n+\n+        /// <summary>\n+        /// Scan the MethodDefintions in the documentation and create actions and functions in the \n+        /// EntityFramework for matching call patterns.\n+        /// </summary>\n+        /// <param name=\"edmx\"></param>\n+        private void ProcessRestRequestPaths(EntityFramework edmx)\n+        {\n+            Dictionary<string, MethodCollection> uniqueRequestPaths = GetUniqueRequestPaths();\n+\n+            foreach (var path in uniqueRequestPaths.Keys)\n+            {\n+                var methodCollection = uniqueRequestPaths[path];\n+\n+                ODataTargetInfo requestTarget = null;\n+                try\n+                {\n+                    requestTarget = ParseRequestTargetType(path, methodCollection, edmx);\n+                    if (requestTarget.Classification == ODataTargetClassification.Unknown &&\n+                        !string.IsNullOrEmpty(requestTarget.Name) &&\n+                        requestTarget.QualifiedType != null)\n+                    {\n+                        CreateNewActionOrFunction(edmx, methodCollection, requestTarget);\n+                    }\n+                    else if (requestTarget.Classification == ODataTargetClassification.EntityType)\n+                    {\n+                        // We've learned more about this entity type, let's add that information to the state\n+                        AppendToEntityType(edmx, requestTarget, methodCollection);\n+                    }\n+                    else if (requestTarget.Classification == ODataTargetClassification.NavigationProperty)\n+                    {\n+                        // TODO: Record somewhere the operations that are available on this NavigationProperty\n+                        AppendToNavigationProperty(edmx, requestTarget, methodCollection);\n+                    }\n+                    else\n+                    {\n+                        // TODO: Are there interesting things to learn here?\n+                        Console.WriteLine(\"Found type {0}: {1}\", requestTarget.Classification, path);\n+                    }\n+                }\n+                catch (Exception ex)\n+                {\n+                    // TODO: Log this out better than this.\n+                    Console.WriteLine(\"Couldn't serialize request for path {0} into EDMX: {1}\", path, ex.Message);\n+                    continue;\n+                }\n+            }\n+        }\n+\n+        private void AppendToNavigationProperty(EntityFramework edmx, ODataTargetInfo navigationProperty, MethodCollection methods)\n+        {\n+            EntityType parentType = edmx.ResourceWithIdentifier<EntityType>(navigationProperty.QualifiedType);\n+\n+            NavigationProperty matchingProperty =\n+                (from np in parentType.NavigationProperties where np.Name == navigationProperty.Name select np)\n+                    .FirstOrDefault();\n+            if (null != matchingProperty)\n+            {\n+                // TODO: Append information from methods into this navigation property\n+                StringBuilder sb = new StringBuilder();\n+                const string seperator = \", \";\n+                sb.AppendWithCondition(methods.GetAllowed, \"GET\", seperator);\n+                sb.AppendWithCondition(methods.PostAllowed, \"POST\", seperator);\n+                sb.AppendWithCondition(methods.PutAllowed, \"PUT\", seperator);\n+                sb.AppendWithCondition(methods.DeleteAllowed, \"DELETE\", seperator);\n+\n+                Console.WriteLine(\"Collection '{0}' supports: ({1})\", navigationProperty.QualifiedType + \"/\" + navigationProperty.Name, sb.ToString());\n+            }\n+            else\n+            {\n+                Console.WriteLine(\n+                    \"EntityType '{0}' doesn't have a matching navigationProperty '{1}' but a request exists for this. Sounds like a documentation error.\",\n+                    navigationProperty.QualifiedType,\n+                    navigationProperty.Name);\n+            }\n+        }\n+\n+        /// <summary>\n+        /// Use the properties of methodCollection to augment what we know about this entity type\n+        /// </summary>\n+        /// <param name=\"requestTarget\"></param>\n+        /// <param name=\"methodCollection\"></param>\n+        private void AppendToEntityType(EntityFramework edmx, ODataTargetInfo requestTarget, MethodCollection methodCollection)","path":"ApiDocs.Publishing/CSDL/CsdlWriter.cs","position":172,"original_position":172,"commit_id":"f3a79f1060196c944756e93457aed7fab8752855","original_commit_id":"f3a79f1060196c944756e93457aed7fab8752855","user":{"login":"peternied","id":2754967,"avatar_url":"https://avatars.githubusercontent.com/u/2754967?v=3","gravatar_id":"","url":"https://api.github.com/users/peternied","html_url":"https://github.com/peternied","followers_url":"https://api.github.com/users/peternied/followers","following_url":"https://api.github.com/users/peternied/following{/other_user}","gists_url":"https://api.github.com/users/peternied/gists{/gist_id}","starred_url":"https://api.github.com/users/peternied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peternied/subscriptions","organizations_url":"https://api.github.com/users/peternied/orgs","repos_url":"https://api.github.com/users/peternied/repos","events_url":"https://api.github.com/users/peternied/events{/privacy}","received_events_url":"https://api.github.com/users/peternied/received_events","type":"User","site_admin":false},"body":"edmx is not used","created_at":"2016-01-05T22:31:55Z","updated_at":"2016-01-05T22:31:55Z","html_url":"https://github.com/OneDrive/markdown-scanner/pull/70#discussion_r48905765","pull_request_url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70","_links":{"self":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/comments/48905765"},"html":{"href":"https://github.com/OneDrive/markdown-scanner/pull/70#discussion_r48905765"},"pull_request":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70"}}},"pull_request":{"url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70","id":55028138,"html_url":"https://github.com/OneDrive/markdown-scanner/pull/70","diff_url":"https://github.com/OneDrive/markdown-scanner/pull/70.diff","patch_url":"https://github.com/OneDrive/markdown-scanner/pull/70.patch","issue_url":"https://api.github.com/repos/OneDrive/markdown-scanner/issues/70","number":70,"state":"open","locked":false,"title":"Add support for generating EDMX files from markdown source","user":{"login":"rgregg","id":1435771,"avatar_url":"https://avatars.githubusercontent.com/u/1435771?v=3","gravatar_id":"","url":"https://api.github.com/users/rgregg","html_url":"https://github.com/rgregg","followers_url":"https://api.github.com/users/rgregg/followers","following_url":"https://api.github.com/users/rgregg/following{/other_user}","gists_url":"https://api.github.com/users/rgregg/gists{/gist_id}","starred_url":"https://api.github.com/users/rgregg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgregg/subscriptions","organizations_url":"https://api.github.com/users/rgregg/orgs","repos_url":"https://api.github.com/users/rgregg/repos","events_url":"https://api.github.com/users/rgregg/events{/privacy}","received_events_url":"https://api.github.com/users/rgregg/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-01-04T22:02:07Z","updated_at":"2016-01-05T22:31:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f826ecfe93d46744faaa2f3c039474bc25b248d9","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70/commits","review_comments_url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70/comments","review_comment_url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OneDrive/markdown-scanner/issues/70/comments","statuses_url":"https://api.github.com/repos/OneDrive/markdown-scanner/statuses/f3a79f1060196c944756e93457aed7fab8752855","head":{"label":"rgregg:edmx-generator","ref":"edmx-generator","sha":"f3a79f1060196c944756e93457aed7fab8752855","user":{"login":"rgregg","id":1435771,"avatar_url":"https://avatars.githubusercontent.com/u/1435771?v=3","gravatar_id":"","url":"https://api.github.com/users/rgregg","html_url":"https://github.com/rgregg","followers_url":"https://api.github.com/users/rgregg/followers","following_url":"https://api.github.com/users/rgregg/following{/other_user}","gists_url":"https://api.github.com/users/rgregg/gists{/gist_id}","starred_url":"https://api.github.com/users/rgregg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgregg/subscriptions","organizations_url":"https://api.github.com/users/rgregg/orgs","repos_url":"https://api.github.com/users/rgregg/repos","events_url":"https://api.github.com/users/rgregg/events{/privacy}","received_events_url":"https://api.github.com/users/rgregg/received_events","type":"User","site_admin":false},"repo":{"id":42897220,"name":"markdown-scanner","full_name":"rgregg/markdown-scanner","owner":{"login":"rgregg","id":1435771,"avatar_url":"https://avatars.githubusercontent.com/u/1435771?v=3","gravatar_id":"","url":"https://api.github.com/users/rgregg","html_url":"https://github.com/rgregg","followers_url":"https://api.github.com/users/rgregg/followers","following_url":"https://api.github.com/users/rgregg/following{/other_user}","gists_url":"https://api.github.com/users/rgregg/gists{/gist_id}","starred_url":"https://api.github.com/users/rgregg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgregg/subscriptions","organizations_url":"https://api.github.com/users/rgregg/orgs","repos_url":"https://api.github.com/users/rgregg/repos","events_url":"https://api.github.com/users/rgregg/events{/privacy}","received_events_url":"https://api.github.com/users/rgregg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rgregg/markdown-scanner","description":"Application for scanning markdown documentation and generating test cases for APIs.","fork":true,"url":"https://api.github.com/repos/rgregg/markdown-scanner","forks_url":"https://api.github.com/repos/rgregg/markdown-scanner/forks","keys_url":"https://api.github.com/repos/rgregg/markdown-scanner/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rgregg/markdown-scanner/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rgregg/markdown-scanner/teams","hooks_url":"https://api.github.com/repos/rgregg/markdown-scanner/hooks","issue_events_url":"https://api.github.com/repos/rgregg/markdown-scanner/issues/events{/number}","events_url":"https://api.github.com/repos/rgregg/markdown-scanner/events","assignees_url":"https://api.github.com/repos/rgregg/markdown-scanner/assignees{/user}","branches_url":"https://api.github.com/repos/rgregg/markdown-scanner/branches{/branch}","tags_url":"https://api.github.com/repos/rgregg/markdown-scanner/tags","blobs_url":"https://api.github.com/repos/rgregg/markdown-scanner/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rgregg/markdown-scanner/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rgregg/markdown-scanner/git/refs{/sha}","trees_url":"https://api.github.com/repos/rgregg/markdown-scanner/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rgregg/markdown-scanner/statuses/{sha}","languages_url":"https://api.github.com/repos/rgregg/markdown-scanner/languages","stargazers_url":"https://api.github.com/repos/rgregg/markdown-scanner/stargazers","contributors_url":"https://api.github.com/repos/rgregg/markdown-scanner/contributors","subscribers_url":"https://api.github.com/repos/rgregg/markdown-scanner/subscribers","subscription_url":"https://api.github.com/repos/rgregg/markdown-scanner/subscription","commits_url":"https://api.github.com/repos/rgregg/markdown-scanner/commits{/sha}","git_commits_url":"https://api.github.com/repos/rgregg/markdown-scanner/git/commits{/sha}","comments_url":"https://api.github.com/repos/rgregg/markdown-scanner/comments{/number}","issue_comment_url":"https://api.github.com/repos/rgregg/markdown-scanner/issues/comments{/number}","contents_url":"https://api.github.com/repos/rgregg/markdown-scanner/contents/{+path}","compare_url":"https://api.github.com/repos/rgregg/markdown-scanner/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rgregg/markdown-scanner/merges","archive_url":"https://api.github.com/repos/rgregg/markdown-scanner/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rgregg/markdown-scanner/downloads","issues_url":"https://api.github.com/repos/rgregg/markdown-scanner/issues{/number}","pulls_url":"https://api.github.com/repos/rgregg/markdown-scanner/pulls{/number}","milestones_url":"https://api.github.com/repos/rgregg/markdown-scanner/milestones{/number}","notifications_url":"https://api.github.com/repos/rgregg/markdown-scanner/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rgregg/markdown-scanner/labels{/name}","releases_url":"https://api.github.com/repos/rgregg/markdown-scanner/releases{/id}","created_at":"2015-09-21T22:28:10Z","updated_at":"2015-09-21T22:28:11Z","pushed_at":"2016-01-05T22:20:46Z","git_url":"git://github.com/rgregg/markdown-scanner.git","ssh_url":"git@github.com:rgregg/markdown-scanner.git","clone_url":"https://github.com/rgregg/markdown-scanner.git","svn_url":"https://github.com/rgregg/markdown-scanner","homepage":null,"size":1874,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"OneDrive:master","ref":"master","sha":"045e283c03840285b21e52ddbd7a56bd68f4229a","user":{"login":"OneDrive","id":7130569,"avatar_url":"https://avatars.githubusercontent.com/u/7130569?v=3","gravatar_id":"","url":"https://api.github.com/users/OneDrive","html_url":"https://github.com/OneDrive","followers_url":"https://api.github.com/users/OneDrive/followers","following_url":"https://api.github.com/users/OneDrive/following{/other_user}","gists_url":"https://api.github.com/users/OneDrive/gists{/gist_id}","starred_url":"https://api.github.com/users/OneDrive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OneDrive/subscriptions","organizations_url":"https://api.github.com/users/OneDrive/orgs","repos_url":"https://api.github.com/users/OneDrive/repos","events_url":"https://api.github.com/users/OneDrive/events{/privacy}","received_events_url":"https://api.github.com/users/OneDrive/received_events","type":"Organization","site_admin":false},"repo":{"id":28245623,"name":"markdown-scanner","full_name":"OneDrive/markdown-scanner","owner":{"login":"OneDrive","id":7130569,"avatar_url":"https://avatars.githubusercontent.com/u/7130569?v=3","gravatar_id":"","url":"https://api.github.com/users/OneDrive","html_url":"https://github.com/OneDrive","followers_url":"https://api.github.com/users/OneDrive/followers","following_url":"https://api.github.com/users/OneDrive/following{/other_user}","gists_url":"https://api.github.com/users/OneDrive/gists{/gist_id}","starred_url":"https://api.github.com/users/OneDrive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OneDrive/subscriptions","organizations_url":"https://api.github.com/users/OneDrive/orgs","repos_url":"https://api.github.com/users/OneDrive/repos","events_url":"https://api.github.com/users/OneDrive/events{/privacy}","received_events_url":"https://api.github.com/users/OneDrive/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OneDrive/markdown-scanner","description":"Application for scanning markdown documentation and generating test cases for APIs.","fork":false,"url":"https://api.github.com/repos/OneDrive/markdown-scanner","forks_url":"https://api.github.com/repos/OneDrive/markdown-scanner/forks","keys_url":"https://api.github.com/repos/OneDrive/markdown-scanner/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OneDrive/markdown-scanner/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OneDrive/markdown-scanner/teams","hooks_url":"https://api.github.com/repos/OneDrive/markdown-scanner/hooks","issue_events_url":"https://api.github.com/repos/OneDrive/markdown-scanner/issues/events{/number}","events_url":"https://api.github.com/repos/OneDrive/markdown-scanner/events","assignees_url":"https://api.github.com/repos/OneDrive/markdown-scanner/assignees{/user}","branches_url":"https://api.github.com/repos/OneDrive/markdown-scanner/branches{/branch}","tags_url":"https://api.github.com/repos/OneDrive/markdown-scanner/tags","blobs_url":"https://api.github.com/repos/OneDrive/markdown-scanner/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OneDrive/markdown-scanner/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OneDrive/markdown-scanner/git/refs{/sha}","trees_url":"https://api.github.com/repos/OneDrive/markdown-scanner/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OneDrive/markdown-scanner/statuses/{sha}","languages_url":"https://api.github.com/repos/OneDrive/markdown-scanner/languages","stargazers_url":"https://api.github.com/repos/OneDrive/markdown-scanner/stargazers","contributors_url":"https://api.github.com/repos/OneDrive/markdown-scanner/contributors","subscribers_url":"https://api.github.com/repos/OneDrive/markdown-scanner/subscribers","subscription_url":"https://api.github.com/repos/OneDrive/markdown-scanner/subscription","commits_url":"https://api.github.com/repos/OneDrive/markdown-scanner/commits{/sha}","git_commits_url":"https://api.github.com/repos/OneDrive/markdown-scanner/git/commits{/sha}","comments_url":"https://api.github.com/repos/OneDrive/markdown-scanner/comments{/number}","issue_comment_url":"https://api.github.com/repos/OneDrive/markdown-scanner/issues/comments{/number}","contents_url":"https://api.github.com/repos/OneDrive/markdown-scanner/contents/{+path}","compare_url":"https://api.github.com/repos/OneDrive/markdown-scanner/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OneDrive/markdown-scanner/merges","archive_url":"https://api.github.com/repos/OneDrive/markdown-scanner/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OneDrive/markdown-scanner/downloads","issues_url":"https://api.github.com/repos/OneDrive/markdown-scanner/issues{/number}","pulls_url":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls{/number}","milestones_url":"https://api.github.com/repos/OneDrive/markdown-scanner/milestones{/number}","notifications_url":"https://api.github.com/repos/OneDrive/markdown-scanner/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OneDrive/markdown-scanner/labels{/name}","releases_url":"https://api.github.com/repos/OneDrive/markdown-scanner/releases{/id}","created_at":"2014-12-19T20:43:22Z","updated_at":"2016-01-05T10:01:31Z","pushed_at":"2016-01-05T22:20:46Z","git_url":"git://github.com/OneDrive/markdown-scanner.git","ssh_url":"git@github.com:OneDrive/markdown-scanner.git","clone_url":"https://github.com/OneDrive/markdown-scanner.git","svn_url":"https://github.com/OneDrive/markdown-scanner","homepage":null,"size":1882,"stargazers_count":2,"watchers_count":2,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":15,"forks":3,"open_issues":15,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70"},"html":{"href":"https://github.com/OneDrive/markdown-scanner/pull/70"},"issue":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/issues/70"},"comments":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/issues/70/comments"},"review_comments":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70/comments"},"review_comment":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/pulls/70/commits"},"statuses":{"href":"https://api.github.com/repos/OneDrive/markdown-scanner/statuses/f3a79f1060196c944756e93457aed7fab8752855"}}}}