{"id":21658916,"url":"https://github.com/3box/3box-verifications","last_synced_at":"2025-07-17T21:32:02.344Z","repository":{"id":48060762,"uuid":"162613112","full_name":"3box/3box-verifications","owner":"3box","description":"Verification service","archived":true,"fork":false,"pushed_at":"2021-08-09T12:12:45.000Z","size":4269,"stargazers_count":9,"open_issues_count":26,"forks_count":4,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2023-03-02T05:05:41.527Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3box.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-20T17:51:23.000Z","updated_at":"2023-01-28T07:20:37.000Z","dependencies_parsed_at":"2022-08-12T17:40:55.398Z","dependency_job_id":null,"html_url":"https://github.com/3box/3box-verifications","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3box%2F3box-verifications","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3box%2F3box-verifications/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3box%2F3box-verifications/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3box%2F3box-verifications/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3box","download_url":"https://codeload.github.com/3box/3box-verifications/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226305058,"owners_count":17603731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T09:30:01.836Z","updated_at":"2024-11-25T09:30:22.199Z","avatar_url":"https://github.com/3box.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# ⚠️ ⚠️ Deprecated in favor of Ceramic ⚠️ ⚠️ \n\u003e 3box.js and related tools built by 3Box Labs are deprecated and no loger supported. Developers are encurraged to build with https://ceramic.network which is a more secure and decentralized protocol for sovereign data.\n\n\n\n# 3Box Verification service\n\n# Overview\n\nThis service allows to associate a service handle (twitter, github, etc) to a [did](https://w3c-ccg.github.io/did-spec/). It outputs a [did-jwt](https://github.com/uport-project/did-jwt) claim containing a link that serves as proof that the service handle is linked to the did.\n\n\n# API\n\n## Get DID document\n\nThis enables us to use have the issuer DID `did:https:verifications.3box.io` in the claims we create.\n\n**Endpoint:** `GET /.well-known/did.json`\n\n### Response data\n\n```js\n{\n  \"@context\": \"[https://w3id.org/did/v1](https://w3id.org/did/v1)\",\n  \"id\": \"did:https:verifications.3box.io\",\n  \"publicKey\": [{\n    \"id\": \"did:https:verifications.3box.io#owner\",\n    \"type\": \"Secp256k1VerificationKey2018\",\n    \"owner\": \"did:https:verifications.3box.io\",\n    \"ethereumAddress\": \"\u003cethereum address of private key\u003e\"\n  }],\n  \"authentication\": [{\n    \"type\": \"Secp256k1SignatureAuthentication2018\",\n    \"publicKey\": \"did:https:verifications.3box.io#owner\"\n  }]\n}\n```\n\n## Create twitter verification\n\n**Endpoint:** `POST /twitter`\n\n### Body\n\n```js\n{\n  did: \u003cthe DID of the user\u003e,\n  twitter_handle: \u003cthe twitter handle of the user\u003e\n}\n```\n\n### Response\n\nThe response data follows the [jsend](https://labs.omniti.com/labs/jsend) standard.\n\n### Response data\n\n```js\n{\n  status: 'success',\n  data: {\n    verification: \u003cverification-claim\u003e\n  }\n}\n```\n\n**Verification claim format**\n\n```js\n{\n  iss: 'did:https:verifications.3box.io',\n  sub: \u003cdid of the user\u003e,\n  iat: \u003ccurrent timestamp in seconds\u003e,\n  claim: {\n    twitter_handle: \u003ctwitter handle of user\u003e,\n    twitter_proof: \u003curl of tweet containing users DID\u003e\n  }\n}\n```\n\n## Verify email address\n\n**Endpoint:** `POST /send-email-verification`\n\nThis endpoint sends an email to the email address in the body. This email contains the following:\n* A code `C` that consists of six randum digits\n* The `name` and `image` of the given DID.\n\nNow the DID is saved along with the email address, code `C`, and a timestamp.\n\n### Body\n\n```js\n{\n  did: \u003cthe DID of the user\u003e,\n  email_address: \u003cthe email address of the user\u003e\n}\n```\n\n### Response\n\nThe response data follows the [jsend](https://labs.omniti.com/labs/jsend) standard.\n\n### Response data\n\n```js\n{\n  status: 'success'\n}\n```\n\n**Endpoint:** `POST /email-verify`\n\nThis endpoint takes a JWT as an input, which contains the code `C`, and verifies that:\n* The JWT signed by the saved DID\n* The code `C` in the JWT is the same as the saved code `C`\n* The stored timestamp is not older than 12h\n\n\n### Body\n\n```js\n{\n  verification: \u003cthe input-verification-claim signed by the did of the user\u003e\n}\n```\n\n**Input verification claim format**\n\n```js\n{\n  iss: \u003cthe users DID\u003e,\n  sub: 'did:https:verifications.3box.io',\n  iat: \u003ccurrent timestamp in seconds\u003e,\n  claim: {\n     code: \u003cthe 6 digit code\u003e\n  }\n}\n```\n\n**Output verification claim format**\n\n```js\n{\n  iss: 'did:https:verifications.3box.io',\n  sub: \u003cthe users DID\u003e,\n  iat: \u003ccurrent timestamp in seconds\u003e,\n  claim: {\n    email_address: \u003cthe email address of the user\u003e,\n    code: \u003cthe 6 digit code\u003e\n  }\n}\n```\n\n### Response\n\nThe response data follows the [jsend](https://labs.omniti.com/labs/jsend) standard.\n\n### Response data\n\n```js\n{\n  status: 'success',\n  data: {\n    verification: \u003coutput-verification-claim\u003e\n  }\n}\n```\n\n## Maintainers\n[@simonovic86](https://github.com/simonovic86)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3box%2F3box-verifications","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3box%2F3box-verifications","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3box%2F3box-verifications/lists"}