{"action":"created","comment":{"url":"https://api.github.com/repos/multiformats/multicodec/pulls/comments/84662788","pull_request_review_id":5425225,"id":84662788,"diff_hunk":"@@ -21,136 +20,157 @@\n \n ## Motivation\n \n-Multicodecs are self-describing protocol/encoding streams. (Note that a file is a stream). It's designed to address the perennial problem:\n+[Multistreams](https://github.com/multiformats/multistream) are self-describing protocol/encoding streams. Multicodec uses an agreed-upon \"protocol table\". It is designed for use in short strings, such as keys or identifiers (i.e [CID](https://github.com/ipld/cid)).\n \n-> I have a bitstring, what codec is the data coded with!?\n+## Protocol Description - How does the protocol work?\n \n-Instead of arguing about which data serialization library is the best, let's just pick the simplest one now, and build _upgradability_ into the system. Choices are never _forever_. Eventually all systems are changed. So, embrace this fact of reality, and build change into your system now.\n+`multicodec` is a _self-describing multiformat_, it wraps other formats with a tiny bit of self-description. A multicodec identifier is both a varint and the code identifying the following data, this means that the most significant bit of every multicodec code is reserved to signal the continuation.\n \n-Multicodec frees you from the tyranny of past mistakes. Instead of trying to figure it all out beforehand, or continue using something that we can all agree no longer fits, why not allow the system to _evolve_ and _grow_ with the use cases of today, not yesterday.\n-\n-To decode an incoming stream of data, a program must either (a) know the format of the data a priori, or (b) learn the format from the data itself. (a) precludes running protocols that may provide one of many kinds of formats without prior agreement on which. multistream makes (b) neat using self-description.\n-\n-Moreover, this self-description allows straightforward layering of protocols without having to implement support in the parent (or encapsulating) one.\n-\n-## How does it work? - Protocol Description\n-\n-`multicodec` is a _self-describing multiformat_, it wraps other formats with a tiny bit of self-description:\n+This way, a chunk of data identified by multicodec will look like this:\n \n ```sh\n-<multicodec-header><encoded-data>\n-# or\n-<varint-len><code>\\n<encoded-data>\n-```\n-\n-For example, let's encode a json doc:\n-\n-```node\n-> // encode some json\n-> var str = JSON.stringify({\"hello\":\"world\"})\n-> var buf = multicodec.encode('json', str) // prepends multistream.header('/json')\n-> buf\n-<Buffer 06 2f 6a 73 6f 6e 2f 7b 22 68 65 6c 6c 6f 22 3a 22 77 6f 72 6c 64 22 7d>\n-> buf.toString('hex')\n-062f6a736f6e2f7b2268656c6c6f223a22776f726c64227d\n-> // decode, and find out what is in buf\n-> multicodec.decode(buf)\n-{ \"codec\": \"json\", \"data\": '{\"hello\": \"world\"}' }\n+<multicodec-varint><encoded-data>\n+# To reduce the cognitive load, we sometimes might write the same line as:\n+<mcp><data>\n ```\n \n-So, `buf` is:\n+Another useful scenario is when using the multicodec-packed as part of the keys to access data, example:\n \n ```\n-hex:   062f6a736f6e2f7b2268656c6c6f223a22776f726c64227d\n-ascii: json/\\n{\"hello\":\"world\"}\n-```\n-\n-The more you know! Let's try it again, this time with protobuf:\n+# suppose we have a value and a key to retrieve it\n+\"<key>\" -> <value>\n \n+# we can use multicodec-packed with the key to know what codec the value is in\n+\"<mcp><key>\" -> <value>\n ```\n-cat proto.c\n-```\n-\n-See also: [multicodec-packed](./multicodec-packed.md).\n-\n-## Prefix examples\n-\n-\n-| prefix         | codec | desc        | type  | [packed encoding](https://github.com/multiformats/multicodec/blob/master/multicodec-packed.md)|\n-|----------------|-------|-------------|-------|---------------------------------------|\n-|0x052f62696e2f  | /bin/ |raw binary   |binary | 0x00 |\n-|0x042f62322f    | /b2/  |ascii base2  |binary | | \n-|0x052f6231362f  | /b16/ |ascii base16 |hex    | |\n-|0x052f6233322f  | /b32/ |ascii base32 |       | | \n-|0x052f6235382f  | /b58/ |ascii base58 |       | |\n-|0x052f6236342f  | /b64/ |ascii base64 |       | |\n-|0x062f6a736f6e2f  |/json/ |             |json   | |\n-|0x062f63626f722f  |/cbor/ |             |json   | |\n-|0x062f62736f6e2f  |/bson/ |             |json   | |\n-|0x072f626a736f6e2f|/bjson/|             |json   | |\n-|0x082f75626a736f6e2f| /ubjson/|         |json   | |\n-|0x182f6d756c7469636f6465632f | /multicodec/ | | multiformat | 0x40 |\n-|0x162f6d756c7469686173682f   | /multihash/  | | multiformat | 0x41 |\n-|0x162f6d756c7469616464722f   | /multiaddr/  | | multiformat | 0x42 |\n-|0x0a2f70726f746f6275662f |/protobuf/ | Protocol Buffers |protobuf| |\n-|0x072f6361706e702f       | /capnp/   | Cap-n-Proto      |protobuf| |\n-|0x092f666c61746275662f   |/flatbuf/  | FlatBuffers      |protobuf| |\n-|0x052f7461722f         |/tar/      |                 | archive | |\n-|0x052f7a69702f         |/zip/      |                 | archive | |\n-|0x052f706e672f         | /png/     |                 | archive | |\n-|0x052f726c702f         | /rlp/     | recursive length prefix | ethereum |  0x60 |\n-## The protocol path\n-\n-`multicodec` allows us to specify different protocols in a universal namespace, that way being able to recognize, multiplex, and embed them easily. We use the notion of a `path` instead of an `id` because it is meant to be a Unix-friendly URI.\n-\n-A good path name should be decipherable -- meaning that if some machine or developer -- who has no idea about your protocol -- encounters the path string, they should be able to look it up and resolve how to use it.\n-\n-An example of a good path name is:\n \n-```\n-/bittorrent.org/1.0\n-```\n-\n-An example of a _great_ path name is:\n-\n-```\n-/ipfs/Qmaa4Rw81a3a1VEx4LxB7HADUAXvZFhCoRdBzsMZyZmqHD/ipfs.protocol\n-/http/w3id.org/ipfs/ipfs-1.1.0.json\n+It is worth noting that multicodec-packed works very well in conjunction with [multihash](https://github.com/multiformats/multihash) and [multiaddr](https://github.com/multiformats/multiaddr), as you can prefix those values with a multicodec-packed to tell what they are.\n+\n+## Multicodec-Packed Protocol Tables\n+\n+Multicodecuses \"protocol tables\" to agree upon the mapping from one multicodec code (a single varint). These tables can be application specific, though -- like [with](https://github.com/multiformats/multihash) [other](https://github.com/multiformats/multibase) [multiformats](https://github.com/multiformats/multiaddr) -- we will keep a globally agreed upon table with common protocols and formats.\n+\n+## Multicodec table\n+\n+```csv\n+codec,              description,              code\n+\n+miscelaneous\n+bin,                raw binary,               0x00\n+\n+bases encodings\n+base1,              unary,                    0x01\n+base2,              binary (0 and 1),         0x00\n+base8,              octal,                    0x07\n+base10,             decimal,                  0x09\n+base16,             hexadecimal,              0x\n+base32,             rfc4648,                  0x\n+base32hex,          rfc4648,                  0x\n+base58flickr,       base58 flicker,           0x\n+base58btc,          base58 bitcoin,           0x\n+base64,             rfc4648,                  0x\n+base64url,          rfc4648,                  0x\n+\n+serialization formats\n+json,               ,                         0x\n+cbor,               ,                         0x\n+bson,               ,                         0x\n+bjson,              ,                         0x\n+ubjson,             ,                         0x\n+protobuf,           Protocol Buffers,         0x\n+capnp,              Cap-n-Proto,              0x\n+flatbuf,            FlatBuffers,              0x\n+rlp,                recursive length prefix,  0x60\n+\n+multiformats\n+multicodec,         ,                         0x30\n+multihash,          ,                         0x31\n+multiaddr,          ,                         0x32\n+multibase,          ,                         0x33\n+\n+multihashes\n+sha1,               ,                         0x11\n+sha2-256,           ,                         0x12\n+sha2-512,           ,                         0x13\n+sha3-224,           ,                         0x17\n+sha3-256,           ,                         0x16\n+sha3-384,           ,                         0x15\n+sha3-512,           ,                         0x14\n+shake-128,          ,                         0x18\n+shake-256,          ,                         0x19\n+blake2b,            ,                         0x40\n+blake2s,            ,                         0x41\n+reserved for apps,  appl specific range,      0x4000-0x40f\n+\n+multiaddrs\n+ip4,                ,                         0x04\n+ip6,                ,                         0x29\n+tcp,                ,                         0x06\n+udp,                ,                         0x11\n+dccp,               ,                         0x21\n+sctp,               ,                         0x84\n+udt,                ,                         0x012D\n+utp,                ,                         0x012E\n+ipfs,               ,                         0x2A\n+http,               ,                         0x01E0\n+https,              ,                         0x01BB\n+ws,                 ,                         0x01DD\n+onion,              ,                         0x01BC\n+\n+archiving formats\n+tar,                ,                         0x\n+zip,                ,                         0x\n+\n+image formats\n+png,                ,                         0x\n+jpg,                ,                         0x\n+\n+video formats\n+mp4,                ,                         0x\n+mkv,                ,                         0x\n+\n+blockchain formats\n+\n+VCS formats\n+\n+IPLD formats\n+dag-pb,             MerkleDAG protobuf,       0x70\n+dag-cbor,           MerkleDAG cbor,           0x71\n+eth-block,          Ethereum Block (RLP),     0x90","path":"README.md","position":222,"original_position":222,"commit_id":"34edfd76fb565e813b7afd05af55f965aec21d04","original_commit_id":"34edfd76fb565e813b7afd05af55f965aec21d04","user":{"login":"diasdavid","id":1211152,"avatar_url":"https://avatars.githubusercontent.com/u/1211152?v=3","gravatar_id":"","url":"https://api.github.com/users/diasdavid","html_url":"https://github.com/diasdavid","followers_url":"https://api.github.com/users/diasdavid/followers","following_url":"https://api.github.com/users/diasdavid/following{/other_user}","gists_url":"https://api.github.com/users/diasdavid/gists{/gist_id}","starred_url":"https://api.github.com/users/diasdavid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/diasdavid/subscriptions","organizations_url":"https://api.github.com/users/diasdavid/orgs","repos_url":"https://api.github.com/users/diasdavid/repos","events_url":"https://api.github.com/users/diasdavid/events{/privacy}","received_events_url":"https://api.github.com/users/diasdavid/received_events","type":"User","site_admin":false},"body":"Transport multicodecs are 'more okay' because they get transferred less, in the other hand, format multicodecs get transferred every time a block is transferred, so a byte actually means a lot.\r\n\r\n","created_at":"2016-10-24T10:57:05Z","updated_at":"2016-10-24T10:57:05Z","html_url":"https://github.com/multiformats/multicodec/pull/16#discussion_r84662788","pull_request_url":"https://api.github.com/repos/multiformats/multicodec/pulls/16","_links":{"self":{"href":"https://api.github.com/repos/multiformats/multicodec/pulls/comments/84662788"},"html":{"href":"https://github.com/multiformats/multicodec/pull/16#discussion_r84662788"},"pull_request":{"href":"https://api.github.com/repos/multiformats/multicodec/pulls/16"}}},"pull_request":{"url":"https://api.github.com/repos/multiformats/multicodec/pulls/16","id":86643014,"html_url":"https://github.com/multiformats/multicodec/pull/16","diff_url":"https://github.com/multiformats/multicodec/pull/16.diff","patch_url":"https://github.com/multiformats/multicodec/pull/16.patch","issue_url":"https://api.github.com/repos/multiformats/multicodec/issues/16","number":16,"state":"open","locked":false,"title":"The unified multicodecs theory","user":{"login":"diasdavid","id":1211152,"avatar_url":"https://avatars.githubusercontent.com/u/1211152?v=3","gravatar_id":"","url":"https://api.github.com/users/diasdavid","html_url":"https://github.com/diasdavid","followers_url":"https://api.github.com/users/diasdavid/followers","following_url":"https://api.github.com/users/diasdavid/following{/other_user}","gists_url":"https://api.github.com/users/diasdavid/gists{/gist_id}","starred_url":"https://api.github.com/users/diasdavid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/diasdavid/subscriptions","organizations_url":"https://api.github.com/users/diasdavid/orgs","repos_url":"https://api.github.com/users/diasdavid/repos","events_url":"https://api.github.com/users/diasdavid/events{/privacy}","received_events_url":"https://api.github.com/users/diasdavid/received_events","type":"User","site_admin":false},"body":"# The unified multicodecs theory. \r\n\r\n> The theory that unites all the self-described multiformats for a beautifully colored 🚲🏚\r\n\r\n**tl;dr;** This PR updates the multicodecs table to incorporate all the multiformats binary packed tables (multihash and multiaddr) into one.\r\n\r\nWith the introduction of [CIDv1](https://github.com/ipfs/specs/issues/130), we needed a way to describe several types of data(multicodec like) in a way that a program could parse(self described), that didn't increase the data size by much, and so, [multicodec-packed](https://github.com/multiformats/multicodec/blob/master/multicodec-packed.md) was born.\r\n\r\nOne of the requirements for multicodec-packed is that it needed to be as extensible as the normal multicodec, so that applications developers and protocol engineers could add their own multicodec tables (dictionaries) of their own data structures.\r\n\r\nOnce we added this in, we realized how multihash, multiaddr or even multibase are just users of multicodec-packed with their own custom tables already.\r\n\r\nGiven this, we found that it is extremely convinient to have all of these tables converge into one, so that we can expand it overtime and avoid code clashes in table extensions.\r\n\r\nThis PR fixes some spec errors and merges the multiaddr, multihash and multibase tables in a new table with a more clear format.\r\n\r\nTODO:\r\n- [ ] Solve the clash issue (udp and sha1 share the same code)\r\n- [x] Get the table reviewed by @jbenet \r\n- [ ] ~~Complete the table with the hex values (to be done before the merge)~~\r\n\r\nFuture work:\r\n- [ ] Bring in all the mimetypes and give them an packed code","created_at":"2016-09-25T07:46:39Z","updated_at":"2016-10-24T10:57:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"781d3d11127a3daaae27e0d480080f716ff79216","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/multiformats/multicodec/pulls/16/commits","review_comments_url":"https://api.github.com/repos/multiformats/multicodec/pulls/16/comments","review_comment_url":"https://api.github.com/repos/multiformats/multicodec/pulls/comments{/number}","comments_url":"https://api.github.com/repos/multiformats/multicodec/issues/16/comments","statuses_url":"https://api.github.com/repos/multiformats/multicodec/statuses/34edfd76fb565e813b7afd05af55f965aec21d04","head":{"label":"multiformats:spec/update","ref":"spec/update","sha":"34edfd76fb565e813b7afd05af55f965aec21d04","user":{"login":"multiformats","id":20296538,"avatar_url":"https://avatars.githubusercontent.com/u/20296538?v=3","gravatar_id":"","url":"https://api.github.com/users/multiformats","html_url":"https://github.com/multiformats","followers_url":"https://api.github.com/users/multiformats/followers","following_url":"https://api.github.com/users/multiformats/following{/other_user}","gists_url":"https://api.github.com/users/multiformats/gists{/gist_id}","starred_url":"https://api.github.com/users/multiformats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/multiformats/subscriptions","organizations_url":"https://api.github.com/users/multiformats/orgs","repos_url":"https://api.github.com/users/multiformats/repos","events_url":"https://api.github.com/users/multiformats/events{/privacy}","received_events_url":"https://api.github.com/users/multiformats/received_events","type":"Organization","site_admin":false},"repo":{"id":41270223,"name":"multicodec","full_name":"multiformats/multicodec","owner":{"login":"multiformats","id":20296538,"avatar_url":"https://avatars.githubusercontent.com/u/20296538?v=3","gravatar_id":"","url":"https://api.github.com/users/multiformats","html_url":"https://github.com/multiformats","followers_url":"https://api.github.com/users/multiformats/followers","following_url":"https://api.github.com/users/multiformats/following{/other_user}","gists_url":"https://api.github.com/users/multiformats/gists{/gist_id}","starred_url":"https://api.github.com/users/multiformats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/multiformats/subscriptions","organizations_url":"https://api.github.com/users/multiformats/orgs","repos_url":"https://api.github.com/users/multiformats/repos","events_url":"https://api.github.com/users/multiformats/events{/privacy}","received_events_url":"https://api.github.com/users/multiformats/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/multiformats/multicodec","description":"multicodec - self-describing codings","fork":false,"url":"https://api.github.com/repos/multiformats/multicodec","forks_url":"https://api.github.com/repos/multiformats/multicodec/forks","keys_url":"https://api.github.com/repos/multiformats/multicodec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/multiformats/multicodec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/multiformats/multicodec/teams","hooks_url":"https://api.github.com/repos/multiformats/multicodec/hooks","issue_events_url":"https://api.github.com/repos/multiformats/multicodec/issues/events{/number}","events_url":"https://api.github.com/repos/multiformats/multicodec/events","assignees_url":"https://api.github.com/repos/multiformats/multicodec/assignees{/user}","branches_url":"https://api.github.com/repos/multiformats/multicodec/branches{/branch}","tags_url":"https://api.github.com/repos/multiformats/multicodec/tags","blobs_url":"https://api.github.com/repos/multiformats/multicodec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/multiformats/multicodec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/multiformats/multicodec/git/refs{/sha}","trees_url":"https://api.github.com/repos/multiformats/multicodec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/multiformats/multicodec/statuses/{sha}","languages_url":"https://api.github.com/repos/multiformats/multicodec/languages","stargazers_url":"https://api.github.com/repos/multiformats/multicodec/stargazers","contributors_url":"https://api.github.com/repos/multiformats/multicodec/contributors","subscribers_url":"https://api.github.com/repos/multiformats/multicodec/subscribers","subscription_url":"https://api.github.com/repos/multiformats/multicodec/subscription","commits_url":"https://api.github.com/repos/multiformats/multicodec/commits{/sha}","git_commits_url":"https://api.github.com/repos/multiformats/multicodec/git/commits{/sha}","comments_url":"https://api.github.com/repos/multiformats/multicodec/comments{/number}","issue_comment_url":"https://api.github.com/repos/multiformats/multicodec/issues/comments{/number}","contents_url":"https://api.github.com/repos/multiformats/multicodec/contents/{+path}","compare_url":"https://api.github.com/repos/multiformats/multicodec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/multiformats/multicodec/merges","archive_url":"https://api.github.com/repos/multiformats/multicodec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/multiformats/multicodec/downloads","issues_url":"https://api.github.com/repos/multiformats/multicodec/issues{/number}","pulls_url":"https://api.github.com/repos/multiformats/multicodec/pulls{/number}","milestones_url":"https://api.github.com/repos/multiformats/multicodec/milestones{/number}","notifications_url":"https://api.github.com/repos/multiformats/multicodec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/multiformats/multicodec/labels{/name}","releases_url":"https://api.github.com/repos/multiformats/multicodec/releases{/id}","deployments_url":"https://api.github.com/repos/multiformats/multicodec/deployments","created_at":"2015-08-23T22:35:01Z","updated_at":"2016-09-25T07:09:25Z","pushed_at":"2016-10-20T22:29:01Z","git_url":"git://github.com/multiformats/multicodec.git","ssh_url":"git@github.com:multiformats/multicodec.git","clone_url":"https://github.com/multiformats/multicodec.git","svn_url":"https://github.com/multiformats/multicodec","homepage":"","size":25,"stargazers_count":20,"watchers_count":20,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":7,"forks":11,"open_issues":7,"watchers":20,"default_branch":"master"}},"base":{"label":"multiformats:master","ref":"master","sha":"9246f572949996b994d8067585741defe74e6f08","user":{"login":"multiformats","id":20296538,"avatar_url":"https://avatars.githubusercontent.com/u/20296538?v=3","gravatar_id":"","url":"https://api.github.com/users/multiformats","html_url":"https://github.com/multiformats","followers_url":"https://api.github.com/users/multiformats/followers","following_url":"https://api.github.com/users/multiformats/following{/other_user}","gists_url":"https://api.github.com/users/multiformats/gists{/gist_id}","starred_url":"https://api.github.com/users/multiformats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/multiformats/subscriptions","organizations_url":"https://api.github.com/users/multiformats/orgs","repos_url":"https://api.github.com/users/multiformats/repos","events_url":"https://api.github.com/users/multiformats/events{/privacy}","received_events_url":"https://api.github.com/users/multiformats/received_events","type":"Organization","site_admin":false},"repo":{"id":41270223,"name":"multicodec","full_name":"multiformats/multicodec","owner":{"login":"multiformats","id":20296538,"avatar_url":"https://avatars.githubusercontent.com/u/20296538?v=3","gravatar_id":"","url":"https://api.github.com/users/multiformats","html_url":"https://github.com/multiformats","followers_url":"https://api.github.com/users/multiformats/followers","following_url":"https://api.github.com/users/multiformats/following{/other_user}","gists_url":"https://api.github.com/users/multiformats/gists{/gist_id}","starred_url":"https://api.github.com/users/multiformats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/multiformats/subscriptions","organizations_url":"https://api.github.com/users/multiformats/orgs","repos_url":"https://api.github.com/users/multiformats/repos","events_url":"https://api.github.com/users/multiformats/events{/privacy}","received_events_url":"https://api.github.com/users/multiformats/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/multiformats/multicodec","description":"multicodec - self-describing codings","fork":false,"url":"https://api.github.com/repos/multiformats/multicodec","forks_url":"https://api.github.com/repos/multiformats/multicodec/forks","keys_url":"https://api.github.com/repos/multiformats/multicodec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/multiformats/multicodec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/multiformats/multicodec/teams","hooks_url":"https://api.github.com/repos/multiformats/multicodec/hooks","issue_events_url":"https://api.github.com/repos/multiformats/multicodec/issues/events{/number}","events_url":"https://api.github.com/repos/multiformats/multicodec/events","assignees_url":"https://api.github.com/repos/multiformats/multicodec/assignees{/user}","branches_url":"https://api.github.com/repos/multiformats/multicodec/branches{/branch}","tags_url":"https://api.github.com/repos/multiformats/multicodec/tags","blobs_url":"https://api.github.com/repos/multiformats/multicodec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/multiformats/multicodec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/multiformats/multicodec/git/refs{/sha}","trees_url":"https://api.github.com/repos/multiformats/multicodec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/multiformats/multicodec/statuses/{sha}","languages_url":"https://api.github.com/repos/multiformats/multicodec/languages","stargazers_url":"https://api.github.com/repos/multiformats/multicodec/stargazers","contributors_url":"https://api.github.com/repos/multiformats/multicodec/contributors","subscribers_url":"https://api.github.com/repos/multiformats/multicodec/subscribers","subscription_url":"https://api.github.com/repos/multiformats/multicodec/subscription","commits_url":"https://api.github.com/repos/multiformats/multicodec/commits{/sha}","git_commits_url":"https://api.github.com/repos/multiformats/multicodec/git/commits{/sha}","comments_url":"https://api.github.com/repos/multiformats/multicodec/comments{/number}","issue_comment_url":"https://api.github.com/repos/multiformats/multicodec/issues/comments{/number}","contents_url":"https://api.github.com/repos/multiformats/multicodec/contents/{+path}","compare_url":"https://api.github.com/repos/multiformats/multicodec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/multiformats/multicodec/merges","archive_url":"https://api.github.com/repos/multiformats/multicodec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/multiformats/multicodec/downloads","issues_url":"https://api.github.com/repos/multiformats/multicodec/issues{/number}","pulls_url":"https://api.github.com/repos/multiformats/multicodec/pulls{/number}","milestones_url":"https://api.github.com/repos/multiformats/multicodec/milestones{/number}","notifications_url":"https://api.github.com/repos/multiformats/multicodec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/multiformats/multicodec/labels{/name}","releases_url":"https://api.github.com/repos/multiformats/multicodec/releases{/id}","deployments_url":"https://api.github.com/repos/multiformats/multicodec/deployments","created_at":"2015-08-23T22:35:01Z","updated_at":"2016-09-25T07:09:25Z","pushed_at":"2016-10-20T22:29:01Z","git_url":"git://github.com/multiformats/multicodec.git","ssh_url":"git@github.com:multiformats/multicodec.git","clone_url":"https://github.com/multiformats/multicodec.git","svn_url":"https://github.com/multiformats/multicodec","homepage":"","size":25,"stargazers_count":20,"watchers_count":20,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":7,"forks":11,"open_issues":7,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/multiformats/multicodec/pulls/16"},"html":{"href":"https://github.com/multiformats/multicodec/pull/16"},"issue":{"href":"https://api.github.com/repos/multiformats/multicodec/issues/16"},"comments":{"href":"https://api.github.com/repos/multiformats/multicodec/issues/16/comments"},"review_comments":{"href":"https://api.github.com/repos/multiformats/multicodec/pulls/16/comments"},"review_comment":{"href":"https://api.github.com/repos/multiformats/multicodec/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/multiformats/multicodec/pulls/16/commits"},"statuses":{"href":"https://api.github.com/repos/multiformats/multicodec/statuses/34edfd76fb565e813b7afd05af55f965aec21d04"}}}}
{"actor":{"display_login":"diasdavid"}}