{"action":"created","comment":{"url":"https://api.github.com/repos/uport-project/uport-js/pulls/comments/212566267","pull_request_review_id":149227863,"id":212566267,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMjU2NjI2Nw==","diff_hunk":"@@ -16,53 +19,113 @@ class Credentials {\n   /**\n    * Instantiates a new uPort Credentials object\n    *\n+   * The following example is just for testing purposes. You should never store a private key in source code.\n+   *\n+   * @example\n+   * import { Credentials } from 'uport'\n+   * const credentials = new Credentials({\n+   *   privateKey: '74894f8853f90e6e3d6dfdd343eb0eb70cca06e552ed8af80adadcc573b35da3'\n+   * })\n+   *\n+   * The above example derives the public key used to generate the did, so only a private key is needed.\n+   * Generating a public key from a private key is slow. It is recommended to configure the `did` option as well.\n+   *\n+   * @example\n+   * import { Credentials } from 'uport'\n+   * const credentials = new Credentials({\n+   *   did: 'did:ethr:0xbc3ae59bc76f894822622cdef7a2018dbe353840',\n+   *   privateKey: '74894f8853f90e6e3d6dfdd343eb0eb70cca06e552ed8af80adadcc573b35da3'\n+   * })\n+   *\n+   * It is recommended to store the address and private key in environment variables for your server application\n+   *\n    * @example\n    * import { Credentials, SimpleSigner } from 'uport'\n-   * const networks = {  '0x94365e3b': { rpcUrl: 'https://private.chain/rpc', registry: '0x0101.... }}\n-   * const setttings = { networks, address: '5A8bRWU3F7j3REx3vkJ...', signer: new SimpleSigner(process.env.PRIVATE_KEY)}\n-   * const credentials = new Credentials(settings)\n+   * const credentials = new Credentials({\n+   *   did: process.env.APPLICATION_DID,\n+   *   signer: SimpleSigner(process.env.PRIVATE_KEY)\n+   * })\n    *\n+   * Instead of a private key you can pass in a [Signer Functions](https://github.com/uport-project/did-jwt#signer-functions) to\n+   * present UX or call a HSM.\n+\n    * @example\n    * import { Credentials } from 'uport'\n-   * const credentials = new Credentials()\n+   *\n+   * function mySigner (data) {\n+   *   return new Promise((resolve, reject) => {\n+   *     const signature = /// sign it\n+   *     resolve(signature)\n+   *   })\n+   * }\n+   *\n+   * const credentials = new Credentials({\n+   *   did: process.env.APPLICATION_DID,\n+   *   signer: mySigner\n+   * })\n    *\n    * @param       {Object}            [settings]             setttings\n-   * @param       {Object}            settings.networks      networks config object, ie. {  '0x94365e3b': { rpcUrl: 'https://private.chain/rpc', address: '0x0101.... }}\n-   * @param       {UportLite}         settings.registry      a registry object from UportLite\n-   * @param       {SimpleSigner}      settings.signer        a signer object, see SimpleSigner.js\n-   * @param       {Address}           settings.address       your uPort address (may be the address of your application's uPort identity)\n+   * @param       {DID}               settings.did           Application [DID](https://w3c-ccg.github.io/did-spec/#decentralized-identifiers-dids) (unique identifier) for your application\n+   * @param       {String}            settings.privateKey    A hex encoded 32 byte private key\n+   * @param       {SimpleSigner}      settings.signer        a signer object, see [Signer Functions](https://github.com/uport-project/did-jwt#signer-functions)\n+   * @param       {Object}            settings.ethrConfig    Configuration object for ethr did resolver. See [ethr-did-resolver](https://github.com/uport-project/ethr-did-resolver)\n+   * @param       {Object}            settings.muportConfig  Configuration object for muport did resolver. See [muport-did-resolver](https://github.com/uport-project/muport-did-resolver)\n+   * @param       {Address}           settings.address       DEPRECATED your uPort address (may be the address of your application's uPort identity)\n+   * @param       {Object}            settings.networks      DEPRECATED networks config object, ie. {  '0x94365e3b': { rpcUrl: 'https://private.chain/rpc', address: '0x0101.... }}\n+   * @param       {UportLite}         settings.registry      DEPRECATED a registry object from UportLite\n    * @return      {Credentials}                              self\n    */\n-  constructor (settings = {}) {\n-    this.settings = settings\n-    this.settings.networks = settings.networks ? configNetworks(settings.networks) : {}\n-    if (!this.settings.registry) {\n-      const registry = UportLite({networks: this.settings.networks})\n-      this.settings.registry = (address) => new Promise((resolve, reject) => {\n-        registry(address, (error, profile) => {\n-          if (error) return reject(error)\n-          resolve(profile)\n-        })\n-      })\n+  constructor ({did, address, privateKey, signer, networks, registry, ethrConfig, muportConfig} = {}) {\n+    if (signer) {\n+      this.signer = signer\n+    } else if (privateKey) {\n+      this.signer = SimpleSigner(privateKey)\n+\n+    }\n+    if (did) {\n+      this.did = did\n+    } else if (address) {\n+      if (MNID.isMNID(address)) {\n+        this.did = `did:uport:${address}`\n+      }\n+      if (address.match('^0x[0-9a-fA-F]{40}$')) {\n+        this.did = `did:ethr:${address}`\n+      }\n+    } else if (privateKey) {\n+      const kp = secp256k1.keyFromPrivate(privateKey)\n+      const address = toEthereumAddress(kp.getPublic('hex'))\n+      this.did = `did:ethr:${address}`\n     }\n+\n+    this.signJWT = (payload, expiresIn) => createJWT(payload, {issuer: this.did, signer: this.signer, alg: this.did.match('^did:uport:') ? 'ES256K' : 'ES256K-R', expiresIn })\n+\n+    UportDIDResolver(registry || UportLite({networks: networks ? configNetworks(networks) : {}}))\n+    EthrDIDResolver(ethrConfig || {})\n+    MuportDIDResolver(muportConfig || {})\n+  }\n+\n+  /**\n+   * generate a DID and private key\n+   */\n+  static createIdentity () {\n+    const kp = secp256k1.genKeyPair()\n+    const publicKey = kp.getPublic('hex')\n+    const privateKey = kp.getPrivate('hex')\n+    const address = toEthereumAddress(publicKey)\n+    const did = `did:ethr:${address}`\n+    return {did, privateKey}\n   }\n \n /**\n- *  Creates a signed request token (JWT) given a request params object.\n+ *  Creates a [Selective Disclosure Request JWT](https://github.com/uport-project/specs/blob/develop/messages/sharereq.md)\n  *\n  *  @example\n  *  const req = { requested: ['name', 'country'],\n  *                callbackUrl: 'https://myserver.com',\n  *                notifications: true }\n- *  credentials.createRequest(req).then(jwt => {\n+ *  credentials.requestDisclosure(req).then(jwt => {\n  *      ...\n  *  })\n-\n-\n- requested: ['name','phone','identity_no'],\n-    callbackUrl: 'https://....' // URL to send the response of the request to\n-    notifications: true\n-\n  *\n  *  @param    {Object}             [params={}]           request params object\n  *  @param    {Array}              params.requested      an array of attributes for which you are requesting credentials to be shared for","path":"src/Credentials.js","position":162,"original_position":160,"commit_id":"a2fc497ddf2dec1028514b4925e19ac4eebf23ab","original_commit_id":"0f2b419e5b03983b9615aefae62f3b39acb7621a","user":{"login":"pelle","id":8680,"node_id":"MDQ6VXNlcjg2ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/8680?v=4","gravatar_id":"","url":"https://api.github.com/users/pelle","html_url":"https://github.com/pelle","followers_url":"https://api.github.com/users/pelle/followers","following_url":"https://api.github.com/users/pelle/following{/other_user}","gists_url":"https://api.github.com/users/pelle/gists{/gist_id}","starred_url":"https://api.github.com/users/pelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pelle/subscriptions","organizations_url":"https://api.github.com/users/pelle/orgs","repos_url":"https://api.github.com/users/pelle/repos","events_url":"https://api.github.com/users/pelle/events{/privacy}","received_events_url":"https://api.github.com/users/pelle/received_events","type":"User","site_admin":false},"body":"Good point. We need to make this much better from a spec point of view. I'll schedule an epic for that soon.","created_at":"2018-08-24T09:07:38Z","updated_at":"2018-08-24T09:07:38Z","html_url":"https://github.com/uport-project/uport-js/pull/61#discussion_r212566267","pull_request_url":"https://api.github.com/repos/uport-project/uport-js/pulls/61","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/uport-project/uport-js/pulls/comments/212566267"},"html":{"href":"https://github.com/uport-project/uport-js/pull/61#discussion_r212566267"},"pull_request":{"href":"https://api.github.com/repos/uport-project/uport-js/pulls/61"}},"in_reply_to_id":196480465},"pull_request":{"url":"https://api.github.com/repos/uport-project/uport-js/pulls/61","id":184658095,"node_id":"MDExOlB1bGxSZXF1ZXN0MTg0NjU4MDk1","html_url":"https://github.com/uport-project/uport-js/pull/61","diff_url":"https://github.com/uport-project/uport-js/pull/61.diff","patch_url":"https://github.com/uport-project/uport-js/pull/61.patch","issue_url":"https://api.github.com/repos/uport-project/uport-js/issues/61","number":61,"state":"open","locked":false,"title":"Integration branch for uPort JS refactor","user":{"login":"pelle","id":8680,"node_id":"MDQ6VXNlcjg2ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/8680?v=4","gravatar_id":"","url":"https://api.github.com/users/pelle","html_url":"https://github.com/pelle","followers_url":"https://api.github.com/users/pelle/followers","following_url":"https://api.github.com/users/pelle/following{/other_user}","gists_url":"https://api.github.com/users/pelle/gists{/gist_id}","starred_url":"https://api.github.com/users/pelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pelle/subscriptions","organizations_url":"https://api.github.com/users/pelle/orgs","repos_url":"https://api.github.com/users/pelle/repos","events_url":"https://api.github.com/users/pelle/events{/privacy}","received_events_url":"https://api.github.com/users/pelle/received_events","type":"User","site_admin":false},"body":"* Mostly rewrote uport-js to use DID-JWT\r\n* Updated README and tutorials\r\n* Use correct algorithm for each method\r\n* Refactored API to reflect more clearly what is happening\r\n* update tutorial\r\n* remove dist from git\r\n* Make it easy to create identities from within the library\r\n* More test coverage\r\n* release 0.7.0-alpha-1\r\n","created_at":"2018-04-27T15:39:48Z","updated_at":"2018-08-24T09:07:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7fdb055e0f85fc0ee02bacf498693e2f93535d99","assignee":{"login":"pelle","id":8680,"node_id":"MDQ6VXNlcjg2ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/8680?v=4","gravatar_id":"","url":"https://api.github.com/users/pelle","html_url":"https://github.com/pelle","followers_url":"https://api.github.com/users/pelle/followers","following_url":"https://api.github.com/users/pelle/following{/other_user}","gists_url":"https://api.github.com/users/pelle/gists{/gist_id}","starred_url":"https://api.github.com/users/pelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pelle/subscriptions","organizations_url":"https://api.github.com/users/pelle/orgs","repos_url":"https://api.github.com/users/pelle/repos","events_url":"https://api.github.com/users/pelle/events{/privacy}","received_events_url":"https://api.github.com/users/pelle/received_events","type":"User","site_admin":false},"assignees":[{"login":"pelle","id":8680,"node_id":"MDQ6VXNlcjg2ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/8680?v=4","gravatar_id":"","url":"https://api.github.com/users/pelle","html_url":"https://github.com/pelle","followers_url":"https://api.github.com/users/pelle/followers","following_url":"https://api.github.com/users/pelle/following{/other_user}","gists_url":"https://api.github.com/users/pelle/gists{/gist_id}","starred_url":"https://api.github.com/users/pelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pelle/subscriptions","organizations_url":"https://api.github.com/users/pelle/orgs","repos_url":"https://api.github.com/users/pelle/repos","events_url":"https://api.github.com/users/pelle/events{/privacy}","received_events_url":"https://api.github.com/users/pelle/received_events","type":"User","site_admin":false},{"login":"localredhead","id":152448,"node_id":"MDQ6VXNlcjE1MjQ0OA==","avatar_url":"https://avatars3.githubusercontent.com/u/152448?v=4","gravatar_id":"","url":"https://api.github.com/users/localredhead","html_url":"https://github.com/localredhead","followers_url":"https://api.github.com/users/localredhead/followers","following_url":"https://api.github.com/users/localredhead/following{/other_user}","gists_url":"https://api.github.com/users/localredhead/gists{/gist_id}","starred_url":"https://api.github.com/users/localredhead/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/localredhead/subscriptions","organizations_url":"https://api.github.com/users/localredhead/orgs","repos_url":"https://api.github.com/users/localredhead/repos","events_url":"https://api.github.com/users/localredhead/events{/privacy}","received_events_url":"https://api.github.com/users/localredhead/received_events","type":"User","site_admin":false},{"login":"zachferland","id":1887967,"node_id":"MDQ6VXNlcjE4ODc5Njc=","avatar_url":"https://avatars0.githubusercontent.com/u/1887967?v=4","gravatar_id":"","url":"https://api.github.com/users/zachferland","html_url":"https://github.com/zachferland","followers_url":"https://api.github.com/users/zachferland/followers","following_url":"https://api.github.com/users/zachferland/following{/other_user}","gists_url":"https://api.github.com/users/zachferland/gists{/gist_id}","starred_url":"https://api.github.com/users/zachferland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zachferland/subscriptions","organizations_url":"https://api.github.com/users/zachferland/orgs","repos_url":"https://api.github.com/users/zachferland/repos","events_url":"https://api.github.com/users/zachferland/events{/privacy}","received_events_url":"https://api.github.com/users/zachferland/received_events","type":"User","site_admin":false},{"login":"mi-xu","id":29350581,"node_id":"MDQ6VXNlcjI5MzUwNTgx","avatar_url":"https://avatars0.githubusercontent.com/u/29350581?v=4","gravatar_id":"","url":"https://api.github.com/users/mi-xu","html_url":"https://github.com/mi-xu","followers_url":"https://api.github.com/users/mi-xu/followers","following_url":"https://api.github.com/users/mi-xu/following{/other_user}","gists_url":"https://api.github.com/users/mi-xu/gists{/gist_id}","starred_url":"https://api.github.com/users/mi-xu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mi-xu/subscriptions","organizations_url":"https://api.github.com/users/mi-xu/orgs","repos_url":"https://api.github.com/users/mi-xu/repos","events_url":"https://api.github.com/users/mi-xu/events{/privacy}","received_events_url":"https://api.github.com/users/mi-xu/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":938485493,"node_id":"MDU6TGFiZWw5Mzg0ODU0OTM=","url":"https://api.github.com/repos/uport-project/uport-js/labels/review","name":"review","color":"ededed","default":false}],"milestone":{"url":"https://api.github.com/repos/uport-project/uport-js/milestones/4","html_url":"https://github.com/uport-project/uport-js/milestone/4","labels_url":"https://api.github.com/repos/uport-project/uport-js/milestones/4/labels","id":3506038,"node_id":"MDk6TWlsZXN0b25lMzUwNjAzOA==","number":4,"title":"uPort iis Sprint 4","description":"","creator":{"login":"ozlemulusoy","id":39748276,"node_id":"MDQ6VXNlcjM5NzQ4Mjc2","avatar_url":"https://avatars0.githubusercontent.com/u/39748276?v=4","gravatar_id":"","url":"https://api.github.com/users/ozlemulusoy","html_url":"https://github.com/ozlemulusoy","followers_url":"https://api.github.com/users/ozlemulusoy/followers","following_url":"https://api.github.com/users/ozlemulusoy/following{/other_user}","gists_url":"https://api.github.com/users/ozlemulusoy/gists{/gist_id}","starred_url":"https://api.github.com/users/ozlemulusoy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ozlemulusoy/subscriptions","organizations_url":"https://api.github.com/users/ozlemulusoy/orgs","repos_url":"https://api.github.com/users/ozlemulusoy/repos","events_url":"https://api.github.com/users/ozlemulusoy/events{/privacy}","received_events_url":"https://api.github.com/users/ozlemulusoy/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":1,"state":"open","created_at":"2018-07-18T14:36:13Z","updated_at":"2018-08-17T16:49:21Z","due_on":"2018-08-28T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/uport-project/uport-js/pulls/61/commits","review_comments_url":"https://api.github.com/repos/uport-project/uport-js/pulls/61/comments","review_comment_url":"https://api.github.com/repos/uport-project/uport-js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/uport-project/uport-js/issues/61/comments","statuses_url":"https://api.github.com/repos/uport-project/uport-js/statuses/a2fc497ddf2dec1028514b4925e19ac4eebf23ab","head":{"label":"uport-project:did","ref":"did","sha":"a2fc497ddf2dec1028514b4925e19ac4eebf23ab","user":{"login":"uport-project","id":24941981,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0OTQxOTgx","avatar_url":"https://avatars3.githubusercontent.com/u/24941981?v=4","gravatar_id":"","url":"https://api.github.com/users/uport-project","html_url":"https://github.com/uport-project","followers_url":"https://api.github.com/users/uport-project/followers","following_url":"https://api.github.com/users/uport-project/following{/other_user}","gists_url":"https://api.github.com/users/uport-project/gists{/gist_id}","starred_url":"https://api.github.com/users/uport-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uport-project/subscriptions","organizations_url":"https://api.github.com/users/uport-project/orgs","repos_url":"https://api.github.com/users/uport-project/repos","events_url":"https://api.github.com/users/uport-project/events{/privacy}","received_events_url":"https://api.github.com/users/uport-project/received_events","type":"Organization","site_admin":false},"repo":{"id":78137077,"node_id":"MDEwOlJlcG9zaXRvcnk3ODEzNzA3Nw==","name":"uport-js","full_name":"uport-project/uport-js","owner":{"login":"uport-project","id":24941981,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0OTQxOTgx","avatar_url":"https://avatars3.githubusercontent.com/u/24941981?v=4","gravatar_id":"","url":"https://api.github.com/users/uport-project","html_url":"https://github.com/uport-project","followers_url":"https://api.github.com/users/uport-project/followers","following_url":"https://api.github.com/users/uport-project/following{/other_user}","gists_url":"https://api.github.com/users/uport-project/gists{/gist_id}","starred_url":"https://api.github.com/users/uport-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uport-project/subscriptions","organizations_url":"https://api.github.com/users/uport-project/orgs","repos_url":"https://api.github.com/users/uport-project/repos","events_url":"https://api.github.com/users/uport-project/events{/privacy}","received_events_url":"https://api.github.com/users/uport-project/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/uport-project/uport-js","description":"Library for integrating uPort into node server side applications","fork":false,"url":"https://api.github.com/repos/uport-project/uport-js","forks_url":"https://api.github.com/repos/uport-project/uport-js/forks","keys_url":"https://api.github.com/repos/uport-project/uport-js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/uport-project/uport-js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/uport-project/uport-js/teams","hooks_url":"https://api.github.com/repos/uport-project/uport-js/hooks","issue_events_url":"https://api.github.com/repos/uport-project/uport-js/issues/events{/number}","events_url":"https://api.github.com/repos/uport-project/uport-js/events","assignees_url":"https://api.github.com/repos/uport-project/uport-js/assignees{/user}","branches_url":"https://api.github.com/repos/uport-project/uport-js/branches{/branch}","tags_url":"https://api.github.com/repos/uport-project/uport-js/tags","blobs_url":"https://api.github.com/repos/uport-project/uport-js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/uport-project/uport-js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/uport-project/uport-js/git/refs{/sha}","trees_url":"https://api.github.com/repos/uport-project/uport-js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/uport-project/uport-js/statuses/{sha}","languages_url":"https://api.github.com/repos/uport-project/uport-js/languages","stargazers_url":"https://api.github.com/repos/uport-project/uport-js/stargazers","contributors_url":"https://api.github.com/repos/uport-project/uport-js/contributors","subscribers_url":"https://api.github.com/repos/uport-project/uport-js/subscribers","subscription_url":"https://api.github.com/repos/uport-project/uport-js/subscription","commits_url":"https://api.github.com/repos/uport-project/uport-js/commits{/sha}","git_commits_url":"https://api.github.com/repos/uport-project/uport-js/git/commits{/sha}","comments_url":"https://api.github.com/repos/uport-project/uport-js/comments{/number}","issue_comment_url":"https://api.github.com/repos/uport-project/uport-js/issues/comments{/number}","contents_url":"https://api.github.com/repos/uport-project/uport-js/contents/{+path}","compare_url":"https://api.github.com/repos/uport-project/uport-js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/uport-project/uport-js/merges","archive_url":"https://api.github.com/repos/uport-project/uport-js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/uport-project/uport-js/downloads","issues_url":"https://api.github.com/repos/uport-project/uport-js/issues{/number}","pulls_url":"https://api.github.com/repos/uport-project/uport-js/pulls{/number}","milestones_url":"https://api.github.com/repos/uport-project/uport-js/milestones{/number}","notifications_url":"https://api.github.com/repos/uport-project/uport-js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/uport-project/uport-js/labels{/name}","releases_url":"https://api.github.com/repos/uport-project/uport-js/releases{/id}","deployments_url":"https://api.github.com/repos/uport-project/uport-js/deployments","created_at":"2017-01-05T18:19:16Z","updated_at":"2018-08-23T01:13:38Z","pushed_at":"2018-08-23T01:13:37Z","git_url":"git://github.com/uport-project/uport-js.git","ssh_url":"git@github.com:uport-project/uport-js.git","clone_url":"https://github.com/uport-project/uport-js.git","svn_url":"https://github.com/uport-project/uport-js","homepage":"","size":2039,"stargazers_count":95,"watchers_count":95,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":25,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":25,"open_issues":8,"watchers":95,"default_branch":"develop"}},"base":{"label":"uport-project:develop","ref":"develop","sha":"05e9161486b0c23114eebddcde21ef34d51df199","user":{"login":"uport-project","id":24941981,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0OTQxOTgx","avatar_url":"https://avatars3.githubusercontent.com/u/24941981?v=4","gravatar_id":"","url":"https://api.github.com/users/uport-project","html_url":"https://github.com/uport-project","followers_url":"https://api.github.com/users/uport-project/followers","following_url":"https://api.github.com/users/uport-project/following{/other_user}","gists_url":"https://api.github.com/users/uport-project/gists{/gist_id}","starred_url":"https://api.github.com/users/uport-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uport-project/subscriptions","organizations_url":"https://api.github.com/users/uport-project/orgs","repos_url":"https://api.github.com/users/uport-project/repos","events_url":"https://api.github.com/users/uport-project/events{/privacy}","received_events_url":"https://api.github.com/users/uport-project/received_events","type":"Organization","site_admin":false},"repo":{"id":78137077,"node_id":"MDEwOlJlcG9zaXRvcnk3ODEzNzA3Nw==","name":"uport-js","full_name":"uport-project/uport-js","owner":{"login":"uport-project","id":24941981,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0OTQxOTgx","avatar_url":"https://avatars3.githubusercontent.com/u/24941981?v=4","gravatar_id":"","url":"https://api.github.com/users/uport-project","html_url":"https://github.com/uport-project","followers_url":"https://api.github.com/users/uport-project/followers","following_url":"https://api.github.com/users/uport-project/following{/other_user}","gists_url":"https://api.github.com/users/uport-project/gists{/gist_id}","starred_url":"https://api.github.com/users/uport-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uport-project/subscriptions","organizations_url":"https://api.github.com/users/uport-project/orgs","repos_url":"https://api.github.com/users/uport-project/repos","events_url":"https://api.github.com/users/uport-project/events{/privacy}","received_events_url":"https://api.github.com/users/uport-project/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/uport-project/uport-js","description":"Library for integrating uPort into node server side applications","fork":false,"url":"https://api.github.com/repos/uport-project/uport-js","forks_url":"https://api.github.com/repos/uport-project/uport-js/forks","keys_url":"https://api.github.com/repos/uport-project/uport-js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/uport-project/uport-js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/uport-project/uport-js/teams","hooks_url":"https://api.github.com/repos/uport-project/uport-js/hooks","issue_events_url":"https://api.github.com/repos/uport-project/uport-js/issues/events{/number}","events_url":"https://api.github.com/repos/uport-project/uport-js/events","assignees_url":"https://api.github.com/repos/uport-project/uport-js/assignees{/user}","branches_url":"https://api.github.com/repos/uport-project/uport-js/branches{/branch}","tags_url":"https://api.github.com/repos/uport-project/uport-js/tags","blobs_url":"https://api.github.com/repos/uport-project/uport-js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/uport-project/uport-js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/uport-project/uport-js/git/refs{/sha}","trees_url":"https://api.github.com/repos/uport-project/uport-js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/uport-project/uport-js/statuses/{sha}","languages_url":"https://api.github.com/repos/uport-project/uport-js/languages","stargazers_url":"https://api.github.com/repos/uport-project/uport-js/stargazers","contributors_url":"https://api.github.com/repos/uport-project/uport-js/contributors","subscribers_url":"https://api.github.com/repos/uport-project/uport-js/subscribers","subscription_url":"https://api.github.com/repos/uport-project/uport-js/subscription","commits_url":"https://api.github.com/repos/uport-project/uport-js/commits{/sha}","git_commits_url":"https://api.github.com/repos/uport-project/uport-js/git/commits{/sha}","comments_url":"https://api.github.com/repos/uport-project/uport-js/comments{/number}","issue_comment_url":"https://api.github.com/repos/uport-project/uport-js/issues/comments{/number}","contents_url":"https://api.github.com/repos/uport-project/uport-js/contents/{+path}","compare_url":"https://api.github.com/repos/uport-project/uport-js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/uport-project/uport-js/merges","archive_url":"https://api.github.com/repos/uport-project/uport-js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/uport-project/uport-js/downloads","issues_url":"https://api.github.com/repos/uport-project/uport-js/issues{/number}","pulls_url":"https://api.github.com/repos/uport-project/uport-js/pulls{/number}","milestones_url":"https://api.github.com/repos/uport-project/uport-js/milestones{/number}","notifications_url":"https://api.github.com/repos/uport-project/uport-js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/uport-project/uport-js/labels{/name}","releases_url":"https://api.github.com/repos/uport-project/uport-js/releases{/id}","deployments_url":"https://api.github.com/repos/uport-project/uport-js/deployments","created_at":"2017-01-05T18:19:16Z","updated_at":"2018-08-23T01:13:38Z","pushed_at":"2018-08-23T01:13:37Z","git_url":"git://github.com/uport-project/uport-js.git","ssh_url":"git@github.com:uport-project/uport-js.git","clone_url":"https://github.com/uport-project/uport-js.git","svn_url":"https://github.com/uport-project/uport-js","homepage":"","size":2039,"stargazers_count":95,"watchers_count":95,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":25,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":25,"open_issues":8,"watchers":95,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/uport-project/uport-js/pulls/61"},"html":{"href":"https://github.com/uport-project/uport-js/pull/61"},"issue":{"href":"https://api.github.com/repos/uport-project/uport-js/issues/61"},"comments":{"href":"https://api.github.com/repos/uport-project/uport-js/issues/61/comments"},"review_comments":{"href":"https://api.github.com/repos/uport-project/uport-js/pulls/61/comments"},"review_comment":{"href":"https://api.github.com/repos/uport-project/uport-js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/uport-project/uport-js/pulls/61/commits"},"statuses":{"href":"https://api.github.com/repos/uport-project/uport-js/statuses/a2fc497ddf2dec1028514b4925e19ac4eebf23ab"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"pelle"}}