{"action":"created","comment":{"url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/comments/179913896","pull_request_review_id":110252077,"id":179913896,"diff_hunk":"@@ -0,0 +1,457 @@\n+---\n+title: IRCv3 Client Capability Negotiation\n+layout: spec\n+redirect_from:\n+  - /specs/core/capability-negotiation-3.1.html\n+  - /specs/core/capability-negotiation-3.2.html\n+  - /specs/extensions/cap-notify-3.2.html\n+copyrights:\n+  -\n+    name: \"Kevin L. Mitchell\"\n+    period: \"2004-2012\"\n+    email: \"klmitch@mit.edu\"\n+  -\n+    name: \"Perry Lorier\"\n+    period: \"2004-2012\"\n+    email: \"isomer@undernet.org\"\n+  -\n+    name: \"Lee Hardy\"\n+    period: \"2004-2012\"\n+    email: \"lee@leeh.co.uk\"\n+  -\n+    name: \"William Pitcock\"\n+    period: \"2009-2012\"\n+    email: \"nenolod@dereferenced.org\"\n+  -\n+    name: \"Attila Molnar\"\n+    period: \"2014\"\n+    email: \"attilamolnar@hush.com\"\n+  -\n+    name: \"Daniel Oakley\"\n+    period: \"2017\"\n+    email: \"daniel@danieloaks.net\"\n+---\n+## What Client Capability Negotiation attempts to solve\n+\n+Client Capability Negotiation allows IRC clients and servers to negotiate new features\n+in a backwards-compatible way – even features that change how the protocol works in deep\n+and extensive ways. Capability negotiation avoids the issues of breaking compatibility\n+with clients/servers not supporting new features by allowing clients and servers to\n+enable the features they both understand.\n+\n+Capability Negotiation means that client and server authors can develop new extensions to\n+the protocol, and software can use (or not use them) as they wish. It allows older\n+clients to connect to servers supporting new features and vice-versa.\n+\n+## Connection Registration\n+\n+Upon connecting to the IRC server, clients need a way to negotiate capabilities (protocol\n+extensions) with the server. Negotiation is done with the `CAP` command, using the\n+subcommands below to list and request capabilities.\n+\n+Upon connecting to the server, the client attempts to start the capability negotiation\n+process, as well as sending the standard `NICK`/`USER` commands (to complete registration\n+if the server doesn't support capability negotiation).\n+\n+Upon connecting to the IRC server, clients SHOULD send one of the following messages:\n+\n+- `CAP LS [version]` to discover the available capabilities on the server.\n+- `CAP REQ` to blindly request a particular set of capabilities.\n+\n+Following this, the client MUST send the standard `NICK` and `USER` IRC commands.\n+\n+Upon receiving either a `CAP LS` or `CAP REQ` command during connection registration, the\n+server MUST not complete registration until the client sends a `CAP END` command to\n+indicate that capability negotiation has ended. This allows clients to request their\n+desired capabilities before completing registration.\n+\n+Once capability negotiation has completed with a client-send `CAP END` command, registration\n+continues as normal.\n+\n+With the above registration process, clients will either recieve a `CAP` message indicating\n+that registration is paused while capability negotiation happens, or registration will\n+complete immediately, indicating that the server doesn't support capability negotiation.\n+\n+Example with capability negotiation:\n+\n+    Client: CAP LS 302\n+    Client: NICK dan\n+    Client: USER d * 0 :This is a really good name\n+    Server: CAP * LS :multi-prefix sasl\n+    Client: CAP REQ :multi-prefix\n+    Server: CAP * ACK multi-prefix\n+    Client: CAP END\n+    Server: 001 dan :Welcome to the Internet Relay Network dan\n+    ...\n+\n+Example with capability negotiation, but where the client recognises no advertised caps: \n+\n+    Client: CAP LS 302\n+    Client: NICK dan\n+    Client: USER d * 0 :This is a really good name\n+    Server: CAP * LS :draft/example-1 draft/example-2\n+    Client: CAP END\n+    Server: 001 dan :Welcome to the Internet Relay Network dan\n+    ...\n+\n+Example where the server doesn't support capability negotiation:\n+\n+    Client: CAP LS 302\n+    Client: NICK dan\n+    Client: USER d * 0 :This is a really good name\n+    Server: 001 dan :Welcome to the Internet Relay Network dan\n+    ...\n+\n+Example where the client doesn't support capability negotiation:\n+\n+    Client: NICK dan\n+    Client: USER d * 0 :This is a really good name\n+    Server: 001 dan :Welcome to the Internet Relay Network dan\n+    ...\n+\n+## The CAP command\n+\n+The client capability negotiation extension is implemented by the addition of one command\n+with several subcommands.  The command added is named `CAP`.  `CAP` takes a single\n+required subcommand, optionally followed by a single parameter of space-separated capability\n+identifiers.  Each capability in the list may be preceded by a capability modifier.\n+\n+The subcommands for `CAP` are: `LS`, `LIST`, `REQ`, `ACK`, `NAK`, and `END`.\n+\n+The `LS`, `LIST`, `REQ`, `ACK` and `NAK` subcommands may be followed by a single parameter\n+containing a space-separated list of capabilities.  If more than one capability is named,\n+the RFC1459 designated sentinel (`:`) for a multi-parameter argument must be present. The\n+list of capabilities MUST be parsed from left to right and capabilities SHOULD only be sent\n+once per command. If a capability is sent multiple times, the last one received takes priority.\n+\n+If a client sends a subcommand which is not in the list above or otherwise issues an\n+invalid command, then numeric 410 (ERR_INVALIDCAPCMD) should be sent.  The first parameter\n+after the client identifier (usually nickname) should be the commandname; the second parameter\n+should be a human-readable description of the error.\n+\n+Replies from the server must contain the client identifier name or asterisk if one is not yet\n+available.\n+\n+Example:\n+\n+    Client: CAP FOO\n+    Server: :example.org 410 * FOO :Invalid CAP command\n+\n+The client MUST be able to use the `CAP` command anytime, even after registration.\n+\n+### The CAP LS subcommand\n+\n+The LS subcommand is used to list the capabilities supported by the server.  The client\n+should send an LS subcommand with no other arguments to solicit a list of all capabilities.\n+\n+If a client issues an LS subcommand, registration must be suspended until an END subcommand\n+is received.  If no capabilities are available, an empty parameter must be sent.","path":"core/capability-negotiation.md","position":148,"original_position":148,"commit_id":"67ab14ece120196fd8757dd12c045cc65ebb7ecd","original_commit_id":"67ab14ece120196fd8757dd12c045cc65ebb7ecd","user":{"login":"jwheare","id":49224,"avatar_url":"https://avatars3.githubusercontent.com/u/49224?v=4","gravatar_id":"","url":"https://api.github.com/users/jwheare","html_url":"https://github.com/jwheare","followers_url":"https://api.github.com/users/jwheare/followers","following_url":"https://api.github.com/users/jwheare/following{/other_user}","gists_url":"https://api.github.com/users/jwheare/gists{/gist_id}","starred_url":"https://api.github.com/users/jwheare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwheare/subscriptions","organizations_url":"https://api.github.com/users/jwheare/orgs","repos_url":"https://api.github.com/users/jwheare/repos","events_url":"https://api.github.com/users/jwheare/events{/privacy}","received_events_url":"https://api.github.com/users/jwheare/received_events","type":"User","site_admin":false},"body":"> ...MUST be sent","created_at":"2018-04-07T10:35:11Z","updated_at":"2018-04-07T10:56:33Z","html_url":"https://github.com/ircv3/ircv3-specifications/pull/327#discussion_r179913896","pull_request_url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/comments/179913896"},"html":{"href":"https://github.com/ircv3/ircv3-specifications/pull/327#discussion_r179913896"},"pull_request":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327"}}},"pull_request":{"url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327","id":151417302,"html_url":"https://github.com/ircv3/ircv3-specifications/pull/327","diff_url":"https://github.com/ircv3/ircv3-specifications/pull/327.diff","patch_url":"https://github.com/ircv3/ircv3-specifications/pull/327.patch","issue_url":"https://api.github.com/repos/ircv3/ircv3-specifications/issues/327","number":327,"state":"open","locked":false,"title":"Merge CAP 3.1, CAP 3.2, and cap-notify specs","user":{"login":"DanielOaks","id":251281,"avatar_url":"https://avatars3.githubusercontent.com/u/251281?v=4","gravatar_id":"","url":"https://api.github.com/users/DanielOaks","html_url":"https://github.com/DanielOaks","followers_url":"https://api.github.com/users/DanielOaks/followers","following_url":"https://api.github.com/users/DanielOaks/following{/other_user}","gists_url":"https://api.github.com/users/DanielOaks/gists{/gist_id}","starred_url":"https://api.github.com/users/DanielOaks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanielOaks/subscriptions","organizations_url":"https://api.github.com/users/DanielOaks/orgs","repos_url":"https://api.github.com/users/DanielOaks/repos","events_url":"https://api.github.com/users/DanielOaks/events{/privacy}","received_events_url":"https://api.github.com/users/DanielOaks/received_events","type":"User","site_admin":false},"body":"tl;dr the fact that we have three separate specifications for capability negotiation is bad. It's difficult and annoying to look in three different specs to implement one feature.\r\n\r\nThis PR merges the specifications, delimiting the 3.2-specific stuff with the phrase _\"Cap Version `302`\"_.\r\n\r\nThe only thing I'm sorta iffy on is how to properly note that if a client sends `CAP LS 302`, they are considered to support `302` going forward. Right now this is the language I'm using:\r\n\r\n> Clients that send `302` as the CAP LS version are presumed to support `CAP LS 302` features for the future life of the connection.\r\n\r\nHowever, it looks like servers do drop the 302 version if the client then later sends a `CAP LS` command (without the 302). If this is what servers are doing these days I can modify the text there to say if the client sends a regular CAP LS, presume they support 301 (which is everything not specified to be 302), or some other similar language.\r\n\r\n**note:** After merging this I'll need to change website stuff to match, so don't just update the git submodule after pulling this in.\r\n\r\n[Formatted spec](https://github.com/DanielOaks/ircv3-specifications/blob/master+merged-cap/core/capability-negotiation.md)","created_at":"2017-11-08T15:43:18Z","updated_at":"2018-04-07T10:56:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"22b674f678f9941dee6cf1b4e81f13e29437c09b","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":665202991,"url":"https://api.github.com/repos/ircv3/ircv3-specifications/labels/errata","name":"errata","color":"fbca04","default":false}],"milestone":{"url":"https://api.github.com/repos/ircv3/ircv3-specifications/milestones/4","html_url":"https://github.com/ircv3/ircv3-specifications/milestone/4","labels_url":"https://api.github.com/repos/ircv3/ircv3-specifications/milestones/4/labels","id":1628437,"number":4,"title":"Roadmap","description":"This is the rolling technical roadmap for IRCv3","creator":{"login":"jwheare","id":49224,"avatar_url":"https://avatars3.githubusercontent.com/u/49224?v=4","gravatar_id":"","url":"https://api.github.com/users/jwheare","html_url":"https://github.com/jwheare","followers_url":"https://api.github.com/users/jwheare/followers","following_url":"https://api.github.com/users/jwheare/following{/other_user}","gists_url":"https://api.github.com/users/jwheare/gists{/gist_id}","starred_url":"https://api.github.com/users/jwheare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwheare/subscriptions","organizations_url":"https://api.github.com/users/jwheare/orgs","repos_url":"https://api.github.com/users/jwheare/repos","events_url":"https://api.github.com/users/jwheare/events{/privacy}","received_events_url":"https://api.github.com/users/jwheare/received_events","type":"User","site_admin":false},"open_issues":17,"closed_issues":29,"state":"open","created_at":"2016-03-08T09:56:20Z","updated_at":"2017-12-11T16:51:50Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327/commits","review_comments_url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327/comments","review_comment_url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ircv3/ircv3-specifications/issues/327/comments","statuses_url":"https://api.github.com/repos/ircv3/ircv3-specifications/statuses/67ab14ece120196fd8757dd12c045cc65ebb7ecd","head":{"label":"DanielOaks:master+merged-cap","ref":"master+merged-cap","sha":"67ab14ece120196fd8757dd12c045cc65ebb7ecd","user":{"login":"DanielOaks","id":251281,"avatar_url":"https://avatars3.githubusercontent.com/u/251281?v=4","gravatar_id":"","url":"https://api.github.com/users/DanielOaks","html_url":"https://github.com/DanielOaks","followers_url":"https://api.github.com/users/DanielOaks/followers","following_url":"https://api.github.com/users/DanielOaks/following{/other_user}","gists_url":"https://api.github.com/users/DanielOaks/gists{/gist_id}","starred_url":"https://api.github.com/users/DanielOaks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanielOaks/subscriptions","organizations_url":"https://api.github.com/users/DanielOaks/orgs","repos_url":"https://api.github.com/users/DanielOaks/repos","events_url":"https://api.github.com/users/DanielOaks/events{/privacy}","received_events_url":"https://api.github.com/users/DanielOaks/received_events","type":"User","site_admin":false},"repo":{"id":32207436,"name":"ircv3-specifications","full_name":"DanielOaks/ircv3-specifications","owner":{"login":"DanielOaks","id":251281,"avatar_url":"https://avatars3.githubusercontent.com/u/251281?v=4","gravatar_id":"","url":"https://api.github.com/users/DanielOaks","html_url":"https://github.com/DanielOaks","followers_url":"https://api.github.com/users/DanielOaks/followers","following_url":"https://api.github.com/users/DanielOaks/following{/other_user}","gists_url":"https://api.github.com/users/DanielOaks/gists{/gist_id}","starred_url":"https://api.github.com/users/DanielOaks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanielOaks/subscriptions","organizations_url":"https://api.github.com/users/DanielOaks/orgs","repos_url":"https://api.github.com/users/DanielOaks/repos","events_url":"https://api.github.com/users/DanielOaks/events{/privacy}","received_events_url":"https://api.github.com/users/DanielOaks/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/DanielOaks/ircv3-specifications","description":"IRCv3 specifications","fork":true,"url":"https://api.github.com/repos/DanielOaks/ircv3-specifications","forks_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/forks","keys_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/teams","hooks_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/hooks","issue_events_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/issues/events{/number}","events_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/events","assignees_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/assignees{/user}","branches_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/branches{/branch}","tags_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/tags","blobs_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/git/refs{/sha}","trees_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/statuses/{sha}","languages_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/languages","stargazers_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/stargazers","contributors_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/contributors","subscribers_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/subscribers","subscription_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/subscription","commits_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/commits{/sha}","git_commits_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/git/commits{/sha}","comments_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/comments{/number}","issue_comment_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/issues/comments{/number}","contents_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/contents/{+path}","compare_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/merges","archive_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/downloads","issues_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/issues{/number}","pulls_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/pulls{/number}","milestones_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/milestones{/number}","notifications_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/labels{/name}","releases_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/releases{/id}","deployments_url":"https://api.github.com/repos/DanielOaks/ircv3-specifications/deployments","created_at":"2015-03-14T11:09:13Z","updated_at":"2016-11-18T13:41:54Z","pushed_at":"2018-02-12T11:40:38Z","git_url":"git://github.com/DanielOaks/ircv3-specifications.git","ssh_url":"git@github.com:DanielOaks/ircv3-specifications.git","clone_url":"https://github.com/DanielOaks/ircv3-specifications.git","svn_url":"https://github.com/DanielOaks/ircv3-specifications","homepage":"http://ircv3.net/","size":465,"stargazers_count":1,"watchers_count":1,"language":"CSS","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":1,"default_branch":"gh-pages"}},"base":{"label":"ircv3:master","ref":"master","sha":"b4ead4683d5c136184097ace0c7339c9971c3b21","user":{"login":"ircv3","id":6295495,"avatar_url":"https://avatars1.githubusercontent.com/u/6295495?v=4","gravatar_id":"","url":"https://api.github.com/users/ircv3","html_url":"https://github.com/ircv3","followers_url":"https://api.github.com/users/ircv3/followers","following_url":"https://api.github.com/users/ircv3/following{/other_user}","gists_url":"https://api.github.com/users/ircv3/gists{/gist_id}","starred_url":"https://api.github.com/users/ircv3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ircv3/subscriptions","organizations_url":"https://api.github.com/users/ircv3/orgs","repos_url":"https://api.github.com/users/ircv3/repos","events_url":"https://api.github.com/users/ircv3/events{/privacy}","received_events_url":"https://api.github.com/users/ircv3/received_events","type":"Organization","site_admin":false},"repo":{"id":4154671,"name":"ircv3-specifications","full_name":"ircv3/ircv3-specifications","owner":{"login":"ircv3","id":6295495,"avatar_url":"https://avatars1.githubusercontent.com/u/6295495?v=4","gravatar_id":"","url":"https://api.github.com/users/ircv3","html_url":"https://github.com/ircv3","followers_url":"https://api.github.com/users/ircv3/followers","following_url":"https://api.github.com/users/ircv3/following{/other_user}","gists_url":"https://api.github.com/users/ircv3/gists{/gist_id}","starred_url":"https://api.github.com/users/ircv3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ircv3/subscriptions","organizations_url":"https://api.github.com/users/ircv3/orgs","repos_url":"https://api.github.com/users/ircv3/repos","events_url":"https://api.github.com/users/ircv3/events{/privacy}","received_events_url":"https://api.github.com/users/ircv3/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ircv3/ircv3-specifications","description":"IRCv3 specifications | Roadmap: https://git.io/IRCv3-Roadmap | Code of conduct: http://ircv3.net/conduct.html","fork":false,"url":"https://api.github.com/repos/ircv3/ircv3-specifications","forks_url":"https://api.github.com/repos/ircv3/ircv3-specifications/forks","keys_url":"https://api.github.com/repos/ircv3/ircv3-specifications/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ircv3/ircv3-specifications/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ircv3/ircv3-specifications/teams","hooks_url":"https://api.github.com/repos/ircv3/ircv3-specifications/hooks","issue_events_url":"https://api.github.com/repos/ircv3/ircv3-specifications/issues/events{/number}","events_url":"https://api.github.com/repos/ircv3/ircv3-specifications/events","assignees_url":"https://api.github.com/repos/ircv3/ircv3-specifications/assignees{/user}","branches_url":"https://api.github.com/repos/ircv3/ircv3-specifications/branches{/branch}","tags_url":"https://api.github.com/repos/ircv3/ircv3-specifications/tags","blobs_url":"https://api.github.com/repos/ircv3/ircv3-specifications/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ircv3/ircv3-specifications/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ircv3/ircv3-specifications/git/refs{/sha}","trees_url":"https://api.github.com/repos/ircv3/ircv3-specifications/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ircv3/ircv3-specifications/statuses/{sha}","languages_url":"https://api.github.com/repos/ircv3/ircv3-specifications/languages","stargazers_url":"https://api.github.com/repos/ircv3/ircv3-specifications/stargazers","contributors_url":"https://api.github.com/repos/ircv3/ircv3-specifications/contributors","subscribers_url":"https://api.github.com/repos/ircv3/ircv3-specifications/subscribers","subscription_url":"https://api.github.com/repos/ircv3/ircv3-specifications/subscription","commits_url":"https://api.github.com/repos/ircv3/ircv3-specifications/commits{/sha}","git_commits_url":"https://api.github.com/repos/ircv3/ircv3-specifications/git/commits{/sha}","comments_url":"https://api.github.com/repos/ircv3/ircv3-specifications/comments{/number}","issue_comment_url":"https://api.github.com/repos/ircv3/ircv3-specifications/issues/comments{/number}","contents_url":"https://api.github.com/repos/ircv3/ircv3-specifications/contents/{+path}","compare_url":"https://api.github.com/repos/ircv3/ircv3-specifications/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ircv3/ircv3-specifications/merges","archive_url":"https://api.github.com/repos/ircv3/ircv3-specifications/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ircv3/ircv3-specifications/downloads","issues_url":"https://api.github.com/repos/ircv3/ircv3-specifications/issues{/number}","pulls_url":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls{/number}","milestones_url":"https://api.github.com/repos/ircv3/ircv3-specifications/milestones{/number}","notifications_url":"https://api.github.com/repos/ircv3/ircv3-specifications/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ircv3/ircv3-specifications/labels{/name}","releases_url":"https://api.github.com/repos/ircv3/ircv3-specifications/releases{/id}","deployments_url":"https://api.github.com/repos/ircv3/ircv3-specifications/deployments","created_at":"2012-04-27T03:25:11Z","updated_at":"2018-04-04T12:46:54Z","pushed_at":"2018-02-12T11:54:27Z","git_url":"git://github.com/ircv3/ircv3-specifications.git","ssh_url":"git@github.com:ircv3/ircv3-specifications.git","clone_url":"https://github.com/ircv3/ircv3-specifications.git","svn_url":"https://github.com/ircv3/ircv3-specifications","homepage":"http://ircv3.net/","size":358,"stargazers_count":484,"watchers_count":484,"language":null,"has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":43,"mirror_url":null,"archived":false,"open_issues_count":56,"license":null,"forks":43,"open_issues":56,"watchers":484,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327"},"html":{"href":"https://github.com/ircv3/ircv3-specifications/pull/327"},"issue":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/issues/327"},"comments":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/issues/327/comments"},"review_comments":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327/comments"},"review_comment":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/pulls/327/commits"},"statuses":{"href":"https://api.github.com/repos/ircv3/ircv3-specifications/statuses/67ab14ece120196fd8757dd12c045cc65ebb7ecd"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jwheare"}}