{"action":"created","comment":{"url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/comments/26001483","id":26001483,"diff_hunk":"@@ -1977,13 +1977,205 @@ candidate:1 1 UDP 1694498815 192.0.2.33 10000 typ host\n         </section>\n       </section>\n \n-      <section title=\"Parsing an Offer\" anchor=\"sec.parsing-an-offer\"></section>\n+      <section title=\"Processing a Local Description\" anchor=\"sec.processing-a-local-desc\">\n+        <t>When a SessionDescription is supplied to setLocalDescription, the\n+            following steps MUST be performed:\n+          <list style=\"symbols\">\n+            <t>First, the type of the SessionDescription is checked against the\n+                  current state of the PeerConnection:\n+              <list style=\"symbols\">\n+                <t>If the type is \"offer\", the PeerConnection state MUST be\n+                      either \"stable\" or \"have-local-offer\".</t>\n+                <t>If the type is \"pranswer\" or \"answer\", the PeerConnection\n+                      state MUST be either \"have-remote-offer\" or\n+                      \"have-local-pranswer\".</t>\n+              </list>\n+            </t>\n+            <t>If the type is not correct for the current state, processing MUST\n+            stop and an error MUST be returned.</t>\n+            <t>Next, the SessionDescription is parsed into a data structure,\n+              as described in the\n+              <xref target=\"sec.parsing-a-desc\"/> section below.\n+            </t>\n+            <t>Finally, the parsed SessionDescription is applied as described in\n+              the <xref target=\"sec.applying-a-local-desc\"/> section below.</t>\n+          </list>\n+        </t>\n+      </section>\n \n-      <section title=\"Parsing an Answer\" anchor=\"sec.parsing-an-answer\"></section>\n+      <section title=\"Processing a Remote Description\" anchor=\"sec.processing-a-remote-desc\">\n+        <t>When a SessionDescription is supplied to setRemoteDescription, the\n+            following steps MUST be performed:\n+          <list style=\"symbols\">\n+            <t>First, the type of the SessionDescription is checked against the\n+                  current state of the PeerConnection:\n+              <list style=\"symbols\">\n+                <t>If the type is \"offer\", the PeerConnection state MUST be\n+                      either \"stable\" or \"have-remote-offer\".</t>\n+                <t>If the type is \"pranswer\" or \"answer\", the PeerConnection\n+                      state MUST be either \"have-local-offer\" or\n+                      \"have-remote-pranswer\".</t>\n+              </list>\n+            </t>\n+            <t>If the type is not correct for the current state, processing MUST\n+            stop and an error MUST be returned.</t>\n+            <t>Next, the SessionDescription is parsed into a data structure,\n+              as described in the\n+              <xref target=\"sec.parsing-a-desc\"/> section below.\n+            </t>\n+            <t>Finally, the parsed SessionDescription is applied as described in\n+              the <xref target=\"sec.applying-a-remote-desc\"/> section below.</t>\n+          </list>\n+        </t>\n+      </section>\n \n-      <section title=\"Applying a Local Description\" anchor=\"sec.applying-a-local-descript\"></section>\n+      <section title=\"Parsing a Session Description\" anchor=\"sec.parsing-a-desc\">\n+        <t>When a SessionDescription of any type is supplied to\n+        setLocal/RemoteDescription, the implementation must parse it and\n+        reject it if it is invalid. The exact details of this\n+        process are explained below.</t>\n+        <t>The SDP contained in the session description object consists of a\n+        sequence of text lines, each containing a key=value expression.\n+        The SDP is read,\n+        line-by-line, and converted to a data structure that contains the\n+        deserialized information. However, SDP supports various fields that are not relevant to JSEP applications, and so these fields can be ignored.\n+        For each line, the implementation will first ensure it is syntactically\n+        correct, and then either parse the data to store for later use,\n+        or discard the line and move on. If the line is not well-formed, or\n+        cannot be parsed as described, the specified the parser MUST stop with an error and reject the session decription. This ensures that implementations do not accidentally misinterpret ambiguous SDP.</t>\n+\n+        <section title=\"Session-Level Parsing\">\n+          <t>First, the session-level lines are checked and parsed. These\n+            lines MUST occur in a specific order, and with a specific syntax, as defined in <xref target=\"RFC4566\"/>, Section 5. </t>\n+          <t>For non-attribute (a=) lines, their sequencing and syntax are checked,\n+            as mentioned above, but all values MUST be discarded. For example,\n+            because the use of ICE is mandatory, the c= line is superfluous and its value MUST be discarded; similarly, because session-level bandwidth is ambiguous when multiple media streams are present, a b= line at session\n+            level is not useful and its value MUST be discarded.</t>\n+          <t>Specific processing is applied for the following session-level\n+            attribute (a=) lines:\n+            <list style=\"symbols\">\n+              <t>Any a=group lines are parsed as specified in [TBD], and, if\n+                valid, the group's semantics and mids are stored. [OPEN ISSUE: is\n+                validation, e.g. of valid mids, done at this stage?]</t>\n+              <t>If present, an a=ice-ufrag line is parsed as specified in\n+                [TBD], and, if valid, the ufrag value is stored.</t>\n+              <t>If present, an a=ice-pwd line is parsed as specified in\n+                [TBD], and, if valid, the pwd value is stored.</t>\n+              <t>If present, an a=ice-lite line is parsed as specified in\n+                [TBD], and, if valid, a value indicating the presence of ice-lite\n+                is stored.</t>\n+              <t>If present, an a=ice-options is parsed as specified in\n+                [TBD], and, if valid, the set of specified options is stored.</t>\n+              <t>If present, any a=fingerprint lines are parsed as specified in\n+                [TBD], and, if valid, the set of fingerprint and algorithm\n+                values is stored.</t>\n+              <t>If present, any a=setup attribute is parsed as specified in\n+                [TBD], and, if valid, the value is stored.</t>\n+              <t>TODO: msid-semantic and related values</t>\n+            </list>\n+            Once all the session-level lines have been parsed, processing\n+            continues with the lines in media sections.\n+          </t>\n+        </section>\n+        <section title=\"Media Section Parsing\">\n+          <t>Like the session-level lines, the media session lines MUST occur\n+            in the specific order and with the specific syntax defined in\n+            <xref target=\"RFC4566\"/>, Section 5.</t>\n+          <t>Parse m=:\n+            <list style=\"symbols\">\n+              <t>Check port (i.e. rejected), read protocol</t>\n+              <t>Read codec ordering</t>\n+            </list>\n+          </t>\n+          <t>Ignore c=</t>\n+          <t>Parse b= as max send bandwidth</t>\n+          <t>Parse the following a=:\n+            <list style=\"symbols\">\n+              <t>Read mid as id for desc</t>\n+              <t>Read ICE ufrag/pwd and save</t>\n+              <t>Read ICE options</t>\n+              <t>Read fingerprint and setup</t>\n+              <t>Handle RTP attributes:\n+                <list style=\"symbols\">\n+                  <t>Read fmtp attributes</t>\n+                  <t>Read ssrc-group attributes</t>\n+                  <t>Read ssrc attributes</t>\n+                  <t>Read ptime, maxptime</t>\n+                  <t>Read header extensions</t>\n+                  <t>Read rtcp-fb</t>\n+                  <t>Read direction attribs (recvonly, etc)</t>\n+                  <t>Read rtcp-mux</t>\n+                </list>\n+              </t>\n+              <t>Handle SCTP attributes:\n+                <list style=\"symbols\">\n+                  <t>Read sctpmap/port attributes</t>\n+                </list>\n+              </t>\n+            </list>\n+          </t>\n+        </section>\n+        <section title=\"Semantics Verification\">\n+          <t>Assuming parsing completes successfully, the parsed description is\n+            then evaluated to ensure internal consistency as well as proper support\n+            for mandatory features. Specifically, the following checks are\n+            performed:\n+              <list style=\"symbols\">\n+                <t>For each m= section, valid values for each of the\n+                mandatory-to-use features enumerated in <xref target=\"sec.usage-requirements\"/> MUST be present. These values MAY either be present at the\n+                media level, or inherited from the session level.\n+                  <list style=\"symbols\">\n+                    <t>ICE ufrag and password values</t>\n+                    <t>DTLS fingerprint and setup values</t>\n+                  </list>\n+                </t>\n+                <t>If a BUNDLE group is present, the referenced m= sections MUST\n+                exist. If multiple BUNDLE groups exist, each referenced m=\n+                section MUST only exist in a single BUNDLE group. [TODO: should this apply to all groups?]</t>\n+              </list>\n+          </t>\n+          <t>If this session description is of type \"pranswer\" or \"answer\", the\n+          following additional checks are applied:\n+            <list style=\"symbols\">\n+              <t>The number of m= sections MUST exactly match the number of m=\n+              sections in the associated offer.</t>\n+              <t>For each m= section, the protocol value MUST exactly match the\n+              protocol value in the corresponding m= section in the associated\n+              offer.</t>\n+            </list>\n+          </t>\n+        </section>\n+      </section>\n \n-      <section title=\"Applying a Remote Description\" anchor=\"sec.applying-a-remote-descrip\"></section>\n+      <section title=\"Applying a Local Description\" anchor=\"sec.applying-a-local-desc\">\n+       <t>The following steps are performed at the media engine level to apply a local\n+       description. For each m= section, do the following: [TODO - expand]\n+         For all m= sections:\n+         <list style=\"symbols\">\n+          <t>If ufrag/pwd changed, trigger ICE restart</t>","path":"draft-ietf-rtcweb-jsep.xml","position":183,"original_position":183,"commit_id":"e62562dbae26f4b2941e91ebd42813039b603a82","original_commit_id":"e62562dbae26f4b2941e91ebd42813039b603a82","user":{"login":"ekr","id":1111457,"avatar_url":"https://avatars.githubusercontent.com/u/1111457?v=3","gravatar_id":"","url":"https://api.github.com/users/ekr","html_url":"https://github.com/ekr","followers_url":"https://api.github.com/users/ekr/followers","following_url":"https://api.github.com/users/ekr/following{/other_user}","gists_url":"https://api.github.com/users/ekr/gists{/gist_id}","starred_url":"https://api.github.com/users/ekr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekr/subscriptions","organizations_url":"https://api.github.com/users/ekr/orgs","repos_url":"https://api.github.com/users/ekr/repos","events_url":"https://api.github.com/users/ekr/events{/privacy}","received_events_url":"https://api.github.com/users/ekr/received_events","type":"User","site_admin":false},"body":"Since you can't produce your own values for this, you need to validate that these are consistent with what you produced.","created_at":"2015-03-08T01:49:54Z","updated_at":"2015-03-08T01:49:54Z","html_url":"https://github.com/rtcweb-wg/jsep/pull/113#discussion_r26001483","pull_request_url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113","_links":{"self":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/comments/26001483"},"html":{"href":"https://github.com/rtcweb-wg/jsep/pull/113#discussion_r26001483"},"pull_request":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113"}}},"pull_request":{"url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113","id":30712769,"html_url":"https://github.com/rtcweb-wg/jsep/pull/113","diff_url":"https://github.com/rtcweb-wg/jsep/pull/113.diff","patch_url":"https://github.com/rtcweb-wg/jsep/pull/113.patch","issue_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues/113","number":113,"state":"open","locked":false,"title":"Start of setLD/RD","user":{"login":"juberti","id":1821693,"avatar_url":"https://avatars.githubusercontent.com/u/1821693?v=3","gravatar_id":"","url":"https://api.github.com/users/juberti","html_url":"https://github.com/juberti","followers_url":"https://api.github.com/users/juberti/followers","following_url":"https://api.github.com/users/juberti/following{/other_user}","gists_url":"https://api.github.com/users/juberti/gists{/gist_id}","starred_url":"https://api.github.com/users/juberti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juberti/subscriptions","organizations_url":"https://api.github.com/users/juberti/orgs","repos_url":"https://api.github.com/users/juberti/repos","events_url":"https://api.github.com/users/juberti/events{/privacy}","received_events_url":"https://api.github.com/users/juberti/received_events","type":"User","site_admin":false},"body":"@ekr @fluffy PTAL and let me know if you think this is on the right track. If so, I will flesh out in whatever time I have on Sunday.","created_at":"2015-03-08T01:21:45Z","updated_at":"2015-03-08T01:49:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4a90b8eb33359851ad7c39cdffcc03781f26e521","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113/commits","review_comments_url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113/comments","review_comment_url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues/113/comments","statuses_url":"https://api.github.com/repos/rtcweb-wg/jsep/statuses/e62562dbae26f4b2941e91ebd42813039b603a82","head":{"label":"rtcweb-wg:setXD3","ref":"setXD3","sha":"e62562dbae26f4b2941e91ebd42813039b603a82","user":{"login":"rtcweb-wg","id":7396946,"avatar_url":"https://avatars.githubusercontent.com/u/7396946?v=3","gravatar_id":"","url":"https://api.github.com/users/rtcweb-wg","html_url":"https://github.com/rtcweb-wg","followers_url":"https://api.github.com/users/rtcweb-wg/followers","following_url":"https://api.github.com/users/rtcweb-wg/following{/other_user}","gists_url":"https://api.github.com/users/rtcweb-wg/gists{/gist_id}","starred_url":"https://api.github.com/users/rtcweb-wg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtcweb-wg/subscriptions","organizations_url":"https://api.github.com/users/rtcweb-wg/orgs","repos_url":"https://api.github.com/users/rtcweb-wg/repos","events_url":"https://api.github.com/users/rtcweb-wg/events{/privacy}","received_events_url":"https://api.github.com/users/rtcweb-wg/received_events","type":"Organization","site_admin":false},"repo":{"id":19118011,"name":"jsep","full_name":"rtcweb-wg/jsep","owner":{"login":"rtcweb-wg","id":7396946,"avatar_url":"https://avatars.githubusercontent.com/u/7396946?v=3","gravatar_id":"","url":"https://api.github.com/users/rtcweb-wg","html_url":"https://github.com/rtcweb-wg","followers_url":"https://api.github.com/users/rtcweb-wg/followers","following_url":"https://api.github.com/users/rtcweb-wg/following{/other_user}","gists_url":"https://api.github.com/users/rtcweb-wg/gists{/gist_id}","starred_url":"https://api.github.com/users/rtcweb-wg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtcweb-wg/subscriptions","organizations_url":"https://api.github.com/users/rtcweb-wg/orgs","repos_url":"https://api.github.com/users/rtcweb-wg/repos","events_url":"https://api.github.com/users/rtcweb-wg/events{/privacy}","received_events_url":"https://api.github.com/users/rtcweb-wg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rtcweb-wg/jsep","description":"","fork":false,"url":"https://api.github.com/repos/rtcweb-wg/jsep","forks_url":"https://api.github.com/repos/rtcweb-wg/jsep/forks","keys_url":"https://api.github.com/repos/rtcweb-wg/jsep/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rtcweb-wg/jsep/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rtcweb-wg/jsep/teams","hooks_url":"https://api.github.com/repos/rtcweb-wg/jsep/hooks","issue_events_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues/events{/number}","events_url":"https://api.github.com/repos/rtcweb-wg/jsep/events","assignees_url":"https://api.github.com/repos/rtcweb-wg/jsep/assignees{/user}","branches_url":"https://api.github.com/repos/rtcweb-wg/jsep/branches{/branch}","tags_url":"https://api.github.com/repos/rtcweb-wg/jsep/tags","blobs_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/refs{/sha}","trees_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rtcweb-wg/jsep/statuses/{sha}","languages_url":"https://api.github.com/repos/rtcweb-wg/jsep/languages","stargazers_url":"https://api.github.com/repos/rtcweb-wg/jsep/stargazers","contributors_url":"https://api.github.com/repos/rtcweb-wg/jsep/contributors","subscribers_url":"https://api.github.com/repos/rtcweb-wg/jsep/subscribers","subscription_url":"https://api.github.com/repos/rtcweb-wg/jsep/subscription","commits_url":"https://api.github.com/repos/rtcweb-wg/jsep/commits{/sha}","git_commits_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/commits{/sha}","comments_url":"https://api.github.com/repos/rtcweb-wg/jsep/comments{/number}","issue_comment_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues/comments{/number}","contents_url":"https://api.github.com/repos/rtcweb-wg/jsep/contents/{+path}","compare_url":"https://api.github.com/repos/rtcweb-wg/jsep/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rtcweb-wg/jsep/merges","archive_url":"https://api.github.com/repos/rtcweb-wg/jsep/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rtcweb-wg/jsep/downloads","issues_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues{/number}","pulls_url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls{/number}","milestones_url":"https://api.github.com/repos/rtcweb-wg/jsep/milestones{/number}","notifications_url":"https://api.github.com/repos/rtcweb-wg/jsep/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rtcweb-wg/jsep/labels{/name}","releases_url":"https://api.github.com/repos/rtcweb-wg/jsep/releases{/id}","created_at":"2014-04-24T17:46:05Z","updated_at":"2015-03-05T00:49:03Z","pushed_at":"2015-03-08T01:21:51Z","git_url":"git://github.com/rtcweb-wg/jsep.git","ssh_url":"git@github.com:rtcweb-wg/jsep.git","clone_url":"https://github.com/rtcweb-wg/jsep.git","svn_url":"https://github.com/rtcweb-wg/jsep","homepage":null,"size":2048,"stargazers_count":10,"watchers_count":10,"language":"Makefile","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"open_issues_count":24,"forks":8,"open_issues":24,"watchers":10,"default_branch":"master"}},"base":{"label":"rtcweb-wg:master","ref":"master","sha":"d6e591877a84f4f8161ef37b5595ec360b359f3d","user":{"login":"rtcweb-wg","id":7396946,"avatar_url":"https://avatars.githubusercontent.com/u/7396946?v=3","gravatar_id":"","url":"https://api.github.com/users/rtcweb-wg","html_url":"https://github.com/rtcweb-wg","followers_url":"https://api.github.com/users/rtcweb-wg/followers","following_url":"https://api.github.com/users/rtcweb-wg/following{/other_user}","gists_url":"https://api.github.com/users/rtcweb-wg/gists{/gist_id}","starred_url":"https://api.github.com/users/rtcweb-wg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtcweb-wg/subscriptions","organizations_url":"https://api.github.com/users/rtcweb-wg/orgs","repos_url":"https://api.github.com/users/rtcweb-wg/repos","events_url":"https://api.github.com/users/rtcweb-wg/events{/privacy}","received_events_url":"https://api.github.com/users/rtcweb-wg/received_events","type":"Organization","site_admin":false},"repo":{"id":19118011,"name":"jsep","full_name":"rtcweb-wg/jsep","owner":{"login":"rtcweb-wg","id":7396946,"avatar_url":"https://avatars.githubusercontent.com/u/7396946?v=3","gravatar_id":"","url":"https://api.github.com/users/rtcweb-wg","html_url":"https://github.com/rtcweb-wg","followers_url":"https://api.github.com/users/rtcweb-wg/followers","following_url":"https://api.github.com/users/rtcweb-wg/following{/other_user}","gists_url":"https://api.github.com/users/rtcweb-wg/gists{/gist_id}","starred_url":"https://api.github.com/users/rtcweb-wg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtcweb-wg/subscriptions","organizations_url":"https://api.github.com/users/rtcweb-wg/orgs","repos_url":"https://api.github.com/users/rtcweb-wg/repos","events_url":"https://api.github.com/users/rtcweb-wg/events{/privacy}","received_events_url":"https://api.github.com/users/rtcweb-wg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rtcweb-wg/jsep","description":"","fork":false,"url":"https://api.github.com/repos/rtcweb-wg/jsep","forks_url":"https://api.github.com/repos/rtcweb-wg/jsep/forks","keys_url":"https://api.github.com/repos/rtcweb-wg/jsep/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rtcweb-wg/jsep/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rtcweb-wg/jsep/teams","hooks_url":"https://api.github.com/repos/rtcweb-wg/jsep/hooks","issue_events_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues/events{/number}","events_url":"https://api.github.com/repos/rtcweb-wg/jsep/events","assignees_url":"https://api.github.com/repos/rtcweb-wg/jsep/assignees{/user}","branches_url":"https://api.github.com/repos/rtcweb-wg/jsep/branches{/branch}","tags_url":"https://api.github.com/repos/rtcweb-wg/jsep/tags","blobs_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/refs{/sha}","trees_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rtcweb-wg/jsep/statuses/{sha}","languages_url":"https://api.github.com/repos/rtcweb-wg/jsep/languages","stargazers_url":"https://api.github.com/repos/rtcweb-wg/jsep/stargazers","contributors_url":"https://api.github.com/repos/rtcweb-wg/jsep/contributors","subscribers_url":"https://api.github.com/repos/rtcweb-wg/jsep/subscribers","subscription_url":"https://api.github.com/repos/rtcweb-wg/jsep/subscription","commits_url":"https://api.github.com/repos/rtcweb-wg/jsep/commits{/sha}","git_commits_url":"https://api.github.com/repos/rtcweb-wg/jsep/git/commits{/sha}","comments_url":"https://api.github.com/repos/rtcweb-wg/jsep/comments{/number}","issue_comment_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues/comments{/number}","contents_url":"https://api.github.com/repos/rtcweb-wg/jsep/contents/{+path}","compare_url":"https://api.github.com/repos/rtcweb-wg/jsep/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rtcweb-wg/jsep/merges","archive_url":"https://api.github.com/repos/rtcweb-wg/jsep/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rtcweb-wg/jsep/downloads","issues_url":"https://api.github.com/repos/rtcweb-wg/jsep/issues{/number}","pulls_url":"https://api.github.com/repos/rtcweb-wg/jsep/pulls{/number}","milestones_url":"https://api.github.com/repos/rtcweb-wg/jsep/milestones{/number}","notifications_url":"https://api.github.com/repos/rtcweb-wg/jsep/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rtcweb-wg/jsep/labels{/name}","releases_url":"https://api.github.com/repos/rtcweb-wg/jsep/releases{/id}","created_at":"2014-04-24T17:46:05Z","updated_at":"2015-03-05T00:49:03Z","pushed_at":"2015-03-08T01:21:51Z","git_url":"git://github.com/rtcweb-wg/jsep.git","ssh_url":"git@github.com:rtcweb-wg/jsep.git","clone_url":"https://github.com/rtcweb-wg/jsep.git","svn_url":"https://github.com/rtcweb-wg/jsep","homepage":null,"size":2048,"stargazers_count":10,"watchers_count":10,"language":"Makefile","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"open_issues_count":24,"forks":8,"open_issues":24,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113"},"html":{"href":"https://github.com/rtcweb-wg/jsep/pull/113"},"issue":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/issues/113"},"comments":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/issues/113/comments"},"review_comments":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113/comments"},"review_comment":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/pulls/113/commits"},"statuses":{"href":"https://api.github.com/repos/rtcweb-wg/jsep/statuses/e62562dbae26f4b2941e91ebd42813039b603a82"}}}}