{"action":"created","comment":{"url":"https://api.github.com/repos/thoughtbot/administrate/pulls/comments/49988208","id":49988208,"diff_hunk":"@@ -59,4 +78,295 @@ class User; end\n       end\n     end\n   end\n+\n+  describe \"#scopes (and #scope as #scopes.first)\" do\n+    let(:scope) { \"active\" }\n+    let(:resolver) do\n+      double(resource_class: User, dashboard_class: MockDashboard)\n+    end\n+\n+    describe \"the query is one scope\" do\n+      let(:query) { \"scope:#{scope}\" }\n+\n+      it \"returns nil if the model does not respond to the possible scope\" do\n+        begin\n+          class User; end\n+          search = Administrate::Search.new(resolver, query)\n+          expect(search.scope).to eq(nil)\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+\n+      it \"returns the scope if the model responds to it\" do\n+        begin\n+          class User\n+            def self.active; end\n+          end\n+          search = Administrate::Search.new(resolver, query)\n+          expect(search.scope).to eq(scope)\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+\n+      it \"ignores the case of the 'scope:' prefix\" do\n+        begin\n+          class User\n+            def self.active; end\n+          end\n+          search = Administrate::Search.new(resolver, \"ScoPE:#{scope}\")\n+          expect(search.scope).to eq(scope)\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+\n+      it \"returns nil if the name of the scope looks suspicious\" do\n+        begin\n+          class User\n+            def self.destroy_all; end\n+          end\n+\n+          Administrate::Search::BLACKLISTED_WORDS.each do |word|\n+            search = Administrate::Search.new(resolver, \"scope:#{word}_all\")\n+            expect(search.scope).to eq(nil)\n+          end\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+\n+      it \"returns nil if the name of the scope ends with an exclamation mark\" do\n+        begin\n+          class User\n+            def self.bang!; end\n+          end\n+\n+          search = Administrate::Search.new(resolver, \"scope:bang!\")\n+          expect(search.scope).to eq(nil)\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+\n+      describe \"with COLLECTION_SCOPES defined as an array\" do\n+        let(:resolver) do\n+          double(resource_class: User,\n+                 dashboard_class: DashboardWithDefinedScopes)\n+        end\n+\n+        it \"ignores the scope if it isn't included in COLLECTION_SCOPES\" do\n+          begin\n+            class User\n+              def self.closed; end\n+            end\n+            search = Administrate::Search.new(resolver, \"scope:closed\")\n+            expect(search.scope).to eq(nil)\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+\n+        it \"returns the scope if it's included into COLLECION_SCOPES\" do\n+          begin\n+            class User\n+              def self.active; end\n+            end\n+            search = Administrate::Search.new(resolver, \"scope:active\")\n+            expect(search.scope).to eq(\"active\")\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+\n+        # The following should match with what is declared by COLLECTION_SCOPES\n+        # up within the DashboardWithDefinedScopes class.\n+        let(:scope) { \"with_argument\" }\n+        let(:argument) { \"3\" }\n+        let(:scope_with_argument) { \"#{scope}(#{argument})\" }\n+        it \"returns the scope even if its key has an argument\" do\n+          begin\n+            class User\n+              def self.with_argument(argument); argument; end\n+            end\n+            search = Administrate::Search.new(resolver,\n+                                              \"scope:#{scope_with_argument}\")\n+            expect(search.scope).to eq(scope)\n+            expect(search.scopes).to eq([scope])\n+            expect(search.arguments).to eq([argument])\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+      end\n+\n+      # Folloing are the same previous specs using a Hash instead of an array.\n+      describe \"with COLLECTION_SCOPES defined as a hash of arrays w/ scopes\" do\n+        let(:resolver) do\n+          double(resource_class: User,\n+                 dashboard_class: DashboardWithHashOfScopesDefined)\n+        end\n+\n+        it \"ignores the scope if it isn't included in COLLECTION_SCOPES keys\" do\n+          begin\n+            class User\n+              def self.closed; end\n+            end\n+            search = Administrate::Search.new(resolver, \"scope:closed\")\n+            expect(search.scope).to eq(nil)\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+\n+        it \"returns the scope if it's included into COLLECION_SCOPES keys\" do\n+          begin\n+            class User\n+              def self.active; end\n+            end\n+            search = Administrate::Search.new(resolver, \"scope:active\")\n+            expect(search.scope).to eq(\"active\")\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+\n+        # The following should match with what is declared by COLLECTION_SCOPES\n+        # up within the DashboardWithHashOfScopesDefined class.\n+        let(:scope) { \"with_argument\" }\n+        let(:argument) { \"3\" }\n+        let(:scope_with_argument) { \"#{scope}(#{argument})\" }\n+        it \"returns the scope even if its key has an argument\" do\n+          begin\n+            class User\n+              def self.with_argument(argument); argument; end\n+            end\n+            search = Administrate::Search.new(resolver,\n+                                              \"scope:#{scope_with_argument}\")\n+            expect(search.scope).to eq(scope)\n+            expect(search.scopes).to eq([scope])\n+            expect(search.arguments).to eq([argument])\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+      end\n+    end\n+\n+    describe \"the query is a word and a scope\" do\n+      let(:word) { \"foobar\" }\n+\n+      it \"returns the scope and #words the word\" do\n+        begin\n+          class User\n+            def self.active; end\n+          end\n+\n+          search = Administrate::Search.new(resolver, \"scope:#{scope} #{word}\")\n+          expect(search.scope).to eq(scope)\n+          expect(search.words).to eq([word])\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+\n+      it \"ignores the order\" do\n+        begin\n+          class User\n+            def self.active; end\n+          end\n+\n+          search = Administrate::Search.new(resolver, \"#{word} scope:#{scope}\")\n+          expect(search.scope).to eq(scope)\n+          expect(search.words).to eq([word])\n+        ensure\n+          remove_constants :User\n+        end\n+      end\n+    end\n+\n+    describe \"the query is a word and two scopes\" do\n+      let(:word) { \"foobar\" }\n+      let(:other_scope) { \"subscribed\" }\n+\n+      describe \"in that order\" do\n+        let(:query) { \"#{word} scope:#{scope} scope:#{other_scope}\" }\n+\n+        it \"returns the scopes and #words the word\" do\n+          begin\n+            class User\n+              def self.active; end\n+\n+              def self.subscribed; end\n+            end\n+ \n+            search = Administrate::Search.new(resolver, query)\n+            expect(search.scopes).to eq([scope, other_scope])\n+            expect(search.words).to eq([word])\n+          ensure\n+            remove_constants :User\n+          end\n+        end\n+      end\n+\n+      describe \"with the word between the two scopes\" do\n+        let(:query) { \"scope:#{scope} #{word} scope:#{other_scope}\" }\n+\n+        it \"returns the scopes and #words the word\" do\n+          begin\n+            class User\n+              def self.active; end\n+\n+              def self.subscribed; end\n+            end\n+ ","path":"spec/lib/administrate/search_spec.rb","position":272,"original_position":272,"commit_id":"d57583c8f96b93f06a2514c7e14a8378ec4bc4ca","original_commit_id":"d57583c8f96b93f06a2514c7e14a8378ec4bc4ca","user":{"login":"houndci","id":6697940,"avatar_url":"https://avatars.githubusercontent.com/u/6697940?v=3","gravatar_id":"","url":"https://api.github.com/users/houndci","html_url":"https://github.com/houndci","followers_url":"https://api.github.com/users/houndci/followers","following_url":"https://api.github.com/users/houndci/following{/other_user}","gists_url":"https://api.github.com/users/houndci/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci/subscriptions","organizations_url":"https://api.github.com/users/houndci/orgs","repos_url":"https://api.github.com/users/houndci/repos","events_url":"https://api.github.com/users/houndci/events{/privacy}","received_events_url":"https://api.github.com/users/houndci/received_events","type":"User","site_admin":false},"body":"Trailing whitespace detected.","created_at":"2016-01-18T11:34:29Z","updated_at":"2016-01-18T11:34:29Z","html_url":"https://github.com/thoughtbot/administrate/pull/276#discussion_r49988208","pull_request_url":"https://api.github.com/repos/thoughtbot/administrate/pulls/276","_links":{"self":{"href":"https://api.github.com/repos/thoughtbot/administrate/pulls/comments/49988208"},"html":{"href":"https://github.com/thoughtbot/administrate/pull/276#discussion_r49988208"},"pull_request":{"href":"https://api.github.com/repos/thoughtbot/administrate/pulls/276"}}},"pull_request":{"url":"https://api.github.com/repos/thoughtbot/administrate/pulls/276","id":51986910,"html_url":"https://github.com/thoughtbot/administrate/pull/276","diff_url":"https://github.com/thoughtbot/administrate/pull/276.diff","patch_url":"https://github.com/thoughtbot/administrate/pull/276.patch","issue_url":"https://api.github.com/repos/thoughtbot/administrate/issues/276","number":276,"state":"open","locked":false,"title":"Search scopes","user":{"login":"nando","id":9823,"avatar_url":"https://avatars.githubusercontent.com/u/9823?v=3","gravatar_id":"","url":"https://api.github.com/users/nando","html_url":"https://github.com/nando","followers_url":"https://api.github.com/users/nando/followers","following_url":"https://api.github.com/users/nando/following{/other_user}","gists_url":"https://api.github.com/users/nando/gists{/gist_id}","starred_url":"https://api.github.com/users/nando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nando/subscriptions","organizations_url":"https://api.github.com/users/nando/orgs","repos_url":"https://api.github.com/users/nando/repos","events_url":"https://api.github.com/users/nando/events{/privacy}","received_events_url":"https://api.github.com/users/nando/received_events","type":"User","site_admin":false},"body":"I hope you like the idea (I've modified the original PR to avoid sending the scope to the model if it looks suspicious. We do not have that security problem in our project since our AdministrateController has 'before_filter :require_admin' at the beginning of its definition).","created_at":"2015-11-27T11:48:03Z","updated_at":"2016-01-18T11:34:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"327fbf4c32c5353b4b992454c98115b97af10f04","assignee":null,"milestone":{"url":"https://api.github.com/repos/thoughtbot/administrate/milestones/3","html_url":"https://github.com/thoughtbot/administrate/milestones/v0.1.4:%20Extensibility","labels_url":"https://api.github.com/repos/thoughtbot/administrate/milestones/3/labels","id":1425036,"number":3,"title":"v0.1.4: Extensibility","description":"Extensibility:\r\n\r\n- define a plugin structure\r\n- allow custom namespaces for the admin route\r\n- documentation","creator":{"login":"graysonwright","id":829576,"avatar_url":"https://avatars.githubusercontent.com/u/829576?v=3","gravatar_id":"","url":"https://api.github.com/users/graysonwright","html_url":"https://github.com/graysonwright","followers_url":"https://api.github.com/users/graysonwright/followers","following_url":"https://api.github.com/users/graysonwright/following{/other_user}","gists_url":"https://api.github.com/users/graysonwright/gists{/gist_id}","starred_url":"https://api.github.com/users/graysonwright/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/graysonwright/subscriptions","organizations_url":"https://api.github.com/users/graysonwright/orgs","repos_url":"https://api.github.com/users/graysonwright/repos","events_url":"https://api.github.com/users/graysonwright/events{/privacy}","received_events_url":"https://api.github.com/users/graysonwright/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":0,"state":"open","created_at":"2015-11-23T13:41:19Z","updated_at":"2015-12-17T16:30:27Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/thoughtbot/administrate/pulls/276/commits","review_comments_url":"https://api.github.com/repos/thoughtbot/administrate/pulls/276/comments","review_comment_url":"https://api.github.com/repos/thoughtbot/administrate/pulls/comments{/number}","comments_url":"https://api.github.com/repos/thoughtbot/administrate/issues/276/comments","statuses_url":"https://api.github.com/repos/thoughtbot/administrate/statuses/d57583c8f96b93f06a2514c7e14a8378ec4bc4ca","head":{"label":"nando:search_scopes","ref":"search_scopes","sha":"d57583c8f96b93f06a2514c7e14a8378ec4bc4ca","user":{"login":"nando","id":9823,"avatar_url":"https://avatars.githubusercontent.com/u/9823?v=3","gravatar_id":"","url":"https://api.github.com/users/nando","html_url":"https://github.com/nando","followers_url":"https://api.github.com/users/nando/followers","following_url":"https://api.github.com/users/nando/following{/other_user}","gists_url":"https://api.github.com/users/nando/gists{/gist_id}","starred_url":"https://api.github.com/users/nando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nando/subscriptions","organizations_url":"https://api.github.com/users/nando/orgs","repos_url":"https://api.github.com/users/nando/repos","events_url":"https://api.github.com/users/nando/events{/privacy}","received_events_url":"https://api.github.com/users/nando/received_events","type":"User","site_admin":false},"repo":{"id":46931632,"name":"administrate","full_name":"nando/administrate","owner":{"login":"nando","id":9823,"avatar_url":"https://avatars.githubusercontent.com/u/9823?v=3","gravatar_id":"","url":"https://api.github.com/users/nando","html_url":"https://github.com/nando","followers_url":"https://api.github.com/users/nando/followers","following_url":"https://api.github.com/users/nando/following{/other_user}","gists_url":"https://api.github.com/users/nando/gists{/gist_id}","starred_url":"https://api.github.com/users/nando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nando/subscriptions","organizations_url":"https://api.github.com/users/nando/orgs","repos_url":"https://api.github.com/users/nando/repos","events_url":"https://api.github.com/users/nando/events{/privacy}","received_events_url":"https://api.github.com/users/nando/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nando/administrate","description":"A Rails engine that helps you put together a super-flexible admin dashboard.","fork":true,"url":"https://api.github.com/repos/nando/administrate","forks_url":"https://api.github.com/repos/nando/administrate/forks","keys_url":"https://api.github.com/repos/nando/administrate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nando/administrate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nando/administrate/teams","hooks_url":"https://api.github.com/repos/nando/administrate/hooks","issue_events_url":"https://api.github.com/repos/nando/administrate/issues/events{/number}","events_url":"https://api.github.com/repos/nando/administrate/events","assignees_url":"https://api.github.com/repos/nando/administrate/assignees{/user}","branches_url":"https://api.github.com/repos/nando/administrate/branches{/branch}","tags_url":"https://api.github.com/repos/nando/administrate/tags","blobs_url":"https://api.github.com/repos/nando/administrate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nando/administrate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nando/administrate/git/refs{/sha}","trees_url":"https://api.github.com/repos/nando/administrate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nando/administrate/statuses/{sha}","languages_url":"https://api.github.com/repos/nando/administrate/languages","stargazers_url":"https://api.github.com/repos/nando/administrate/stargazers","contributors_url":"https://api.github.com/repos/nando/administrate/contributors","subscribers_url":"https://api.github.com/repos/nando/administrate/subscribers","subscription_url":"https://api.github.com/repos/nando/administrate/subscription","commits_url":"https://api.github.com/repos/nando/administrate/commits{/sha}","git_commits_url":"https://api.github.com/repos/nando/administrate/git/commits{/sha}","comments_url":"https://api.github.com/repos/nando/administrate/comments{/number}","issue_comment_url":"https://api.github.com/repos/nando/administrate/issues/comments{/number}","contents_url":"https://api.github.com/repos/nando/administrate/contents/{+path}","compare_url":"https://api.github.com/repos/nando/administrate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nando/administrate/merges","archive_url":"https://api.github.com/repos/nando/administrate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nando/administrate/downloads","issues_url":"https://api.github.com/repos/nando/administrate/issues{/number}","pulls_url":"https://api.github.com/repos/nando/administrate/pulls{/number}","milestones_url":"https://api.github.com/repos/nando/administrate/milestones{/number}","notifications_url":"https://api.github.com/repos/nando/administrate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nando/administrate/labels{/name}","releases_url":"https://api.github.com/repos/nando/administrate/releases{/id}","created_at":"2015-11-26T14:37:26Z","updated_at":"2015-11-26T14:37:27Z","pushed_at":"2016-01-18T11:34:20Z","git_url":"git://github.com/nando/administrate.git","ssh_url":"git@github.com:nando/administrate.git","clone_url":"https://github.com/nando/administrate.git","svn_url":"https://github.com/nando/administrate","homepage":"http://administrate-prototype.herokuapp.com/admin","size":591,"stargazers_count":0,"watchers_count":0,"language":"Ruby","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":"thoughtbot:master","ref":"master","sha":"5f444611164a0b0494ee76fa30e6b577b93decef","user":{"login":"thoughtbot","id":6183,"avatar_url":"https://avatars.githubusercontent.com/u/6183?v=3","gravatar_id":"","url":"https://api.github.com/users/thoughtbot","html_url":"https://github.com/thoughtbot","followers_url":"https://api.github.com/users/thoughtbot/followers","following_url":"https://api.github.com/users/thoughtbot/following{/other_user}","gists_url":"https://api.github.com/users/thoughtbot/gists{/gist_id}","starred_url":"https://api.github.com/users/thoughtbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thoughtbot/subscriptions","organizations_url":"https://api.github.com/users/thoughtbot/orgs","repos_url":"https://api.github.com/users/thoughtbot/repos","events_url":"https://api.github.com/users/thoughtbot/events{/privacy}","received_events_url":"https://api.github.com/users/thoughtbot/received_events","type":"Organization","site_admin":false},"repo":{"id":33739333,"name":"administrate","full_name":"thoughtbot/administrate","owner":{"login":"thoughtbot","id":6183,"avatar_url":"https://avatars.githubusercontent.com/u/6183?v=3","gravatar_id":"","url":"https://api.github.com/users/thoughtbot","html_url":"https://github.com/thoughtbot","followers_url":"https://api.github.com/users/thoughtbot/followers","following_url":"https://api.github.com/users/thoughtbot/following{/other_user}","gists_url":"https://api.github.com/users/thoughtbot/gists{/gist_id}","starred_url":"https://api.github.com/users/thoughtbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thoughtbot/subscriptions","organizations_url":"https://api.github.com/users/thoughtbot/orgs","repos_url":"https://api.github.com/users/thoughtbot/repos","events_url":"https://api.github.com/users/thoughtbot/events{/privacy}","received_events_url":"https://api.github.com/users/thoughtbot/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/thoughtbot/administrate","description":"A Rails engine that helps you put together a super-flexible admin dashboard.","fork":false,"url":"https://api.github.com/repos/thoughtbot/administrate","forks_url":"https://api.github.com/repos/thoughtbot/administrate/forks","keys_url":"https://api.github.com/repos/thoughtbot/administrate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/thoughtbot/administrate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/thoughtbot/administrate/teams","hooks_url":"https://api.github.com/repos/thoughtbot/administrate/hooks","issue_events_url":"https://api.github.com/repos/thoughtbot/administrate/issues/events{/number}","events_url":"https://api.github.com/repos/thoughtbot/administrate/events","assignees_url":"https://api.github.com/repos/thoughtbot/administrate/assignees{/user}","branches_url":"https://api.github.com/repos/thoughtbot/administrate/branches{/branch}","tags_url":"https://api.github.com/repos/thoughtbot/administrate/tags","blobs_url":"https://api.github.com/repos/thoughtbot/administrate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/thoughtbot/administrate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/thoughtbot/administrate/git/refs{/sha}","trees_url":"https://api.github.com/repos/thoughtbot/administrate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/thoughtbot/administrate/statuses/{sha}","languages_url":"https://api.github.com/repos/thoughtbot/administrate/languages","stargazers_url":"https://api.github.com/repos/thoughtbot/administrate/stargazers","contributors_url":"https://api.github.com/repos/thoughtbot/administrate/contributors","subscribers_url":"https://api.github.com/repos/thoughtbot/administrate/subscribers","subscription_url":"https://api.github.com/repos/thoughtbot/administrate/subscription","commits_url":"https://api.github.com/repos/thoughtbot/administrate/commits{/sha}","git_commits_url":"https://api.github.com/repos/thoughtbot/administrate/git/commits{/sha}","comments_url":"https://api.github.com/repos/thoughtbot/administrate/comments{/number}","issue_comment_url":"https://api.github.com/repos/thoughtbot/administrate/issues/comments{/number}","contents_url":"https://api.github.com/repos/thoughtbot/administrate/contents/{+path}","compare_url":"https://api.github.com/repos/thoughtbot/administrate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/thoughtbot/administrate/merges","archive_url":"https://api.github.com/repos/thoughtbot/administrate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/thoughtbot/administrate/downloads","issues_url":"https://api.github.com/repos/thoughtbot/administrate/issues{/number}","pulls_url":"https://api.github.com/repos/thoughtbot/administrate/pulls{/number}","milestones_url":"https://api.github.com/repos/thoughtbot/administrate/milestones{/number}","notifications_url":"https://api.github.com/repos/thoughtbot/administrate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/thoughtbot/administrate/labels{/name}","releases_url":"https://api.github.com/repos/thoughtbot/administrate/releases{/id}","created_at":"2015-04-10T16:43:02Z","updated_at":"2016-01-18T07:57:49Z","pushed_at":"2016-01-18T11:34:22Z","git_url":"git://github.com/thoughtbot/administrate.git","ssh_url":"git@github.com:thoughtbot/administrate.git","clone_url":"https://github.com/thoughtbot/administrate.git","svn_url":"https://github.com/thoughtbot/administrate","homepage":"http://administrate-prototype.herokuapp.com/admin","size":996,"stargazers_count":2104,"watchers_count":2104,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":151,"mirror_url":null,"open_issues_count":105,"forks":151,"open_issues":105,"watchers":2104,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/thoughtbot/administrate/pulls/276"},"html":{"href":"https://github.com/thoughtbot/administrate/pull/276"},"issue":{"href":"https://api.github.com/repos/thoughtbot/administrate/issues/276"},"comments":{"href":"https://api.github.com/repos/thoughtbot/administrate/issues/276/comments"},"review_comments":{"href":"https://api.github.com/repos/thoughtbot/administrate/pulls/276/comments"},"review_comment":{"href":"https://api.github.com/repos/thoughtbot/administrate/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/thoughtbot/administrate/pulls/276/commits"},"statuses":{"href":"https://api.github.com/repos/thoughtbot/administrate/statuses/d57583c8f96b93f06a2514c7e14a8378ec4bc4ca"}}}}