{"action":"created","comment":{"url":"https://api.github.com/repos/corda/corda/pulls/comments/168783057","pull_request_review_id":97210020,"id":168783057,"diff_hunk":"@@ -1,49 +1,229 @@\n Release notes\n =============\n \n-Here are release notes for each snapshot release from M9 onwards.\n+Release 3.0\n+-----------\n+\n+Corda 3.0 is here and brings with it wire stability and a host of other exciting features that aim to enhance\n+the developer and user experience whilst providing for the long term usability of deployed Corda instances. It\n+will provide functionality to ensure anyone wishing to move to the anticipated release of R3 Corda can do so\n+seamlessly and with the assurance stateful data persisted to the vault will remain understandable between\n+newer and older nodes.\n+\n+Special Thanks\n+~~~~~~~~~~~~~~\n+\n+As ever, we are grateful to the enthusiastic user and developer community that has  grown up to surround Corda.\n+As an open project we are always grateful to take code contributions from individual users where they feel they\n+can add functionality useful to themselves and the wider community.\n+\n+As such we'd like to extend special thanks to\n+\n+  * Ben Wyeth for providing a mechanism for registering a callback on app shutdown\n+  * Tomas Tauber for adding support for running the vault service using PostgresSQL in place of the in-memory H2 service\n+    .. warning:: This is an experimental feature that has not been tested as part of our standard release testing. \n+  * Rose Molina Atienza for correcting our carelss spelling slip\n+\n+Significant Changes in 3.0\n+~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+* **Wire Stability**:\n+\n+  Wire stability brings the same promise to developers for data that API stability did for code. From this point forward Corda will\n+  remain able to always read States generated by older (version 3 and above) versions of itself. This allows system to be deployed safe in the\n+  knowledge that valuable and important information will always be accessible through upgrade and change. Practically speaking that\n+  means from this point forward upgrading all, or part, of a Corda network will not require the replaying of data, it will \"just work\".\n+  Additionally, we will support mixed networks of nodes running this and later versions of Corda and R3 Corda.\n+\n+  * **R3 Corda 3.0 compatibility**\n+\n+    The release of Corda version 3.0 will be wire compatible with the upcoming development preview and future\n+    release of R3 Corda. This will allow, for those interested, painless transfer of CorDapps, peace of mind that\n+    vault states will remain valid and understood by mixed version nodes and that networks of both Corda and R3 Corda\n+    nodes can inter-operate without issue.\n \n-Unreleased\n-----------\n-* X.509 certificates now have an extension that specifies the Corda role the certificate is used for, and the role\n+    .. note:: R3 Corda is R3's commercaially supported and enhanced version of Corda\n+\n+  * **AMQP Serialization**\n+\n+    AMQP Serialization is now enabled for both peer to peer communication and the writing of states to the vault. This\n+    change brings a serialisation format that will allow us to deliver enhanced security and wire stability. This was a key\n+    prerequisite to enabling different Corda node versions to coexist on the same network and to enable easier upgrades.\n+\n+    Details on the AMQP serialization framework can be found :ref:`here <amqp_ref>`. This provides an introduction and\n+    overview of the framework whilst more specific details on object evolution as it relates to serialization can be\n+    found in :doc:`serialization-default-evolution` and :doc:`serialization-enum-evolution` respectively.\n+\n+    .. note:: This release delivers the bulk of our transition from Kryo serialisation to AMQP serialisation. This means\n+      that many of the restrictions that were documented in previous versions of Corda are now enforced.\n+ \n+      In particular, you are advised to review the section titled :ref:`Custom Types <amqp_custom_types_ref>`.\n+      To aid with the transition, we have included support in this release for default construction and instantiation of\n+      objects with inaccessible private fields, but it is not guaranteed that this support will continue into future versions;\n+      the restrictions documented at the link above are the canonical source.\n+\n+  * **Artemis and Bridges**\n+\n+    Corda has now achieved the long stated goal of using the AMQP 1.0 open protocol standard as its communication protocol\n+    between peers. This will allow much for smoother integrations between Corda and third party brokers, languages, and messaging systems.\n+    This is also a step towards formally defining the official peer to peer messaging protocol of Corda, something required for\n+    more in-depth security audits of the Corda protocol.\n+\n+    .. warning:: The Artemis topics used for peer-to-peer communication have been changed to be more consistent with future cryptographic\n+      agility and to open up the future possibility of sharing brokers between nodes. This is a breaking wire level change\n+      as it means that nodes after this change will not be able to communicate correctly with nodes running the previous version.\n+      Also, any pending enqueued messages in the Artemis message store will not be delivered correctly to their original target.\n+      However, assuming a clean reset of the artemis data and that the nodes are consistent versions,\n+      data persisted via the AMQP serializer will be forward compatible.\n+\n+* **New Network Map Service**:\n+\n+  This release introduces the new network map architecture. The network map service has been completely redesigned and\n+  implemented to enable future increased network scalability and redundancy, reduced runtime operational overhead,\n+  support for multiple notaries, and administration of network compatibility zones (CZ) and business networks.\n+\n+  A Corda Compatibility Zone is defined as a grouping of participants and services (notaries, oracles,\n+  doorman, network map server) configured within an operational Corda network to be interoperable and compatible with\n+  each other.\n+\n+  We introduce the concept of network parameters, which will be used in a future version of Corda to specify precisely\n+  the set of constants (or ranges of constants) upon which the nodes within a network need to agree in order to be assured\n+  of seamless inter-operation. Additional security controls ensure that all network map data is now signed, thus reducing\n+  the power of the network operator to tamper with the map.\n+\n+  There is also support for a group of nodes to operate locally in a private network, which is achieved by copying the\n+  node's signed info file to other nodes' directories. We've added a bootstrapping tool to facilitate this use case.\n+\n+  Further information can be found in the :doc:`changelog`, :doc:`network-map` and :doc:`setting-up-a-corda-network` documentation.\n+\n+Other Functional Improvements\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+* **Security Auditing**\n+\n+  This version of Corda is the first to have had select components subjected to the newly established security review process\n+  by R3's internal security team. Security review will be an on-going process that seeks to provide assurance that the security model of Corda\n+  has been implemented to the highest standard, and is in-line with industry best practice.\n+\n+  As part of this security review process, an independent external security audit of the HTTP based components of the code\n+  was undertaken and whose recommendations were acted upon. The security assurance process will develop in parallel to the\n+  Corda platform and will combine code review, automated security testing and secure development practices to ensure Corda\n+  fulfils its security guarantees.\n+\n+* **Contract Upgrade**\n+\n+  Support for upgrading smart contracts has been significantly extended in this release, with more flexibility still to come.\n+\n+  In prior versions of Corda states included the hash of their defining application JAR. However the code that was used actually\n+  came from the class path. In this release, transactions have the JAR containing the contract and states attached to them.\n+  The code will be copied over the network to the recipient if that peer lacks a copy of the app. However, for security reasons,\n+  in 3.0 the application must still be whitelisted on the node for the transaction to be successfully checked, so all nodes that\n+  may encounter a transaction that uses your states must have a copy of your app. Future integration of the deterministic JVM\n+  sandbox will eliminate this requirement and allow for true smart contract code migration across the network.\n+\n+  .. note:: This change means that your app JAR must now fit inside the 10mb attachment size limit. To avoid redundantly copying\n+    unneeded code over the network and to simplify upgrades, consider splitting your application into two or more JARs - one that\n+    contains states and contracts (which we call the app \"kernel\"), and another that contains flows, services, web apps etc. Only\n+    the first will be attached. Also be aware that any dependencies your app kernel has must be bundled / \"shaded\" into a fat JAR,\n+    as JAR dependencies are not supported in Corda 3.0\n+\n+  Contract states express which attached JARs can define and check them using _constraints_. In older versions the only supported\n+  constraint was a hash constraint. This provides similar behaviour as public blockchain systems like Bitcoin and Ethereum, in\n+  which code is entirely fixed once deployed and cannot be changed later. In Corda there is an upgrade path that involves the\n+  cooperation of all involved parties (as advertised by the states themselves), but this requires explicit transactions to be applied\n+  to all states and be signed by all parties, this is a fairly heavyweight operation. Hash constraints provide for maximum\n+  decentralisation and minimum trust, at the cost of flexibility. In Corda 3.0 we add a new constraint, a _network parameters_ constraint,\n+  that allows the list of acceptable contract JARs to be maintained by the operator of the compatibility zone rather than being\n+  hard-coded. This allows for simple upgrades at the cost of some centralisation.\n+\n+  .. note:: Future versions of Corda will add support for signature based constraints, in which any JAR signed by a given identity\n+    can be attached to the transaction. This final constraint type provides a balance of all requirements: smooth rolling upgrades\n+    can be performed without any additional steps or transactions being signed, at the cost of trusting the app developer more and\n+    some additional complexity around managing app signing.\n+\n+* **Test API Stability**\n+\n+  A great deal of work has been carried out to refine the APIs provided to test CorDapps, making them simpler, more intuitive,\n+  and generally easier to use. In addition, these APIs have been added to the *locked* list of the APIs we guarantee to be stable\n+  over time. This should greatly increase confidence when upgrading between versions, as your testing environments will work\n+  without alteration.\n+\n+  .. note:: * Many classes have been moved between packages, so you will need to update your imports\n+    * setCordappPackages and unsetCordappPackages have been removed from the ledger/transaction DSL and the flow test framework,\n+      and are now via a constructor parameter or automatically when when constructing the MockServices or MockNetwork object","path":"docs/source/release-notes.rst","position":164,"original_position":157,"commit_id":"b69cb77637df9aa71e0d1e2bc062e8a74e220238","original_commit_id":"710a7a2dd22b2bd61074db5bc24d35b30449c9d1","user":{"login":"fenryka","id":3903362,"avatar_url":"https://avatars3.githubusercontent.com/u/3903362?v=4","gravatar_id":"","url":"https://api.github.com/users/fenryka","html_url":"https://github.com/fenryka","followers_url":"https://api.github.com/users/fenryka/followers","following_url":"https://api.github.com/users/fenryka/following{/other_user}","gists_url":"https://api.github.com/users/fenryka/gists{/gist_id}","starred_url":"https://api.github.com/users/fenryka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fenryka/subscriptions","organizations_url":"https://api.github.com/users/fenryka/orgs","repos_url":"https://api.github.com/users/fenryka/repos","events_url":"https://api.github.com/users/fenryka/events{/privacy}","received_events_url":"https://api.github.com/users/fenryka/received_events","type":"User","site_admin":false},"body":"done","created_at":"2018-02-16T15:15:02Z","updated_at":"2018-02-16T15:15:02Z","html_url":"https://github.com/corda/corda/pull/2492#discussion_r168783057","pull_request_url":"https://api.github.com/repos/corda/corda/pulls/2492","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/corda/corda/pulls/comments/168783057"},"html":{"href":"https://github.com/corda/corda/pull/2492#discussion_r168783057"},"pull_request":{"href":"https://api.github.com/repos/corda/corda/pulls/2492"}},"in_reply_to_id":168459041},"pull_request":{"url":"https://api.github.com/repos/corda/corda/pulls/2492","id":168251671,"html_url":"https://github.com/corda/corda/pull/2492","diff_url":"https://github.com/corda/corda/pull/2492.diff","patch_url":"https://github.com/corda/corda/pull/2492.patch","issue_url":"https://api.github.com/repos/corda/corda/issues/2492","number":2492,"state":"open","locked":false,"title":"V3 Release notes","user":{"login":"fenryka","id":3903362,"avatar_url":"https://avatars3.githubusercontent.com/u/3903362?v=4","gravatar_id":"","url":"https://api.github.com/users/fenryka","html_url":"https://github.com/fenryka","followers_url":"https://api.github.com/users/fenryka/followers","following_url":"https://api.github.com/users/fenryka/following{/other_user}","gists_url":"https://api.github.com/users/fenryka/gists{/gist_id}","starred_url":"https://api.github.com/users/fenryka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fenryka/subscriptions","organizations_url":"https://api.github.com/users/fenryka/orgs","repos_url":"https://api.github.com/users/fenryka/repos","events_url":"https://api.github.com/users/fenryka/events{/privacy}","received_events_url":"https://api.github.com/users/fenryka/received_events","type":"User","site_admin":false},"body":"So, input needed from \r\n\r\n@gendal and @mikehearn (clearly)\r\n\r\nSpecific inputs from\r\n\r\n@jamesbr3 - security blurb\r\n@tudor-malene - cntract upgrade\r\n@andr3ej - Testing api blurb\r\n@mnesbit - \r\n@shamsasari - network map stuff\r\n","created_at":"2018-02-09T14:22:21Z","updated_at":"2018-02-16T15:15:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"06662975d5378c5da2c98a4a44dc256ed6188f9d","assignee":null,"assignees":[],"requested_reviewers":[{"login":"tudor-malene","id":1941897,"avatar_url":"https://avatars0.githubusercontent.com/u/1941897?v=4","gravatar_id":"","url":"https://api.github.com/users/tudor-malene","html_url":"https://github.com/tudor-malene","followers_url":"https://api.github.com/users/tudor-malene/followers","following_url":"https://api.github.com/users/tudor-malene/following{/other_user}","gists_url":"https://api.github.com/users/tudor-malene/gists{/gist_id}","starred_url":"https://api.github.com/users/tudor-malene/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tudor-malene/subscriptions","organizations_url":"https://api.github.com/users/tudor-malene/orgs","repos_url":"https://api.github.com/users/tudor-malene/repos","events_url":"https://api.github.com/users/tudor-malene/events{/privacy}","received_events_url":"https://api.github.com/users/tudor-malene/received_events","type":"User","site_admin":false},{"login":"shamsasari","id":3883563,"avatar_url":"https://avatars3.githubusercontent.com/u/3883563?v=4","gravatar_id":"","url":"https://api.github.com/users/shamsasari","html_url":"https://github.com/shamsasari","followers_url":"https://api.github.com/users/shamsasari/followers","following_url":"https://api.github.com/users/shamsasari/following{/other_user}","gists_url":"https://api.github.com/users/shamsasari/gists{/gist_id}","starred_url":"https://api.github.com/users/shamsasari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shamsasari/subscriptions","organizations_url":"https://api.github.com/users/shamsasari/orgs","repos_url":"https://api.github.com/users/shamsasari/repos","events_url":"https://api.github.com/users/shamsasari/events{/privacy}","received_events_url":"https://api.github.com/users/shamsasari/received_events","type":"User","site_admin":false},{"login":"sollecitom","id":5455106,"avatar_url":"https://avatars0.githubusercontent.com/u/5455106?v=4","gravatar_id":"","url":"https://api.github.com/users/sollecitom","html_url":"https://github.com/sollecitom","followers_url":"https://api.github.com/users/sollecitom/followers","following_url":"https://api.github.com/users/sollecitom/following{/other_user}","gists_url":"https://api.github.com/users/sollecitom/gists{/gist_id}","starred_url":"https://api.github.com/users/sollecitom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sollecitom/subscriptions","organizations_url":"https://api.github.com/users/sollecitom/orgs","repos_url":"https://api.github.com/users/sollecitom/repos","events_url":"https://api.github.com/users/sollecitom/events{/privacy}","received_events_url":"https://api.github.com/users/sollecitom/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/corda/corda/pulls/2492/commits","review_comments_url":"https://api.github.com/repos/corda/corda/pulls/2492/comments","review_comment_url":"https://api.github.com/repos/corda/corda/pulls/comments{/number}","comments_url":"https://api.github.com/repos/corda/corda/issues/2492/comments","statuses_url":"https://api.github.com/repos/corda/corda/statuses/b69cb77637df9aa71e0d1e2bc062e8a74e220238","head":{"label":"corda:pre-release-v3-release-notes","ref":"pre-release-v3-release-notes","sha":"b69cb77637df9aa71e0d1e2bc062e8a74e220238","user":{"login":"corda","id":22600631,"avatar_url":"https://avatars1.githubusercontent.com/u/22600631?v=4","gravatar_id":"","url":"https://api.github.com/users/corda","html_url":"https://github.com/corda","followers_url":"https://api.github.com/users/corda/followers","following_url":"https://api.github.com/users/corda/following{/other_user}","gists_url":"https://api.github.com/users/corda/gists{/gist_id}","starred_url":"https://api.github.com/users/corda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/corda/subscriptions","organizations_url":"https://api.github.com/users/corda/orgs","repos_url":"https://api.github.com/users/corda/repos","events_url":"https://api.github.com/users/corda/events{/privacy}","received_events_url":"https://api.github.com/users/corda/received_events","type":"Organization","site_admin":false},"repo":{"id":70137417,"name":"corda","full_name":"corda/corda","owner":{"login":"corda","id":22600631,"avatar_url":"https://avatars1.githubusercontent.com/u/22600631?v=4","gravatar_id":"","url":"https://api.github.com/users/corda","html_url":"https://github.com/corda","followers_url":"https://api.github.com/users/corda/followers","following_url":"https://api.github.com/users/corda/following{/other_user}","gists_url":"https://api.github.com/users/corda/gists{/gist_id}","starred_url":"https://api.github.com/users/corda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/corda/subscriptions","organizations_url":"https://api.github.com/users/corda/orgs","repos_url":"https://api.github.com/users/corda/repos","events_url":"https://api.github.com/users/corda/events{/privacy}","received_events_url":"https://api.github.com/users/corda/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/corda/corda","description":"Corda is a distributed ledger platform designed to record, manage and automate legal agreements between business partners. Designed by (and for) the world's largest financial institutions yet with applications in multiple industries.  It offers a unique response to the privacy and scalability challenges facing decentralised applications.","fork":false,"url":"https://api.github.com/repos/corda/corda","forks_url":"https://api.github.com/repos/corda/corda/forks","keys_url":"https://api.github.com/repos/corda/corda/keys{/key_id}","collaborators_url":"https://api.github.com/repos/corda/corda/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/corda/corda/teams","hooks_url":"https://api.github.com/repos/corda/corda/hooks","issue_events_url":"https://api.github.com/repos/corda/corda/issues/events{/number}","events_url":"https://api.github.com/repos/corda/corda/events","assignees_url":"https://api.github.com/repos/corda/corda/assignees{/user}","branches_url":"https://api.github.com/repos/corda/corda/branches{/branch}","tags_url":"https://api.github.com/repos/corda/corda/tags","blobs_url":"https://api.github.com/repos/corda/corda/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/corda/corda/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/corda/corda/git/refs{/sha}","trees_url":"https://api.github.com/repos/corda/corda/git/trees{/sha}","statuses_url":"https://api.github.com/repos/corda/corda/statuses/{sha}","languages_url":"https://api.github.com/repos/corda/corda/languages","stargazers_url":"https://api.github.com/repos/corda/corda/stargazers","contributors_url":"https://api.github.com/repos/corda/corda/contributors","subscribers_url":"https://api.github.com/repos/corda/corda/subscribers","subscription_url":"https://api.github.com/repos/corda/corda/subscription","commits_url":"https://api.github.com/repos/corda/corda/commits{/sha}","git_commits_url":"https://api.github.com/repos/corda/corda/git/commits{/sha}","comments_url":"https://api.github.com/repos/corda/corda/comments{/number}","issue_comment_url":"https://api.github.com/repos/corda/corda/issues/comments{/number}","contents_url":"https://api.github.com/repos/corda/corda/contents/{+path}","compare_url":"https://api.github.com/repos/corda/corda/compare/{base}...{head}","merges_url":"https://api.github.com/repos/corda/corda/merges","archive_url":"https://api.github.com/repos/corda/corda/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/corda/corda/downloads","issues_url":"https://api.github.com/repos/corda/corda/issues{/number}","pulls_url":"https://api.github.com/repos/corda/corda/pulls{/number}","milestones_url":"https://api.github.com/repos/corda/corda/milestones{/number}","notifications_url":"https://api.github.com/repos/corda/corda/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/corda/corda/labels{/name}","releases_url":"https://api.github.com/repos/corda/corda/releases{/id}","deployments_url":"https://api.github.com/repos/corda/corda/deployments","created_at":"2016-10-06T08:46:29Z","updated_at":"2018-02-16T13:48:08Z","pushed_at":"2018-02-16T15:12:16Z","git_url":"git://github.com/corda/corda.git","ssh_url":"git@github.com:corda/corda.git","clone_url":"https://github.com/corda/corda.git","svn_url":"https://github.com/corda/corda","homepage":"https://www.corda.net","size":107767,"stargazers_count":1473,"watchers_count":1473,"language":"Kotlin","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":394,"mirror_url":null,"archived":false,"open_issues_count":124,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":394,"open_issues":124,"watchers":1473,"default_branch":"master"}},"base":{"label":"corda:pre-release-V3","ref":"pre-release-V3","sha":"e41408d21e86a67880ffd425a8a4c9d74af9a3f1","user":{"login":"corda","id":22600631,"avatar_url":"https://avatars1.githubusercontent.com/u/22600631?v=4","gravatar_id":"","url":"https://api.github.com/users/corda","html_url":"https://github.com/corda","followers_url":"https://api.github.com/users/corda/followers","following_url":"https://api.github.com/users/corda/following{/other_user}","gists_url":"https://api.github.com/users/corda/gists{/gist_id}","starred_url":"https://api.github.com/users/corda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/corda/subscriptions","organizations_url":"https://api.github.com/users/corda/orgs","repos_url":"https://api.github.com/users/corda/repos","events_url":"https://api.github.com/users/corda/events{/privacy}","received_events_url":"https://api.github.com/users/corda/received_events","type":"Organization","site_admin":false},"repo":{"id":70137417,"name":"corda","full_name":"corda/corda","owner":{"login":"corda","id":22600631,"avatar_url":"https://avatars1.githubusercontent.com/u/22600631?v=4","gravatar_id":"","url":"https://api.github.com/users/corda","html_url":"https://github.com/corda","followers_url":"https://api.github.com/users/corda/followers","following_url":"https://api.github.com/users/corda/following{/other_user}","gists_url":"https://api.github.com/users/corda/gists{/gist_id}","starred_url":"https://api.github.com/users/corda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/corda/subscriptions","organizations_url":"https://api.github.com/users/corda/orgs","repos_url":"https://api.github.com/users/corda/repos","events_url":"https://api.github.com/users/corda/events{/privacy}","received_events_url":"https://api.github.com/users/corda/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/corda/corda","description":"Corda is a distributed ledger platform designed to record, manage and automate legal agreements between business partners. Designed by (and for) the world's largest financial institutions yet with applications in multiple industries.  It offers a unique response to the privacy and scalability challenges facing decentralised applications.","fork":false,"url":"https://api.github.com/repos/corda/corda","forks_url":"https://api.github.com/repos/corda/corda/forks","keys_url":"https://api.github.com/repos/corda/corda/keys{/key_id}","collaborators_url":"https://api.github.com/repos/corda/corda/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/corda/corda/teams","hooks_url":"https://api.github.com/repos/corda/corda/hooks","issue_events_url":"https://api.github.com/repos/corda/corda/issues/events{/number}","events_url":"https://api.github.com/repos/corda/corda/events","assignees_url":"https://api.github.com/repos/corda/corda/assignees{/user}","branches_url":"https://api.github.com/repos/corda/corda/branches{/branch}","tags_url":"https://api.github.com/repos/corda/corda/tags","blobs_url":"https://api.github.com/repos/corda/corda/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/corda/corda/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/corda/corda/git/refs{/sha}","trees_url":"https://api.github.com/repos/corda/corda/git/trees{/sha}","statuses_url":"https://api.github.com/repos/corda/corda/statuses/{sha}","languages_url":"https://api.github.com/repos/corda/corda/languages","stargazers_url":"https://api.github.com/repos/corda/corda/stargazers","contributors_url":"https://api.github.com/repos/corda/corda/contributors","subscribers_url":"https://api.github.com/repos/corda/corda/subscribers","subscription_url":"https://api.github.com/repos/corda/corda/subscription","commits_url":"https://api.github.com/repos/corda/corda/commits{/sha}","git_commits_url":"https://api.github.com/repos/corda/corda/git/commits{/sha}","comments_url":"https://api.github.com/repos/corda/corda/comments{/number}","issue_comment_url":"https://api.github.com/repos/corda/corda/issues/comments{/number}","contents_url":"https://api.github.com/repos/corda/corda/contents/{+path}","compare_url":"https://api.github.com/repos/corda/corda/compare/{base}...{head}","merges_url":"https://api.github.com/repos/corda/corda/merges","archive_url":"https://api.github.com/repos/corda/corda/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/corda/corda/downloads","issues_url":"https://api.github.com/repos/corda/corda/issues{/number}","pulls_url":"https://api.github.com/repos/corda/corda/pulls{/number}","milestones_url":"https://api.github.com/repos/corda/corda/milestones{/number}","notifications_url":"https://api.github.com/repos/corda/corda/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/corda/corda/labels{/name}","releases_url":"https://api.github.com/repos/corda/corda/releases{/id}","deployments_url":"https://api.github.com/repos/corda/corda/deployments","created_at":"2016-10-06T08:46:29Z","updated_at":"2018-02-16T13:48:08Z","pushed_at":"2018-02-16T15:12:16Z","git_url":"git://github.com/corda/corda.git","ssh_url":"git@github.com:corda/corda.git","clone_url":"https://github.com/corda/corda.git","svn_url":"https://github.com/corda/corda","homepage":"https://www.corda.net","size":107767,"stargazers_count":1473,"watchers_count":1473,"language":"Kotlin","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":394,"mirror_url":null,"archived":false,"open_issues_count":124,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":394,"open_issues":124,"watchers":1473,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/corda/corda/pulls/2492"},"html":{"href":"https://github.com/corda/corda/pull/2492"},"issue":{"href":"https://api.github.com/repos/corda/corda/issues/2492"},"comments":{"href":"https://api.github.com/repos/corda/corda/issues/2492/comments"},"review_comments":{"href":"https://api.github.com/repos/corda/corda/pulls/2492/comments"},"review_comment":{"href":"https://api.github.com/repos/corda/corda/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/corda/corda/pulls/2492/commits"},"statuses":{"href":"https://api.github.com/repos/corda/corda/statuses/b69cb77637df9aa71e0d1e2bc062e8a74e220238"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"fenryka"}}