{"action":"created","comment":{"url":"https://api.github.com/repos/conan-io/docs/pulls/comments/220149952","pull_request_review_id":158485312,"id":220149952,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMDE0OTk1Mg==","diff_hunk":"@@ -0,0 +1,134 @@\n+.. _plugins:\n+\n+Plugins [EXPERIMENTAL]\n+======================\n+\n+The Conan plugins is a feature intended to extend the Conan functionalities and let users customize the client behavior at determined\n+points.\n+\n+Plugin structure\n+----------------\n+\n+Plugins are Python files containing **pre** and **post** functions that will be executed prior and after a determined task performed by the\n+Conan client. Those tasks could be Conan commands, recipe interactions such as exporting or packaging or interactions with the remotes.\n+\n+Here you can see an example of a simple plugin:\n+\n+.. code-block:: python\n+   :caption: *example_plugin.py*\n+\n+    from conans import tools\n+\n+\n+    def pre_export(output, conanfile, conanfile_path, reference, **kwargs):\n+        conanfile_content = tools.load(conanfile_path)\n+        test = \"[RECIPE METADATA]\"\n+        metadata_error = False\n+        for field in [\"url\", \"license\", \"description\"]:\n+            field_value = getattr(conanfile, field, None)\n+            if not field_value:\n+                metadata_error = True\n+                output.error(\"%s Conanfile doesn't have '%s'. It is recommended to add it as attribute\"\n+                            % (test, field))\n+\n+    def pre_source(output, conanfile, conanfile_path, **kwargs):\n+        conanfile_content = tools.load(conanfile_path)\n+        if \"def source(self):\" in conanfile_content:\n+            test = \"[IMMUTABLE SOURCES]\"\n+            valid_content = [\".zip\", \".tar\", \".tgz\", \".tbz2\", \".txz\"]\n+            invalid_content = [\"git checkout master\", \"git checkout devel\", \"git chekcout develop\"]\n+            if \"git clone\" in conanfile_content and \"git checkout\" in conanfile_content:\n+                fixed_sources = True\n+                for invalid in invalid_content:\n+                    if invalid in conanfile_content:\n+                        fixed_sources = False\n+            else:\n+                fixed_sources = False\n+                for valid in valid_content:\n+                    if valid in conanfile_content:\n+                        fixed_sources = True\n+\n+            if not fixed_sources:\n+                output.error(\"%s Source files does not come from and immutable place. Checkout to a \"\n+                            \"commit/tag or download a compressed source file\" % test)\n+\n+This plugin is only checking the recipe content prior to the recipe being exported and prior to downloading the sources. Basically the\n+``pre_export()`` function is checking the attributes of the ``conanfile`` object to see if there is an URL, a license and a description and\n+warning the user with a message through the ``output``. This is done **before** the recipe is exported to the local cache.\n+\n+The ``pre_source()`` function checks if the recipe contains a ``source()`` method (this time it is using the conanfile content instead of\n+the ``conanfile`` object) and in that case it checks if the download of the sources are likely coming from immutable places (a compressed\n+file or a determined :command:`git checkout`). This is done **before** the **source()** method of the recipe is called.\n+\n+Any kind of Python scripting can be executed. You can create global functions and called them from different plugin functions, import them\n+from a relative module and warn, error or even raise to block the Conan client execution.\n+\n+As you can see each function receives some parameters but not all of them are available for all functions as this may change depending on\n+the context of the commands being executed such as the recipe being in the local cache or not.\n+\n+.. important::\n+\n+    A detailed description of the functions allowed and its parameters as well as their execution can be found in it dedicated reference\n+    section: :ref:`plugins_reference`.\n+\n+Other useful task where a plugin may come handy are the upload and download actions. There are **pre** and **post** functions for every\n+download/upload as a whole and for fine download task such as recipe and package downloads/uploads.\n+\n+For example they can be used to sign the packages before being uploaded and checking that signature when they are downloaded.\n+\n+.. code-block:: python\n+   :caption: *signing_plugin.py*\n+\n+    import os\n+    from conans import tools\n+\n+\n+    def pre_upload_package(output, conanfile_path, reference, package_id, remote, **kwargs):\n+        package_path = os.path.abspath(os.path.join(os.path.dirname(conanfile_path), \"..\", \"package\", package_id, \"conan_package.tgz\"))\n+        my_signing_package_function(package_path)","path":"extending/plugins.rst","position":88,"original_position":88,"commit_id":"538e9d9543cb2472b8ca8971a28dbf21f91279da","original_commit_id":"538e9d9543cb2472b8ca8971a28dbf21f91279da","user":{"login":"jgsogo","id":1406456,"node_id":"MDQ6VXNlcjE0MDY0NTY=","avatar_url":"https://avatars2.githubusercontent.com/u/1406456?v=4","gravatar_id":"","url":"https://api.github.com/users/jgsogo","html_url":"https://github.com/jgsogo","followers_url":"https://api.github.com/users/jgsogo/followers","following_url":"https://api.github.com/users/jgsogo/following{/other_user}","gists_url":"https://api.github.com/users/jgsogo/gists{/gist_id}","starred_url":"https://api.github.com/users/jgsogo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgsogo/subscriptions","organizations_url":"https://api.github.com/users/jgsogo/orgs","repos_url":"https://api.github.com/users/jgsogo/repos","events_url":"https://api.github.com/users/jgsogo/events{/privacy}","received_events_url":"https://api.github.com/users/jgsogo/received_events","type":"User","site_admin":false},"body":"Maybe we can live just with the `post_download_package` example","created_at":"2018-09-25T11:12:10Z","updated_at":"2018-09-25T11:31:32Z","html_url":"https://github.com/conan-io/docs/pull/846#discussion_r220149952","pull_request_url":"https://api.github.com/repos/conan-io/docs/pulls/846","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/conan-io/docs/pulls/comments/220149952"},"html":{"href":"https://github.com/conan-io/docs/pull/846#discussion_r220149952"},"pull_request":{"href":"https://api.github.com/repos/conan-io/docs/pulls/846"}},"in_reply_to_id":220143462},"pull_request":{"url":"https://api.github.com/repos/conan-io/docs/pulls/846","id":217925610,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE3OTI1NjEw","html_url":"https://github.com/conan-io/docs/pull/846","diff_url":"https://github.com/conan-io/docs/pull/846.diff","patch_url":"https://github.com/conan-io/docs/pull/846.patch","issue_url":"https://api.github.com/repos/conan-io/docs/issues/846","number":846,"state":"open","locked":false,"title":"Plugins documentation","user":{"login":"danimtb","id":10808592,"node_id":"MDQ6VXNlcjEwODA4NTky","avatar_url":"https://avatars1.githubusercontent.com/u/10808592?v=4","gravatar_id":"","url":"https://api.github.com/users/danimtb","html_url":"https://github.com/danimtb","followers_url":"https://api.github.com/users/danimtb/followers","following_url":"https://api.github.com/users/danimtb/following{/other_user}","gists_url":"https://api.github.com/users/danimtb/gists{/gist_id}","starred_url":"https://api.github.com/users/danimtb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danimtb/subscriptions","organizations_url":"https://api.github.com/users/danimtb/orgs","repos_url":"https://api.github.com/users/danimtb/repos","events_url":"https://api.github.com/users/danimtb/events{/privacy}","received_events_url":"https://api.github.com/users/danimtb/received_events","type":"User","site_admin":false},"body":"- Created new \"extending\" section as suggested by @jgsogo \r\n- Moved python requires.\r\n- Created a plugin section in \"extending\" with examples and more user focused usage.\r\n- Created a plugin section in reference with plugin interface: functions and parameters.\r\n- Mention policy of *plugins* folder in a **conan config install**\r\n\r\nDocs for PR conan-io/conan#3555","created_at":"2018-09-25T10:14:05Z","updated_at":"2018-09-25T11:31:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"693814b3020170abc2d605afc714d95f18dae777","assignee":{"login":"jgsogo","id":1406456,"node_id":"MDQ6VXNlcjE0MDY0NTY=","avatar_url":"https://avatars2.githubusercontent.com/u/1406456?v=4","gravatar_id":"","url":"https://api.github.com/users/jgsogo","html_url":"https://github.com/jgsogo","followers_url":"https://api.github.com/users/jgsogo/followers","following_url":"https://api.github.com/users/jgsogo/following{/other_user}","gists_url":"https://api.github.com/users/jgsogo/gists{/gist_id}","starred_url":"https://api.github.com/users/jgsogo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgsogo/subscriptions","organizations_url":"https://api.github.com/users/jgsogo/orgs","repos_url":"https://api.github.com/users/jgsogo/repos","events_url":"https://api.github.com/users/jgsogo/events{/privacy}","received_events_url":"https://api.github.com/users/jgsogo/received_events","type":"User","site_admin":false},"assignees":[{"login":"jgsogo","id":1406456,"node_id":"MDQ6VXNlcjE0MDY0NTY=","avatar_url":"https://avatars2.githubusercontent.com/u/1406456?v=4","gravatar_id":"","url":"https://api.github.com/users/jgsogo","html_url":"https://github.com/jgsogo","followers_url":"https://api.github.com/users/jgsogo/followers","following_url":"https://api.github.com/users/jgsogo/following{/other_user}","gists_url":"https://api.github.com/users/jgsogo/gists{/gist_id}","starred_url":"https://api.github.com/users/jgsogo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgsogo/subscriptions","organizations_url":"https://api.github.com/users/jgsogo/orgs","repos_url":"https://api.github.com/users/jgsogo/repos","events_url":"https://api.github.com/users/jgsogo/events{/privacy}","received_events_url":"https://api.github.com/users/jgsogo/received_events","type":"User","site_admin":false},{"login":"danimtb","id":10808592,"node_id":"MDQ6VXNlcjEwODA4NTky","avatar_url":"https://avatars1.githubusercontent.com/u/10808592?v=4","gravatar_id":"","url":"https://api.github.com/users/danimtb","html_url":"https://github.com/danimtb","followers_url":"https://api.github.com/users/danimtb/followers","following_url":"https://api.github.com/users/danimtb/following{/other_user}","gists_url":"https://api.github.com/users/danimtb/gists{/gist_id}","starred_url":"https://api.github.com/users/danimtb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danimtb/subscriptions","organizations_url":"https://api.github.com/users/danimtb/orgs","repos_url":"https://api.github.com/users/danimtb/repos","events_url":"https://api.github.com/users/danimtb/events{/privacy}","received_events_url":"https://api.github.com/users/danimtb/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":822389020,"node_id":"MDU6TGFiZWw4MjIzODkwMjA=","url":"https://api.github.com/repos/conan-io/docs/labels/in%20review","name":"in review","color":"0052cc","default":false}],"milestone":{"url":"https://api.github.com/repos/conan-io/docs/milestones/16","html_url":"https://github.com/conan-io/docs/milestone/16","labels_url":"https://api.github.com/repos/conan-io/docs/milestones/16/labels","id":3617029,"node_id":"MDk6TWlsZXN0b25lMzYxNzAyOQ==","number":16,"title":"1.8","description":null,"creator":{"login":"lasote","id":3807515,"node_id":"MDQ6VXNlcjM4MDc1MTU=","avatar_url":"https://avatars1.githubusercontent.com/u/3807515?v=4","gravatar_id":"","url":"https://api.github.com/users/lasote","html_url":"https://github.com/lasote","followers_url":"https://api.github.com/users/lasote/followers","following_url":"https://api.github.com/users/lasote/following{/other_user}","gists_url":"https://api.github.com/users/lasote/gists{/gist_id}","starred_url":"https://api.github.com/users/lasote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lasote/subscriptions","organizations_url":"https://api.github.com/users/lasote/orgs","repos_url":"https://api.github.com/users/lasote/repos","events_url":"https://api.github.com/users/lasote/events{/privacy}","received_events_url":"https://api.github.com/users/lasote/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":5,"state":"open","created_at":"2018-09-03T07:30:29Z","updated_at":"2018-09-25T10:14:05Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/conan-io/docs/pulls/846/commits","review_comments_url":"https://api.github.com/repos/conan-io/docs/pulls/846/comments","review_comment_url":"https://api.github.com/repos/conan-io/docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/conan-io/docs/issues/846/comments","statuses_url":"https://api.github.com/repos/conan-io/docs/statuses/538e9d9543cb2472b8ca8971a28dbf21f91279da","head":{"label":"danimtb:feature/conan/plugins_linters","ref":"feature/conan/plugins_linters","sha":"538e9d9543cb2472b8ca8971a28dbf21f91279da","user":{"login":"danimtb","id":10808592,"node_id":"MDQ6VXNlcjEwODA4NTky","avatar_url":"https://avatars1.githubusercontent.com/u/10808592?v=4","gravatar_id":"","url":"https://api.github.com/users/danimtb","html_url":"https://github.com/danimtb","followers_url":"https://api.github.com/users/danimtb/followers","following_url":"https://api.github.com/users/danimtb/following{/other_user}","gists_url":"https://api.github.com/users/danimtb/gists{/gist_id}","starred_url":"https://api.github.com/users/danimtb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danimtb/subscriptions","organizations_url":"https://api.github.com/users/danimtb/orgs","repos_url":"https://api.github.com/users/danimtb/repos","events_url":"https://api.github.com/users/danimtb/events{/privacy}","received_events_url":"https://api.github.com/users/danimtb/received_events","type":"User","site_admin":false},"repo":{"id":112174921,"node_id":"MDEwOlJlcG9zaXRvcnkxMTIxNzQ5MjE=","name":"docs-1","full_name":"danimtb/docs-1","private":false,"owner":{"login":"danimtb","id":10808592,"node_id":"MDQ6VXNlcjEwODA4NTky","avatar_url":"https://avatars1.githubusercontent.com/u/10808592?v=4","gravatar_id":"","url":"https://api.github.com/users/danimtb","html_url":"https://github.com/danimtb","followers_url":"https://api.github.com/users/danimtb/followers","following_url":"https://api.github.com/users/danimtb/following{/other_user}","gists_url":"https://api.github.com/users/danimtb/gists{/gist_id}","starred_url":"https://api.github.com/users/danimtb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danimtb/subscriptions","organizations_url":"https://api.github.com/users/danimtb/orgs","repos_url":"https://api.github.com/users/danimtb/repos","events_url":"https://api.github.com/users/danimtb/events{/privacy}","received_events_url":"https://api.github.com/users/danimtb/received_events","type":"User","site_admin":false},"html_url":"https://github.com/danimtb/docs-1","description":"Conan.io documentation at Read the Docs","fork":true,"url":"https://api.github.com/repos/danimtb/docs-1","forks_url":"https://api.github.com/repos/danimtb/docs-1/forks","keys_url":"https://api.github.com/repos/danimtb/docs-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/danimtb/docs-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/danimtb/docs-1/teams","hooks_url":"https://api.github.com/repos/danimtb/docs-1/hooks","issue_events_url":"https://api.github.com/repos/danimtb/docs-1/issues/events{/number}","events_url":"https://api.github.com/repos/danimtb/docs-1/events","assignees_url":"https://api.github.com/repos/danimtb/docs-1/assignees{/user}","branches_url":"https://api.github.com/repos/danimtb/docs-1/branches{/branch}","tags_url":"https://api.github.com/repos/danimtb/docs-1/tags","blobs_url":"https://api.github.com/repos/danimtb/docs-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/danimtb/docs-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/danimtb/docs-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/danimtb/docs-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/danimtb/docs-1/statuses/{sha}","languages_url":"https://api.github.com/repos/danimtb/docs-1/languages","stargazers_url":"https://api.github.com/repos/danimtb/docs-1/stargazers","contributors_url":"https://api.github.com/repos/danimtb/docs-1/contributors","subscribers_url":"https://api.github.com/repos/danimtb/docs-1/subscribers","subscription_url":"https://api.github.com/repos/danimtb/docs-1/subscription","commits_url":"https://api.github.com/repos/danimtb/docs-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/danimtb/docs-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/danimtb/docs-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/danimtb/docs-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/danimtb/docs-1/contents/{+path}","compare_url":"https://api.github.com/repos/danimtb/docs-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/danimtb/docs-1/merges","archive_url":"https://api.github.com/repos/danimtb/docs-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/danimtb/docs-1/downloads","issues_url":"https://api.github.com/repos/danimtb/docs-1/issues{/number}","pulls_url":"https://api.github.com/repos/danimtb/docs-1/pulls{/number}","milestones_url":"https://api.github.com/repos/danimtb/docs-1/milestones{/number}","notifications_url":"https://api.github.com/repos/danimtb/docs-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/danimtb/docs-1/labels{/name}","releases_url":"https://api.github.com/repos/danimtb/docs-1/releases{/id}","deployments_url":"https://api.github.com/repos/danimtb/docs-1/deployments","created_at":"2017-11-27T09:23:19Z","updated_at":"2018-09-24T09:12:29Z","pushed_at":"2018-09-25T10:16:52Z","git_url":"git://github.com/danimtb/docs-1.git","ssh_url":"git@github.com:danimtb/docs-1.git","clone_url":"https://github.com/danimtb/docs-1.git","svn_url":"https://github.com/danimtb/docs-1","homepage":"http://docs.conan.io","size":7437,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"conan-io:develop","ref":"develop","sha":"cec6bc08586a811fe53167994bf1c6877f05d5ee","user":{"login":"conan-io","id":15212165,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MjEyMTY1","avatar_url":"https://avatars3.githubusercontent.com/u/15212165?v=4","gravatar_id":"","url":"https://api.github.com/users/conan-io","html_url":"https://github.com/conan-io","followers_url":"https://api.github.com/users/conan-io/followers","following_url":"https://api.github.com/users/conan-io/following{/other_user}","gists_url":"https://api.github.com/users/conan-io/gists{/gist_id}","starred_url":"https://api.github.com/users/conan-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/conan-io/subscriptions","organizations_url":"https://api.github.com/users/conan-io/orgs","repos_url":"https://api.github.com/users/conan-io/repos","events_url":"https://api.github.com/users/conan-io/events{/privacy}","received_events_url":"https://api.github.com/users/conan-io/received_events","type":"Organization","site_admin":false},"repo":{"id":47185737,"node_id":"MDEwOlJlcG9zaXRvcnk0NzE4NTczNw==","name":"docs","full_name":"conan-io/docs","private":false,"owner":{"login":"conan-io","id":15212165,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MjEyMTY1","avatar_url":"https://avatars3.githubusercontent.com/u/15212165?v=4","gravatar_id":"","url":"https://api.github.com/users/conan-io","html_url":"https://github.com/conan-io","followers_url":"https://api.github.com/users/conan-io/followers","following_url":"https://api.github.com/users/conan-io/following{/other_user}","gists_url":"https://api.github.com/users/conan-io/gists{/gist_id}","starred_url":"https://api.github.com/users/conan-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/conan-io/subscriptions","organizations_url":"https://api.github.com/users/conan-io/orgs","repos_url":"https://api.github.com/users/conan-io/repos","events_url":"https://api.github.com/users/conan-io/events{/privacy}","received_events_url":"https://api.github.com/users/conan-io/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/conan-io/docs","description":"Conan.io reStructuredText documentation","fork":false,"url":"https://api.github.com/repos/conan-io/docs","forks_url":"https://api.github.com/repos/conan-io/docs/forks","keys_url":"https://api.github.com/repos/conan-io/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/conan-io/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/conan-io/docs/teams","hooks_url":"https://api.github.com/repos/conan-io/docs/hooks","issue_events_url":"https://api.github.com/repos/conan-io/docs/issues/events{/number}","events_url":"https://api.github.com/repos/conan-io/docs/events","assignees_url":"https://api.github.com/repos/conan-io/docs/assignees{/user}","branches_url":"https://api.github.com/repos/conan-io/docs/branches{/branch}","tags_url":"https://api.github.com/repos/conan-io/docs/tags","blobs_url":"https://api.github.com/repos/conan-io/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/conan-io/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/conan-io/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/conan-io/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/conan-io/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/conan-io/docs/languages","stargazers_url":"https://api.github.com/repos/conan-io/docs/stargazers","contributors_url":"https://api.github.com/repos/conan-io/docs/contributors","subscribers_url":"https://api.github.com/repos/conan-io/docs/subscribers","subscription_url":"https://api.github.com/repos/conan-io/docs/subscription","commits_url":"https://api.github.com/repos/conan-io/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/conan-io/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/conan-io/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/conan-io/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/conan-io/docs/contents/{+path}","compare_url":"https://api.github.com/repos/conan-io/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/conan-io/docs/merges","archive_url":"https://api.github.com/repos/conan-io/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/conan-io/docs/downloads","issues_url":"https://api.github.com/repos/conan-io/docs/issues{/number}","pulls_url":"https://api.github.com/repos/conan-io/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/conan-io/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/conan-io/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/conan-io/docs/labels{/name}","releases_url":"https://api.github.com/repos/conan-io/docs/releases{/id}","deployments_url":"https://api.github.com/repos/conan-io/docs/deployments","created_at":"2015-12-01T11:42:37Z","updated_at":"2018-09-25T11:14:01Z","pushed_at":"2018-09-25T11:13:57Z","git_url":"git://github.com/conan-io/docs.git","ssh_url":"git@github.com:conan-io/docs.git","clone_url":"https://github.com/conan-io/docs.git","svn_url":"https://github.com/conan-io/docs","homepage":"http://docs.conan.io","size":85259,"stargazers_count":26,"watchers_count":26,"language":"HTML","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":101,"mirror_url":null,"archived":false,"open_issues_count":58,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":101,"open_issues":58,"watchers":26,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/conan-io/docs/pulls/846"},"html":{"href":"https://github.com/conan-io/docs/pull/846"},"issue":{"href":"https://api.github.com/repos/conan-io/docs/issues/846"},"comments":{"href":"https://api.github.com/repos/conan-io/docs/issues/846/comments"},"review_comments":{"href":"https://api.github.com/repos/conan-io/docs/pulls/846/comments"},"review_comment":{"href":"https://api.github.com/repos/conan-io/docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/conan-io/docs/pulls/846/commits"},"statuses":{"href":"https://api.github.com/repos/conan-io/docs/statuses/538e9d9543cb2472b8ca8971a28dbf21f91279da"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jgsogo"}}