{"action":"created","comment":{"url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/comments/29060481","id":29060481,"diff_hunk":"@@ -0,0 +1,205 @@\n+# Authentication\n+\n+Typical web sites and web applications identify and authenticate users\n+by using email- or username-based logins with passwords, or they delegate\n+part of this responsibility to an OAUTH2 provider like Facebook Login\n+or Google+ Sign-In.\n+\n+While your cloud app is free to implement its own forms-based or OAUTH2\n+registration and login system, this doc will cover how to use the\n+Spiceworks SDK to authenticate users and altogether avoid login forms\n+and login buttons.\n+\n+By following the steps in this guide, you cloud app will be able to\n+authenticate a login session for the Spiceworks user accessing your app.\n+Further, if your cloud app costs money in the Spiceworks App Center,\n+following the steps of this guide will ensure the user accessing your\n+app is authorized to do so.\n+\n+### Prerequisite: Allow Spiceworks to embed your app\n+\n+Your cloud app built for Spiceworks is a web application that will be\n+embedded within the Spiceworks application within of an IFRAME.\n+From within this container, your Javascript can leverage the Spiceworks SDK\n+to obtain information from the hosting Spiceworks application.\n+Because Spiceworks applications can be installed behind firewalls inside\n+of any corporate domain, you must not set the `X-Frame-Options` HTTP header.\n+\n+### Step 1: Trust the Spiceworks application\n+\n+Not setting the `X-Frame-Options` header allows any Spiceworks application\n+to embed your cloud app in an IFRAME. This also means that any web site\n+anywhere can also embed your cloud app in an IFRAME. How can you distinguish\n+between valid Spiceworks applications and evil hacker empires? It starts with\n+your Javascript!\n+\n+The first step to authenticating access to your cloud app is to request\n+the application environment information using the Spiceworks SDK:\n+\n+```js\n+card.services('environment').request('environment').then(\n+  function(environment){\n+    /* success! */\n+  ),\n+  function(errors){\n+    /* danger! danger! */\n+  });\n+```\n+\n+The Spiceworks SDK will communicate between the IFRAME containing your\n+cloud app and the parent window of the Spiceworks application.\n+Using its own cryptographic verification, the SDK will authenticate\n+the hosting application. If all goes well, the Javascript promise is fulfilled\n+and your first function is called with the `environment` object. If not,\n+the promise is rejected and your second function is called with error\n+information.\n+\n+### Step 2: Obtain an OAUTH2 access token\n+\n+An OAUTH2 access token is like a temporary password granted to your cloud app\n+on behalf of the Spiceworks user without the Spiceworks user having to\n+give you his or her password directly.\n+\n+Lucky for you, requesting the environment information automatically\n+grants you an OAUTH2 access token via the `environment` object:\n+\n+```json\n+{\n+  \"app_host\":\n+    {\n+      \"auid\": \"92a450d9a3e596d7bef9ed9853b6a454\"\n+    },\n+  \"user\":\n+    {\n+      \"user_auid\": \"e34e59c92f43b49f9725a29f86632c12\",\n+      \"access_token\": \"814bd50cb926cfaebea353dd8b5f704def9e04b77372eed01f0d26f1d602e108\"\n+    }\n+}\n+```\n+\n+**_Note:_** *Additional details omitted from the JSON above.*\n+\n+#### Environment\n+\n+Using the `environment` object, you can now uniquely identify the hosting\n+application and Spiceworks user of your cloud app.\n+\n+Name|Type|Description\n+----|----|-----------\n+`environment.app_host.auid`|`string`|Uniquely identifies the Spiceworks app into which your cloud app is installed\n+`environment.user.user_auid`|`string`|Uniquely identifies the Spiceworks user accessing your cloud app\n+`environment.user.access_token`|`string`|OAUTH2 access token\n+\n+Both `auid` and `user_auid` are application-unique identifiers. This means they\n+are unique to your cloud app alone. If the same real-life user installs your\n+cloud app into a different installation of Spiceworks, you will see\n+a different `auid` but the same `user_auid`. Also, if you build more than one\n+cloud app, the same real-life user from the same install of Spiceworks will be\n+identified with a different pair of values to each of your two cloud apps.\n+\n+### Step 3: Use the OAUTH2 token to authenticate the user\n+\n+At this point, your Javascript is free to use the Spiceworks SDK to do\n+cool and amazing things inside the browser. However, at some point you're\n+going to want the user to access some protected area of your cloud app,\n+and that means leveraging the `environment` details to complete a login.\n+\n+#### Step 3a. Submit the login details to your server\n+\n+A typical form-based login passes a username and password securely\n+to the server where it is verified. In this case, the \"username\" is\n+the combination of `environment.app_host.auid` and\n+`environment.user.user_auid`, and the \"password\" is\n+`environment.user.access_token`.\n+\n+**Note:** OAUTH2 is 101% predicated on __always using HTTPS/SSL__ when transmitting access tokens. Never transmit an access token \"in the clear\".\n+\n+##### Using Javascript and jQuery\n+\n+```js\n+$.post('https://your-server/sign_in', {\n+    auid: environment.app_host.auid,\n+    user_auid: environment.user.user_auid,\n+    access_token: environment.user.access_token\n+  });\n+```\n+\n+##### Using Javascript and an HTML FORM\n+\n+```html\n+<form id=\"login-form\" action=\"https://your-server/sign_in\" method=\"post\">\n+  <input type=\"hidden\" id=\"login-auid\" name=\"auid\">\n+  <input type=\"hidden\" id=\"login-user_auid\" name=\"user_auid\">\n+  <input type=\"hidden\" id=\"login-access_token\" name=\"access_token\">\n+</form>\n+```\n+```js\n+document.getElementById('login-auid').value = environment.app_host.auid;\n+document.getElementById('login-user_auid').value = environment.user.user_auid;\n+document.getElementById('login-access_token').value = environment.user.access_token;\n+document.getElementById('login-form').submit();\n+```\n+\n+#### Step 3b. Verify the OAUTH2 token with Spiceworks\n+\n+Recall that an OAUTH2 access token is like a temporary password granted\n+to your cloud app. Even if it were the real user's password, you would\n+need to \"ask\" Spiceworks whether the password was right before trusting the\n+user. OAUTH2 is no different; your server needs to verify the authenticity\n+of the access token with Spiceworks.\n+\n+Once the credentials have been passed to your server, submit them to\n+Spiceworks for verification at\n+https://frontend.spiceworks.com/appcenter/api/app_user_authorization\n+by passing the following parameters:\n+\n+Key|Value\n+---|-----\n+`access_token`|The access token originally obtained from `environment.user.access_token`\n+`host_auid`|The host identifier originally obtained from `environment.app_host.auid`\n+`app_secret`|The OAUTH2 secret key generated for you when you first created your cloud app with Spiceworks\n+\n+**Note:** You are not sending the `user_auid`.\n+\n+In response, you will receive an `HTTP 200 OK` result with authorization information:\n+\n+```json\n+{\n+ \"authorization\":\n+   {\n+     \"namespace\": \"your-app-namespace\",\n+     \"host_auid\": \"92a450d9a3e596d7bef9ed9853b6a454\",\n+     \"user_auid\": \"e34e59c92f43b49f9725a29f86632c12\"","path":"source/documentation/cloud-apps/authentication.md","position":172,"original_position":172,"commit_id":"d3c79fa0472eabad3b4a8186a9df3bffe5197f9c","original_commit_id":"d3c79fa0472eabad3b4a8186a9df3bffe5197f9c","user":{"login":"msgerbush","id":405526,"avatar_url":"https://avatars.githubusercontent.com/u/405526?v=3","gravatar_id":"","url":"https://api.github.com/users/msgerbush","html_url":"https://github.com/msgerbush","followers_url":"https://api.github.com/users/msgerbush/followers","following_url":"https://api.github.com/users/msgerbush/following{/other_user}","gists_url":"https://api.github.com/users/msgerbush/gists{/gist_id}","starred_url":"https://api.github.com/users/msgerbush/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msgerbush/subscriptions","organizations_url":"https://api.github.com/users/msgerbush/orgs","repos_url":"https://api.github.com/users/msgerbush/repos","events_url":"https://api.github.com/users/msgerbush/events{/privacy}","received_events_url":"https://api.github.com/users/msgerbush/received_events","type":"User","site_admin":false},"body":"where does the purchased/license-level info get returned?  would that be here or is that also in the initial login information in the JS?","created_at":"2015-04-24T15:51:56Z","updated_at":"2015-04-24T15:51:56Z","html_url":"https://github.com/spiceworks/developers.spiceworks.com/pull/4#discussion_r29060481","pull_request_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/comments/29060481"},"html":{"href":"https://github.com/spiceworks/developers.spiceworks.com/pull/4#discussion_r29060481"},"pull_request":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4","id":34023567,"html_url":"https://github.com/spiceworks/developers.spiceworks.com/pull/4","diff_url":"https://github.com/spiceworks/developers.spiceworks.com/pull/4.diff","patch_url":"https://github.com/spiceworks/developers.spiceworks.com/pull/4.patch","issue_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/4","number":4,"state":"open","locked":false,"title":"first crack at documentation authentication from within spiceworks app","user":{"login":"babbtx","id":1487380,"avatar_url":"https://avatars.githubusercontent.com/u/1487380?v=3","gravatar_id":"","url":"https://api.github.com/users/babbtx","html_url":"https://github.com/babbtx","followers_url":"https://api.github.com/users/babbtx/followers","following_url":"https://api.github.com/users/babbtx/following{/other_user}","gists_url":"https://api.github.com/users/babbtx/gists{/gist_id}","starred_url":"https://api.github.com/users/babbtx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babbtx/subscriptions","organizations_url":"https://api.github.com/users/babbtx/orgs","repos_url":"https://api.github.com/users/babbtx/repos","events_url":"https://api.github.com/users/babbtx/events{/privacy}","received_events_url":"https://api.github.com/users/babbtx/received_events","type":"User","site_admin":false},"body":"Not done yet. Let's talk.","created_at":"2015-04-24T07:08:33Z","updated_at":"2015-04-24T15:51:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ba16e8108325f65cdf755eaf044e112fa4420ab7","assignee":{"login":"msgerbush","id":405526,"avatar_url":"https://avatars.githubusercontent.com/u/405526?v=3","gravatar_id":"","url":"https://api.github.com/users/msgerbush","html_url":"https://github.com/msgerbush","followers_url":"https://api.github.com/users/msgerbush/followers","following_url":"https://api.github.com/users/msgerbush/following{/other_user}","gists_url":"https://api.github.com/users/msgerbush/gists{/gist_id}","starred_url":"https://api.github.com/users/msgerbush/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msgerbush/subscriptions","organizations_url":"https://api.github.com/users/msgerbush/orgs","repos_url":"https://api.github.com/users/msgerbush/repos","events_url":"https://api.github.com/users/msgerbush/events{/privacy}","received_events_url":"https://api.github.com/users/msgerbush/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4/commits","review_comments_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4/comments","review_comment_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/4/comments","statuses_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/statuses/d3c79fa0472eabad3b4a8186a9df3bffe5197f9c","head":{"label":"spiceworks:authentication","ref":"authentication","sha":"d3c79fa0472eabad3b4a8186a9df3bffe5197f9c","user":{"login":"spiceworks","id":60843,"avatar_url":"https://avatars.githubusercontent.com/u/60843?v=3","gravatar_id":"","url":"https://api.github.com/users/spiceworks","html_url":"https://github.com/spiceworks","followers_url":"https://api.github.com/users/spiceworks/followers","following_url":"https://api.github.com/users/spiceworks/following{/other_user}","gists_url":"https://api.github.com/users/spiceworks/gists{/gist_id}","starred_url":"https://api.github.com/users/spiceworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spiceworks/subscriptions","organizations_url":"https://api.github.com/users/spiceworks/orgs","repos_url":"https://api.github.com/users/spiceworks/repos","events_url":"https://api.github.com/users/spiceworks/events{/privacy}","received_events_url":"https://api.github.com/users/spiceworks/received_events","type":"Organization","site_admin":false},"repo":{"id":33894996,"name":"developers.spiceworks.com","full_name":"spiceworks/developers.spiceworks.com","owner":{"login":"spiceworks","id":60843,"avatar_url":"https://avatars.githubusercontent.com/u/60843?v=3","gravatar_id":"","url":"https://api.github.com/users/spiceworks","html_url":"https://github.com/spiceworks","followers_url":"https://api.github.com/users/spiceworks/followers","following_url":"https://api.github.com/users/spiceworks/following{/other_user}","gists_url":"https://api.github.com/users/spiceworks/gists{/gist_id}","starred_url":"https://api.github.com/users/spiceworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spiceworks/subscriptions","organizations_url":"https://api.github.com/users/spiceworks/orgs","repos_url":"https://api.github.com/users/spiceworks/repos","events_url":"https://api.github.com/users/spiceworks/events{/privacy}","received_events_url":"https://api.github.com/users/spiceworks/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spiceworks/developers.spiceworks.com","description":"The source for developers.spiceworks.com","fork":false,"url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com","forks_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/forks","keys_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/teams","hooks_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/hooks","issue_events_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/events{/number}","events_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/events","assignees_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/assignees{/user}","branches_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/branches{/branch}","tags_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/tags","blobs_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/statuses/{sha}","languages_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/languages","stargazers_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/stargazers","contributors_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/contributors","subscribers_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/subscribers","subscription_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/subscription","commits_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/contents/{+path}","compare_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/merges","archive_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/downloads","issues_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues{/number}","pulls_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls{/number}","milestones_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/milestones{/number}","notifications_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/labels{/name}","releases_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/releases{/id}","created_at":"2015-04-13T21:26:45Z","updated_at":"2015-04-23T22:51:15Z","pushed_at":"2015-04-24T07:08:34Z","git_url":"git://github.com/spiceworks/developers.spiceworks.com.git","ssh_url":"git@github.com:spiceworks/developers.spiceworks.com.git","clone_url":"https://github.com/spiceworks/developers.spiceworks.com.git","svn_url":"https://github.com/spiceworks/developers.spiceworks.com","homepage":null,"size":2014,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2,"mirror_url":null,"open_issues_count":2,"forks":2,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"spiceworks:master","ref":"master","sha":"c96c4ce3fedd4d04241c8e2670c57ab1fd38a4c9","user":{"login":"spiceworks","id":60843,"avatar_url":"https://avatars.githubusercontent.com/u/60843?v=3","gravatar_id":"","url":"https://api.github.com/users/spiceworks","html_url":"https://github.com/spiceworks","followers_url":"https://api.github.com/users/spiceworks/followers","following_url":"https://api.github.com/users/spiceworks/following{/other_user}","gists_url":"https://api.github.com/users/spiceworks/gists{/gist_id}","starred_url":"https://api.github.com/users/spiceworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spiceworks/subscriptions","organizations_url":"https://api.github.com/users/spiceworks/orgs","repos_url":"https://api.github.com/users/spiceworks/repos","events_url":"https://api.github.com/users/spiceworks/events{/privacy}","received_events_url":"https://api.github.com/users/spiceworks/received_events","type":"Organization","site_admin":false},"repo":{"id":33894996,"name":"developers.spiceworks.com","full_name":"spiceworks/developers.spiceworks.com","owner":{"login":"spiceworks","id":60843,"avatar_url":"https://avatars.githubusercontent.com/u/60843?v=3","gravatar_id":"","url":"https://api.github.com/users/spiceworks","html_url":"https://github.com/spiceworks","followers_url":"https://api.github.com/users/spiceworks/followers","following_url":"https://api.github.com/users/spiceworks/following{/other_user}","gists_url":"https://api.github.com/users/spiceworks/gists{/gist_id}","starred_url":"https://api.github.com/users/spiceworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spiceworks/subscriptions","organizations_url":"https://api.github.com/users/spiceworks/orgs","repos_url":"https://api.github.com/users/spiceworks/repos","events_url":"https://api.github.com/users/spiceworks/events{/privacy}","received_events_url":"https://api.github.com/users/spiceworks/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spiceworks/developers.spiceworks.com","description":"The source for developers.spiceworks.com","fork":false,"url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com","forks_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/forks","keys_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/teams","hooks_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/hooks","issue_events_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/events{/number}","events_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/events","assignees_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/assignees{/user}","branches_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/branches{/branch}","tags_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/tags","blobs_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/statuses/{sha}","languages_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/languages","stargazers_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/stargazers","contributors_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/contributors","subscribers_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/subscribers","subscription_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/subscription","commits_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/contents/{+path}","compare_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/merges","archive_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/downloads","issues_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues{/number}","pulls_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls{/number}","milestones_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/milestones{/number}","notifications_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/labels{/name}","releases_url":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/releases{/id}","created_at":"2015-04-13T21:26:45Z","updated_at":"2015-04-23T22:51:15Z","pushed_at":"2015-04-24T07:08:34Z","git_url":"git://github.com/spiceworks/developers.spiceworks.com.git","ssh_url":"git@github.com:spiceworks/developers.spiceworks.com.git","clone_url":"https://github.com/spiceworks/developers.spiceworks.com.git","svn_url":"https://github.com/spiceworks/developers.spiceworks.com","homepage":null,"size":2014,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2,"mirror_url":null,"open_issues_count":2,"forks":2,"open_issues":2,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4"},"html":{"href":"https://github.com/spiceworks/developers.spiceworks.com/pull/4"},"issue":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/4"},"comments":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/spiceworks/developers.spiceworks.com/statuses/d3c79fa0472eabad3b4a8186a9df3bffe5197f9c"}}}}