Personas

This page contains all relevant APIs interacting with Disco Personas.

Introduction

User

A User on the Disco platform is the holder and owner of its own identity. A User can be an individual or an organization. User have an Ethereum Address that is used with their wallet for access to their credentials. Users may, or may not, have a www domain and/or Ethereum Name Service (ENS) linked to their identity.

Persona

A Persona is a set of attributes that describes a User in a particular context. Currently, Disco supports one Persona per User (extendable to N Personas per User in future releases). A Persona may have multiple DIDs, and account Linkages assigned.

An example of a Persona Document
{
    "id": "de0eae21-b88f-4f22-ad92-7ed99f7ea05c",
    // Unique user ID assigned by Disco
    "user": {
        "id": "ae541371-590b-4dba-b783-5cde41cc0d3c"
    },
    // The User's DID(s) - most users will have a did:3 or a did:pkr ID, whereas
    // organiozations may have a did:web ID
    "dids": [
        {
            "did": "did:web:api.disco.xyz/v1/disco"
        }
    ],
    // Disco user handle
    "handle": "Disco",
    // Link to user's avatar
    "avatarUri": "https://pbs.twimg.com/profile_images/1544599788464766976/Ib49kkdh_400x400.jpg",
    // User bio
    "bio": "Disco's ecosystem is build around our Verifiable Data Registry.",
    // The User's DID and accossiated Ethereum Address
    "ethAddress": "0x08936438bfb8e9b269f978d5327ad687f47g8c08",
    // External account links that the user has linked to one their Disco DIDs 
    "links": [
        {
            "accountType": "Discord",
            // Linked account handle
            "handle": "Disco#1234",
            // Verified by Disco
            "verified": true,
            // The user DID the linked to the account
            "did": "did:web:api.disco.xyz/v1/disco",
            "proof": "https://discord.com/channels/947857036257935390/975763597529600041/1078306074618236980"
        },
        {
            "accountType": "Twitter",
            "handle": "DiscoXYZ",
            "verified": true,
            "did": "did:web:api.disco.xyz/v1/disco",
            "proof": "https://twitter.com/DiscoXYZ/status/1667219955002032136"
        }
    ]
}

Use Cases

Get Persona for a DID

This response is less verbose as it only includes current snapshot of a DID's persona.

Usage example

curl --location 'https://api.disco.xyz/v1/persona/did/metadata/did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb' \
--header 'Authorization: Bearer <your Disco API key>'

Successful Response

{
    "orgBrand": {
        "textColor": null,
        "brandColor": null,
        "backgroundImage": null
    },
    "avatar": "https://uploads-ssl.webflow.com/634f227dc666d2739c1c3959/634f227dc666d26bd21c3a55_14-%20Evin%20McMullen%20original%20BW.png",
    "accountLinks": [
        {
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "type": "Discord",
            "handle": "heyevin"
        },
        {
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "type": "Twitter",
            "handle": "provenauthority"
        }
    ],
    "username": "provenauthority"
}

Get Persona for a DID

This response may be very verbose as it includes all accounts (re)link attempts and their proofs.

Usage example

curl --location 'https://api.disco.xyz/v1/credential/verify' \
--header 'Content-Type: application/json' \
--header 'Accept: */*' \
--header 'Authorization: Bearer <your Disco API key>' \
curl --location 'https://api.disco.xyz/v1/persona/did/did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb' \
--header 'Authorization: Bearer <your Disco API key>'

Successful Response

