{"action":"created","comment":{"url":"https://api.github.com/repos/fandor/api/pulls/comments/53997654","id":53997654,"diff_hunk":"@@ -0,0 +1,332 @@\n+# Auth Service\n+The Auth Service handles both authentication and authorization for all of Fandor's services.\n+\n+## Creating A New Session\n+To request a new user session be created, send an HTTP POST request to the `/sessions` resource. An authorization header must be provided which includes the client api key.\n+\n+```http\n+POST /sessions HTTP/1.1\n+Accept: application/vnd.api+json\n+Authorization: FandorAPITrustedClient zuv89hj2983rhov7s9afd7vh872h458fgth\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"data\": {\n+    \"type\": \"Session\"\n+  }\n+}\n+```\n+\n+>The `api_key` will be provided to our partners on an individual basis. If you don't have one and think you need one, contact us. Each Fandor service will have its own `api_key`.\n+\n+### Success\n+If the `api_key` matches our records, a response in the following format will be returned:\n+\n+```http\n+HTTP/1.1 201 Created\n+Location: https://api.fandor.com/sessions/a68778b342e786f8f186381\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"data\": {\n+    \"type\": \"Session\",\n+    \"id\": \"a68778b342e786f8f186381\",\n+    \"links\": {\n+      \"self\": \"http://api.fandor.com/sessions/a68778b342e786f8f186381\"\n+    },\n+    \"relationships\": {\n+      \"privileges\": [\n+        {\n+          \"data\": { \"type\": \"Privilege\", \"id\": 1 }\n+        },\n+        {\n+          \"data\": { \"type\": \"Privilege\", \"id\": 2 }\n+        },\n+        {\n+          \"data\": { \"type\": \"Privilege\", \"id\": 3 }\n+        }\n+      ]\n+    }\n+  },\n+  \"included\": [\n+    {\n+      \"type\": \"Privilege\",\n+      \"id\": 1,\n+      \"attributes\": {\n+        \"resource\": \"film\",\n+        \"actions\": [\"read\"]\n+      }\n+    },\n+    {\n+      \"type\": \"Privilege\",\n+      \"id\": 2,\n+      \"attributes\": {\n+        \"resource\": \"article\",\n+        \"actions\": [\"read\"]\n+      }\n+    },\n+    {\n+      \"type\": \"Privilege\",\n+      \"id\": 3,\n+      \"attributes\": {\n+        \"resource\": \"comment\",\n+        \"actions\": [\"read\", \"create\"]\n+      }\n+    }\n+  ]\n+}\n+```\n+\n+The included privileges are the default privileges given to guest users.\n+\n+### Failure\n+If the `api_key` is missing or does not match any in our records, an Unauthorized response will be returned.\n+\n+```http\n+HTTP/1.1 401 Unauthorized\n+Content-Type: application/vnd.api+json\n+WWW-Authenticate: FandorAPITrustedClient\n+\n+{\n+  \"errors\": [\n+    {\n+      \"status\": \"401\",\n+      \"title\": \"Create Session Unauthorized\",\n+      \"detail\": \"The supplied `api_key` is missing or invalid.\"\n+    }\n+  ]\n+}\n+```\n+\n+## Authorization Header\n+Once a session is created, all requests should include the Fandor Authorization header and include the session id.\n+\n+```http\n+Authorization: FandorAPI a68778b342e786f8f186381\n+```\n+\n+## Authenticating Requests\n+Each request must be authenticated using the above mentioned Authorization header. Only Fandor services are allowed to perform this type of verification, and only by using their own API key in the request Authorization header. All origin members must be included in the query string.\n+\n+```http\n+HEAD /sessions/a68778b342e786f8f186381?origin_member1=foo&origin_member2=bar HTTP/1.1\n+Authorization: FandorAPITrustedClient 02n7hgt4hfhw97f977429iyuudyakaiqow\n+```\n+\n+### Success\n+If the session is found and the origin members all match the session, no content will be returned, indicating the session is valid.\n+\n+```http\n+HTTP/1.1 204 No Content\n+```\n+\n+### Failure\n+If the api key used to make the request is not valid, unauthorized will be returned.\n+\n+```http\n+HTTP/1.1 401 Unauthorized\n+WWW-Authenticate: FandorAPITrustedClient\n+```\n+\n+If the session is not found or the origin members don't match what's recorded on the session, not found will be returned.\n+\n+```http\n+HTTP/1.1 404 Not Found\n+```\n+\n+If authentication fails, the Fandor service should respond to the client with unauthorized.\n+\n+```http\n+HTTP/1.1 401 Unauthorized\n+Content-Type: application/vnd.api+json\n+WWW-Authenticate: FandorAPI\n+\n+{\n+  \"errors\": [\n+    {\n+      \"status\": \"401\",\n+      \"title\": \"Unauthorized\",\n+      \"detail\": \"You must supply an Authorization header with a valid Fandor session token.\"\n+    }\n+  ]\n+}\n+```\n+\n+>Origin is determined by examining a variety of request headers. For obscurity reasons, those details are omitted from this public document. If you believe you need to know the details of this implementation, please contact Fandor engineering directly.\n+\n+## Signing In\n+Signing in effectively links a session with a user account. To sign in, create an associate between the user and the session by providing the `username` and `password` of the user.\n+\n+```http\n+POST /sessions/a68778b342e786f8f186381/user HTTP/1.1\n+Accept: application/vnd.api+json\n+Authorization: FandorAPI a68778b342e786f8f186381\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"data\": {\n+    \"type\": \"SessionUser\",\n+    \"relationships\": {\n+      \"user\": {\n+        \"data\": {\n+          \"username\": \"bob@example.com\",\n+          \"password\": \"zjv97@ajp*17hluIv\"\n+        }\n+      }\n+    }\n+  }\n+}\n+```\n+\n+### Success\n+If the credentials provided match our records, a response in the following format will be returned:\n+\n+```http\n+HTTP/1.1 201 Created\n+Location: https://api.fandor.com/sessions/a68778b342e786f8f186381/user\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"data\": {\n+    \"type\": \"SessionUser\",\n+    \"id\": \"1\",\n+    \"links\": {\n+      \"self\": \"http://api.fandor.com/sessions/a68778b342e786f8f186381/user\",\n+      \"user\": \"http://api.fandor.com/users/6178\"\n+    },\n+    \"relationships\": {\n+      \"privileges\": [\n+        {\n+          \"data\": { \"type\": \"Privilege\", \"id\": 1 }\n+        },\n+        // ...\n+      ],\n+      \"user\": {\n+        \"data\": { \"type\": \"User\", \"id\": 6178 }\n+      }\n+    }\n+  },\n+  \"included\": [\n+    {\n+      \"type\": \"Privilege\",\n+      \"id\": 1,\n+      \"attributes\": {\n+        \"resource\": \"film\",\n+        \"actions\": [\"read\", \"play\", \"rate\"]\n+      }\n+    },\n+    // ...\n+    {\n+      \"type\": \"User\",\n+      \"id\": 6178,\n+      \"attributes\": {\n+        \"username\": \"bwilliams@example.com\",\n+        \"email\": \"bob@example.com\",\n+        \"first_name\": \"Bob\",\n+        \"last_name\": \"Williams\",\n+        \"subscribed\": true\n+      }\n+    }\n+  ]\n+}\n+```\n+\n+### Failure\n+If the `username` or `password` is missing or does not match any users in our system, an Unauthorized response will be returned.\n+\n+```http\n+HTTP/1.1 401 Unauthorized\n+Content-Type: application/vnd.api+json\n+WWW-Authenticate: FandorAPI\n+\n+{\n+  \"errors\": [\n+    {\n+      \"status\": \"401\",\n+      \"title\": \"Sign In Unauthorized\",\n+      \"detail\": \"The supplied `username` and `password` are missing or invalid.\"\n+    }\n+  ]\n+}\n+```\n+\n+## Signing Out\n+Signing out effectively invalidates an existing session and creates a new one. To sign out, set the sessions `inactive` attribute to `true`.\n+\n+```http\n+PUT /sessions/a68778b342e786f8f186381 HTTP/1.1\n+Accept: application/vnd.api+json\n+Authorization: FandorAPI a68778b342e786f8f186381\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"data\": {\n+    \"type\": \"Session\",\n+    \"id\": \"a68778b342e786f8f186381\",\n+    \"attributes\": {\n+      \"inactive\": true\n+    }\n+  }\n+}\n+```\n+\n+### Success\n+If the request is successful no content will be returned.\n+\n+```http\n+HTTP/1.1 204 No Content\n+```\n+\n+>Clients are responsible for requesting a new session if the user continues to use the system after signing out.\n+\n+### Failure\n+If the request path doesn't match the id provided, bad request will be returned.\n+\n+```http\n+HTTP/1.1 400 Bad Request\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"errors\": [\n+    {\n+      \"status\": \"400\",\n+      \"title\": \"Sign Out Failed\",\n+      \"detail\": \"The session ids do not match.\"\n+    }\n+  ]\n+}\n+```\n+\n+If the request isn't made from the same session, forbidden will be returned.\n+\n+```http\n+HTTP/1.1 403 Forbidden\n+Content-Type: application/vnd.api+json\n+\n+{\n+  \"errors\": [\n+    {\n+      \"status\": \"403\",\n+      \"title\": \"Sign Out Forbidden\",\n+      \"detail\": \"A session can only be signed out by itself.\"\n+    }\n+  ]\n+}\n+```","path":"authentication.md","position":315,"original_position":315,"commit_id":"bffd7a5e50efd6f3abac6958e1f04c66edbd466e","original_commit_id":"bffd7a5e50efd6f3abac6958e1f04c66edbd466e","user":{"login":"BitPuncher","id":4854957,"avatar_url":"https://avatars.githubusercontent.com/u/4854957?v=3","gravatar_id":"","url":"https://api.github.com/users/BitPuncher","html_url":"https://github.com/BitPuncher","followers_url":"https://api.github.com/users/BitPuncher/followers","following_url":"https://api.github.com/users/BitPuncher/following{/other_user}","gists_url":"https://api.github.com/users/BitPuncher/gists{/gist_id}","starred_url":"https://api.github.com/users/BitPuncher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BitPuncher/subscriptions","organizations_url":"https://api.github.com/users/BitPuncher/orgs","repos_url":"https://api.github.com/users/BitPuncher/repos","events_url":"https://api.github.com/users/BitPuncher/events{/privacy}","received_events_url":"https://api.github.com/users/BitPuncher/received_events","type":"User","site_admin":false},"body":"The above two situations seem like the same to me. The first is you passed a session id in the body that doesn't match the one in the url? And the second is.....you tried to logout a session from not itself? Which to me sounds like you attempted to pass a session id that didn't match the url. Or just reversed. Which is still just the case of \"they don't match.\" Maybe I'm missing/misunderstanding something.","created_at":"2016-02-24T20:00:15Z","updated_at":"2016-02-24T20:00:15Z","html_url":"https://github.com/fandor/api/pull/5#discussion_r53997654","pull_request_url":"https://api.github.com/repos/fandor/api/pulls/5","_links":{"self":{"href":"https://api.github.com/repos/fandor/api/pulls/comments/53997654"},"html":{"href":"https://github.com/fandor/api/pull/5#discussion_r53997654"},"pull_request":{"href":"https://api.github.com/repos/fandor/api/pulls/5"}}},"pull_request":{"url":"https://api.github.com/repos/fandor/api/pulls/5","id":60552333,"html_url":"https://github.com/fandor/api/pull/5","diff_url":"https://github.com/fandor/api/pull/5.diff","patch_url":"https://github.com/fandor/api/pull/5.patch","issue_url":"https://api.github.com/repos/fandor/api/issues/5","number":5,"state":"open","locked":false,"title":"Feature/authentication and authorization","user":{"login":"avilyn","id":6353325,"avatar_url":"https://avatars.githubusercontent.com/u/6353325?v=3","gravatar_id":"","url":"https://api.github.com/users/avilyn","html_url":"https://github.com/avilyn","followers_url":"https://api.github.com/users/avilyn/followers","following_url":"https://api.github.com/users/avilyn/following{/other_user}","gists_url":"https://api.github.com/users/avilyn/gists{/gist_id}","starred_url":"https://api.github.com/users/avilyn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avilyn/subscriptions","organizations_url":"https://api.github.com/users/avilyn/orgs","repos_url":"https://api.github.com/users/avilyn/repos","events_url":"https://api.github.com/users/avilyn/events{/privacy}","received_events_url":"https://api.github.com/users/avilyn/received_events","type":"User","site_admin":false},"body":"#### Purpose of Pull Request?\r\n\r\nOutline our auth service API. Also add a couple qualifications about authorization to our general API document.\r\n\r\n#### Provide link to Tracker Story:\r\n#### How should this code be validated?\r\n\r\nMake sure the documentation makes sense.\r\n\r\n#### Any background context you want to provide?\r\n#### Questions:","created_at":"2016-02-24T18:08:14Z","updated_at":"2016-02-24T20:00:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0f9e9f2e21c4c752a19054bd20b6832b6f8b66b2","assignee":{"login":"BitPuncher","id":4854957,"avatar_url":"https://avatars.githubusercontent.com/u/4854957?v=3","gravatar_id":"","url":"https://api.github.com/users/BitPuncher","html_url":"https://github.com/BitPuncher","followers_url":"https://api.github.com/users/BitPuncher/followers","following_url":"https://api.github.com/users/BitPuncher/following{/other_user}","gists_url":"https://api.github.com/users/BitPuncher/gists{/gist_id}","starred_url":"https://api.github.com/users/BitPuncher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BitPuncher/subscriptions","organizations_url":"https://api.github.com/users/BitPuncher/orgs","repos_url":"https://api.github.com/users/BitPuncher/repos","events_url":"https://api.github.com/users/BitPuncher/events{/privacy}","received_events_url":"https://api.github.com/users/BitPuncher/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/fandor/api/pulls/5/commits","review_comments_url":"https://api.github.com/repos/fandor/api/pulls/5/comments","review_comment_url":"https://api.github.com/repos/fandor/api/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fandor/api/issues/5/comments","statuses_url":"https://api.github.com/repos/fandor/api/statuses/bffd7a5e50efd6f3abac6958e1f04c66edbd466e","head":{"label":"fandor:feature/authentication_and_authorization","ref":"feature/authentication_and_authorization","sha":"bffd7a5e50efd6f3abac6958e1f04c66edbd466e","user":{"login":"fandor","id":1661184,"avatar_url":"https://avatars.githubusercontent.com/u/1661184?v=3","gravatar_id":"","url":"https://api.github.com/users/fandor","html_url":"https://github.com/fandor","followers_url":"https://api.github.com/users/fandor/followers","following_url":"https://api.github.com/users/fandor/following{/other_user}","gists_url":"https://api.github.com/users/fandor/gists{/gist_id}","starred_url":"https://api.github.com/users/fandor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fandor/subscriptions","organizations_url":"https://api.github.com/users/fandor/orgs","repos_url":"https://api.github.com/users/fandor/repos","events_url":"https://api.github.com/users/fandor/events{/privacy}","received_events_url":"https://api.github.com/users/fandor/received_events","type":"Organization","site_admin":false},"repo":{"id":52093870,"name":"api","full_name":"fandor/api","owner":{"login":"fandor","id":1661184,"avatar_url":"https://avatars.githubusercontent.com/u/1661184?v=3","gravatar_id":"","url":"https://api.github.com/users/fandor","html_url":"https://github.com/fandor","followers_url":"https://api.github.com/users/fandor/followers","following_url":"https://api.github.com/users/fandor/following{/other_user}","gists_url":"https://api.github.com/users/fandor/gists{/gist_id}","starred_url":"https://api.github.com/users/fandor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fandor/subscriptions","organizations_url":"https://api.github.com/users/fandor/orgs","repos_url":"https://api.github.com/users/fandor/repos","events_url":"https://api.github.com/users/fandor/events{/privacy}","received_events_url":"https://api.github.com/users/fandor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fandor/api","description":"Houses Fandor's API documentation.","fork":false,"url":"https://api.github.com/repos/fandor/api","forks_url":"https://api.github.com/repos/fandor/api/forks","keys_url":"https://api.github.com/repos/fandor/api/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fandor/api/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fandor/api/teams","hooks_url":"https://api.github.com/repos/fandor/api/hooks","issue_events_url":"https://api.github.com/repos/fandor/api/issues/events{/number}","events_url":"https://api.github.com/repos/fandor/api/events","assignees_url":"https://api.github.com/repos/fandor/api/assignees{/user}","branches_url":"https://api.github.com/repos/fandor/api/branches{/branch}","tags_url":"https://api.github.com/repos/fandor/api/tags","blobs_url":"https://api.github.com/repos/fandor/api/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fandor/api/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fandor/api/git/refs{/sha}","trees_url":"https://api.github.com/repos/fandor/api/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fandor/api/statuses/{sha}","languages_url":"https://api.github.com/repos/fandor/api/languages","stargazers_url":"https://api.github.com/repos/fandor/api/stargazers","contributors_url":"https://api.github.com/repos/fandor/api/contributors","subscribers_url":"https://api.github.com/repos/fandor/api/subscribers","subscription_url":"https://api.github.com/repos/fandor/api/subscription","commits_url":"https://api.github.com/repos/fandor/api/commits{/sha}","git_commits_url":"https://api.github.com/repos/fandor/api/git/commits{/sha}","comments_url":"https://api.github.com/repos/fandor/api/comments{/number}","issue_comment_url":"https://api.github.com/repos/fandor/api/issues/comments{/number}","contents_url":"https://api.github.com/repos/fandor/api/contents/{+path}","compare_url":"https://api.github.com/repos/fandor/api/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fandor/api/merges","archive_url":"https://api.github.com/repos/fandor/api/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fandor/api/downloads","issues_url":"https://api.github.com/repos/fandor/api/issues{/number}","pulls_url":"https://api.github.com/repos/fandor/api/pulls{/number}","milestones_url":"https://api.github.com/repos/fandor/api/milestones{/number}","notifications_url":"https://api.github.com/repos/fandor/api/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fandor/api/labels{/name}","releases_url":"https://api.github.com/repos/fandor/api/releases{/id}","deployments_url":"https://api.github.com/repos/fandor/api/deployments","created_at":"2016-02-19T14:41:38Z","updated_at":"2016-02-19T14:41:38Z","pushed_at":"2016-02-24T18:36:35Z","git_url":"git://github.com/fandor/api.git","ssh_url":"git@github.com:fandor/api.git","clone_url":"https://github.com/fandor/api.git","svn_url":"https://github.com/fandor/api","homepage":null,"size":46,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"fandor:epic/v3","ref":"epic/v3","sha":"eed71cd8cf7a8c855257b7b52332985c31f121b5","user":{"login":"fandor","id":1661184,"avatar_url":"https://avatars.githubusercontent.com/u/1661184?v=3","gravatar_id":"","url":"https://api.github.com/users/fandor","html_url":"https://github.com/fandor","followers_url":"https://api.github.com/users/fandor/followers","following_url":"https://api.github.com/users/fandor/following{/other_user}","gists_url":"https://api.github.com/users/fandor/gists{/gist_id}","starred_url":"https://api.github.com/users/fandor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fandor/subscriptions","organizations_url":"https://api.github.com/users/fandor/orgs","repos_url":"https://api.github.com/users/fandor/repos","events_url":"https://api.github.com/users/fandor/events{/privacy}","received_events_url":"https://api.github.com/users/fandor/received_events","type":"Organization","site_admin":false},"repo":{"id":52093870,"name":"api","full_name":"fandor/api","owner":{"login":"fandor","id":1661184,"avatar_url":"https://avatars.githubusercontent.com/u/1661184?v=3","gravatar_id":"","url":"https://api.github.com/users/fandor","html_url":"https://github.com/fandor","followers_url":"https://api.github.com/users/fandor/followers","following_url":"https://api.github.com/users/fandor/following{/other_user}","gists_url":"https://api.github.com/users/fandor/gists{/gist_id}","starred_url":"https://api.github.com/users/fandor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fandor/subscriptions","organizations_url":"https://api.github.com/users/fandor/orgs","repos_url":"https://api.github.com/users/fandor/repos","events_url":"https://api.github.com/users/fandor/events{/privacy}","received_events_url":"https://api.github.com/users/fandor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fandor/api","description":"Houses Fandor's API documentation.","fork":false,"url":"https://api.github.com/repos/fandor/api","forks_url":"https://api.github.com/repos/fandor/api/forks","keys_url":"https://api.github.com/repos/fandor/api/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fandor/api/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fandor/api/teams","hooks_url":"https://api.github.com/repos/fandor/api/hooks","issue_events_url":"https://api.github.com/repos/fandor/api/issues/events{/number}","events_url":"https://api.github.com/repos/fandor/api/events","assignees_url":"https://api.github.com/repos/fandor/api/assignees{/user}","branches_url":"https://api.github.com/repos/fandor/api/branches{/branch}","tags_url":"https://api.github.com/repos/fandor/api/tags","blobs_url":"https://api.github.com/repos/fandor/api/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fandor/api/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fandor/api/git/refs{/sha}","trees_url":"https://api.github.com/repos/fandor/api/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fandor/api/statuses/{sha}","languages_url":"https://api.github.com/repos/fandor/api/languages","stargazers_url":"https://api.github.com/repos/fandor/api/stargazers","contributors_url":"https://api.github.com/repos/fandor/api/contributors","subscribers_url":"https://api.github.com/repos/fandor/api/subscribers","subscription_url":"https://api.github.com/repos/fandor/api/subscription","commits_url":"https://api.github.com/repos/fandor/api/commits{/sha}","git_commits_url":"https://api.github.com/repos/fandor/api/git/commits{/sha}","comments_url":"https://api.github.com/repos/fandor/api/comments{/number}","issue_comment_url":"https://api.github.com/repos/fandor/api/issues/comments{/number}","contents_url":"https://api.github.com/repos/fandor/api/contents/{+path}","compare_url":"https://api.github.com/repos/fandor/api/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fandor/api/merges","archive_url":"https://api.github.com/repos/fandor/api/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fandor/api/downloads","issues_url":"https://api.github.com/repos/fandor/api/issues{/number}","pulls_url":"https://api.github.com/repos/fandor/api/pulls{/number}","milestones_url":"https://api.github.com/repos/fandor/api/milestones{/number}","notifications_url":"https://api.github.com/repos/fandor/api/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fandor/api/labels{/name}","releases_url":"https://api.github.com/repos/fandor/api/releases{/id}","deployments_url":"https://api.github.com/repos/fandor/api/deployments","created_at":"2016-02-19T14:41:38Z","updated_at":"2016-02-19T14:41:38Z","pushed_at":"2016-02-24T18:36:35Z","git_url":"git://github.com/fandor/api.git","ssh_url":"git@github.com:fandor/api.git","clone_url":"https://github.com/fandor/api.git","svn_url":"https://github.com/fandor/api","homepage":null,"size":46,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fandor/api/pulls/5"},"html":{"href":"https://github.com/fandor/api/pull/5"},"issue":{"href":"https://api.github.com/repos/fandor/api/issues/5"},"comments":{"href":"https://api.github.com/repos/fandor/api/issues/5/comments"},"review_comments":{"href":"https://api.github.com/repos/fandor/api/pulls/5/comments"},"review_comment":{"href":"https://api.github.com/repos/fandor/api/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fandor/api/pulls/5/commits"},"statuses":{"href":"https://api.github.com/repos/fandor/api/statuses/bffd7a5e50efd6f3abac6958e1f04c66edbd466e"}}}}