Query

User:

DLive user type has username and displayname which are both unique. username refers to the blockchain username and displayname refers to the displayname used everywhere in DLive. Users could change their displayname once a month but username could never be changed. Treat username as user ID.

There are two entry point queries for User: user(username:) and userByDisplayName(displayname:)

Sample

Sample GraphQL query which returns some basic info:

query{
userByDisplayName(displayname:"Potato") {
username
displayname
avatar
partnerStatus
followers {
totalCount
}
}
}

Your could use a GraphQL client library to send the request or it could be translated to a plain curl request:

curl 'https://graphigo.prd.dlive.tv/' --data-binary '{"query":"query{userByDisplayName(displayname: \"Potato\") {username displayname avatar partnerStatus followers{totalCount}}}"}'

The response would be in the following format:

{
"data": {
"userByDisplayName": {
"username": "dbl-lee",
"displayname": "Potato",
"avatar": "https://images.prd.dlivecdn.com/avatar/56dfd12a-4998-11e9-97f0-0eb3a818c822",
"partnerStatus": "NONE",
"followers": {
"totalCount": 170
}
}
}
}

Variable

You may want to reuse the query with different inputs:

query sampleQuery($displayname: String!){
userByDisplayName(displayname:$displayname) {
username
displayname
avatar
partnerStatus
followers {
totalCount
}
}
}

which translates to curl request:

curl 'https://graphigo.prd.dlive.tv/' --data-binary '{"operationName":"sampleQuery","variables":{"displayname":"Potato"},"query":"query sampleQuery($displayname: String!) {userByDisplayName(displayname: $displayname) {username displayname avatar partnerStatus followers{totalCount}}}"}'

Nested query

If a field is of type User like list field in followers subfield, you could query information of the users in one query:

query{
userByDisplayName(displayname:"Potato") {
username
displayname
avatar
partnerStatus
followers(first: 5) {
totalCount
list {
username
displayname
avatar
}
}
}
}

which returns data:

{
"data": {
"userByDisplayName": {
"username": "dbl-lee",
"displayname": "Potato",
"avatar": "https://images.prd.dlivecdn.com/avatar/56dfd12a-4998-11e9-97f0-0eb3a818c822",
"partnerStatus": "NONE",
"followers": {
"totalCount": 170,
"list": [
{
"username": "dlive-45601904",
"displayname": "SweetCakes",
"avatar": "https://images.prd.dlivecdn.com/avatar/6f5bb99c-824a-11e9-a9d7-9a767b854a09"
},
{
"username": "greatkris",
"displayname": "greatkris",
"avatar": "https://images.prd.dlivecdn.com/avatar/e943de8c-f59f-11e8-aa1d-d22472f442c9"
},
{
"username": "dlive-23624498",
"displayname": "CaptainJackedPickle",
"avatar": "https://images.prd.dlivecdn.com/avatar/8440ac7a-82f3-11e9-a9d7-9a767b854a09"
},
{
"username": "bama256",
"displayname": "BAMA256",
"avatar": "https://images.prd.dlivecdn.com/avatar/a02c2bab-84aa-11e9-a9d7-9a767b854a09"
},
{
"username": "cjrodriguez",
"displayname": "THEONE2187",
"avatar": "https://images.prd.dlivecdn.com/thumbnail/ab9d883e-30aa-11e9-9f23-8ec705f1dd1b"
}
]
}
}
}
}

But note that, we do have a limit on complexity of the query and a too complex query would receive an HTTP error with code 422.

Me

To obtain user information from an access token. Use me query with user access token in authorization header. Note that some private info need specific scope and if you don't have required scope an error will be returned.

Sample:

query {
me {
username
displayname
private {
email // which requires email:read scope
phone // which requires phone:read scope
}
}
}

Livestream

livestream field in user type indicates whether the user is streaming and corresponding livestream info. null means the user is offline.