{
    "id": "3045c158-af4a-417f-a67f-bc8f916b5408",
    "user": {
        "id": "12a9e548-a2fb-42c6-ba4b-e931127baa4a"
    },
    "dids": [
        {
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "ethAddr": "0x9c7b16e49c2f579453c45ca0bf7771a43dc61449"
        }
    ],
    "handle": "provenauthority",
    "avatarUri": "https://uploads-ssl.webflow.com/634f227dc666d2739c1c3959/634f227dc666d26bd21c3a55_14-%20Evin%20McMullen%20original%20BW.png",
    "bio": "GM and welcome to the Disco! ",
    "ethAddress": "0x9c7b16e49c2f579453c45ca0bf7771a43dc61449",
    "links": [ // This object holds all the account links for the ID
        {
            "accountType": "Discord",
            "handle": "heyevin",
            "verified": true,
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "proof": "https://discord.com/channels/947857036257935390/975763597529600041/1128736725682892930"
        },
        {
            "accountType": "Twitter",
            "handle": "provenauthority",
            "verified": true,
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "proof": "https://twitter.com/provenauthority/status/1674454543420260352"
        }
    ],
    "metadata": {
        "orgBrand": {
            "textColor": null,
            "brandColor": null,
            "backgroundImage": null
        },
        "avatar": "https://uploads-ssl.webflow.com/634f227dc666d2739c1c3959/634f227dc666d26bd21c3a55_14-%20Evin%20McMullen%20original%20BW.png",
        "accountLinks": [ // This object holds all link activity for linked accounts. A user can unlink/relink their accounts and this section will show an item for each linking attempt.
            {
                "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
                "type": "Discord",
                "handle": "heyevin"
            },
            {
                "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
                "type": "Discord",
                "handle": "heyevin"
            },
            {
                "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
                "type": "Twitter",
                "handle": "provenauthority"
            }
        ],
        "username": "provenauthority"
    },
    "isOrg": true // If true it indicates that this identity is classified as an orginization.
}

Get Persona for an Ethereum address

This response may be very verbose as it includes all accounts (re)link attempts and their proofs.

Usage example

curl --location 'https://api.disco.xyz/v1/persona/find/eth/0x9c7b16e49c2f579453c45ca0bf7771a43dc61449' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <your Disco API key>'

Successful Response

{
    "id": "3045c158-af4a-417f-a67f-bc8f916b5408",
    "user": {
        "id": "12a9e548-a2fb-42c6-ba4b-e931127baa4a"
    },
    "dids": [
        {
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "ethAddr": "0x9c7b16e49c2f579453c45ca0bf7771a43dc61449"
        }
    ],
    "handle": "provenauthority",
    "avatarUri": "https://uploads-ssl.webflow.com/634f227dc666d2739c1c3959/634f227dc666d26bd21c3a55_14-%20Evin%20McMullen%20original%20BW.png",
    "bio": "GM and welcome to the Disco! ",
    "ethAddress": "0x9c7b16e49c2f579453c45ca0bf7771a43dc61449",
    "links": [
        {
            "accountType": "Discord",
            "handle": "heyevin",
            "verified": true,
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "proof": "https://discord.com/channels/947857036257935390/975763597529600041/1128736725682892930"
        },
        {
            "accountType": "Discord",
            "handle": "heyevin",
            "verified": true,
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "proof": "https://twitter.com/provenauthority/status/1674454543420260352"
        },
        {
            "accountType": "Twitter",
            "handle": "provenauthority",
            "verified": true,
            "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
            "proof": "https://twitter.com/provenauthority/status/1674454543420260352"
        }
    ],
    "metadata": {
        "orgBrand": {
            "textColor": null,
            "brandColor": null,
            "backgroundImage": null
        },
        "avatar": "https://uploads-ssl.webflow.com/634f227dc666d2739c1c3959/634f227dc666d26bd21c3a55_14-%20Evin%20McMullen%20original%20BW.png",
        "accountLinks": [
            {
                "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
                "type": "Discord",
                "handle": "heyevin"
            },
            {
                "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
                "type": "Discord",
                "handle": "heyevin"
            },
            {
                "did": "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb",
                "type": "Twitter",
                "handle": "provenauthority"
            }
        ],
        "username": "provenauthority"
    },
    "isOrg": true
}

Search for Profile by account linkages

Returns DIDs of matching handles given search input. Can search for Twitter, Discord, or Domain handle in one endpoint.

Search by any handle

GET https://api.disco.xyz/v1/search/?handle=provenauthority

Query Parameters

Example Response

[
    "did:3:kjzl6cwe1jw14b7xqq94oiy0lcnndgyt0p3vtlnsscpljosx6gom46qkxcv8sjb"
]

Last updated