Skip to content
On this page

Admin User API

EndpointMethodDescription
/jsonRpc/user.getUserModeljsonRpcGet user model
/jsonRpc/user.getUserSimpleModeljsonRpcGet user simple model
/jsonRpc/user.listUsersjsonRpcList users
/jsonRpc/user.listActiveUsersjsonRpcList active users
/jsonRpc/user.searchUsersjsonRpcSearch users
/jsonRpc/user.searchActiveUsersjsonRpcSearch active users
/jsonRpc/user.updateUserPasswordjsonRpcUpdate user password
/jsonRpc/user.updateUserAvatarjsonRpcUpdate user avatar
/jsonRpc/user.updateUserProfilejsonRpcUpdate user profile
/jsonRpc/user.updateUserCompanyInfojsonRpcUpdate user company info
/jsonRpc/user.enableUserjsonRpcEnable user
/jsonRpc/user.disableUserjsonRpcDisable user
/jsonRpc/user.unlinkSocialjsonRpcUnlink social
/jsonRpc/user.getSocialModelsjsonRpcGet social models
/jsonRpc/user.linkVerusTestnetIdentityjsonRpcLink verus testnet identity
/jsonRpc/user.getContactsjsonRpcGet contacts
/jsonRpc/user.searchContactsjsonRpcSearch contacts
/jsonRpc/user.getSortingTablejsonRpcGet sorting table
/jsonRpc/user.deleteResourcesFromSortingTablejsonRpcDelete resources from sorting table
/jsonRpc/user.getUserBalancejsonRpcGet user balance
/jsonRpc/user.updateBalancejsonRpcUpdate balance

Get user model

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.getUserModel

Permissions:

network.manage /networkId (permission not needed for fetching user own model)

Request:

{
    "userId": string
}

Response:

{
    "data": {
        "user": {
            "id": string
            "created": timestamp
            "updated": timestamp
            "companyName": string  // name of company that user represents
            "companyTitle": string  // user title in the company
            "firstName": string
            "lastName": string
            "birthday": string
            "hometown": string
            "education": string
            "zipCode": string
            "description": string
            "linkUrl": string
            "privacyMode": int  // 0 - Default, 1 - Incognito
            "avatar": string  // url or resource id
            "avatar3D": {  // asset of user 3D avatar
                "assetId": string
                "assetSkins": map[string]string  // map of selected skins per variants
                "avatarUrl": string  // url to gbl file (Ready Player Me)
                "avatarUserId": string  // user id for session recovery (Ready Player Me)
            }
            "params": map[string]{ custom structure }  // custom user parameters, for example link to Zoom conference
            "identityType": int  // 0 - Not Assigned, 1 - SSID, 2 - VSSID
            "identityName": string  // Verus identity name
            "zAddress": string  // z-address of user, generated by client application using Verus scoped root key
            "publicRoomCount": int
            "contactCount": int
            "pendingContactCount": int
            "newInvitationsCount": int
            "pendingRequestCount": int
            "newNotificationsCount": int
            "idealMatchCount": int
            "isDisabled": bool
            "isNew": bool
            "email": string
            "emailVerified": bool
            "phoneNumber": string
        }
        "roles": [{
            "id": string
            "roleName": string
            "targetType": string  // optional, type of object role could be linked to, like network/room/prop
            "isBuildIn": bool  // true for system build in roles (cannot be deleted)
            "permissions": [ string ]
            "targetId": string  // optional, id of object role is linked to
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get user simple model

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.getUserSimpleModel

Request:

{
    "userId": string
}

Response:

{
    "data": {
        "user": { user simple structure }
    }
    "error": { "status": bool, "code": int, "message": string }
}

List users

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.listUsers

Description: List all users, including disabled.

Permissions:

network.manage /networkId

Request:

{
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "users": [{
            "id": string
            "created": timestamp
            "updated": timestamp
            "companyName": string  // name of company that user represents
            "companyTitle": string  // user title in the company
            "firstName": string
            "lastName": string
            "birthday": string
            "hometown": string
            "education": string
            "zipCode": string
            "description": string
            "linkUrl": string
            "privacyMode": int  // 0 - Default, 1 - Incognito
            "avatar": string  // url or resource id
            "avatar3D": {  // asset of user 3D avatar
                "assetId": string
                "assetSkins": map[string]string  // map of selected skins per variants
                "avatarUrl": string  // url to gbl file (Ready Player Me)
                "avatarUserId": string  // user id for session recovery (Ready Player Me)
            }
            "params": map[string]{ custom structure }  // custom user parameters, for example link to Zoom conference
            "identityType": int  // 0 - Not Assigned, 1 - SSID, 2 - VSSID
            "identityName": string  // Verus identity name
            "zAddress": string  // z-address of user, generated by client application using Verus scoped root key
            "publicRoomCount": int
            "contactCount": int
            "pendingContactCount": int
            "newInvitationsCount": int
            "pendingRequestCount": int
            "newNotificationsCount": int
            "idealMatchCount": int
            "isDisabled": bool
            "isNew": bool
            "email": string
            "emailVerified": bool
            "phoneNumber": string
        }]
        "total": int  // total users in network (matching the query)
    }
    "error": { "status": bool, "code": int, "message": string }
}

List active users

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.listActiveUsers

Description: List active users.

Permissions:

network.manage /networkId

Request:

{
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "users": [{
            "id": string
            "created": timestamp
            "updated": timestamp
            "companyName": string  // name of company that user represents
            "companyTitle": string  // user title in the company
            "firstName": string
            "lastName": string
            "birthday": string
            "hometown": string
            "education": string
            "zipCode": string
            "description": string
            "linkUrl": string
            "privacyMode": int  // 0 - Default, 1 - Incognito
            "avatar": string  // url or resource id
            "avatar3D": {  // asset of user 3D avatar
                "assetId": string
                "assetSkins": map[string]string  // map of selected skins per variants
                "avatarUrl": string  // url to gbl file (Ready Player Me)
                "avatarUserId": string  // user id for session recovery (Ready Player Me)
            }
            "params": map[string]{ custom structure }  // custom user parameters, for example link to Zoom conference
            "identityType": int  // 0 - Not Assigned, 1 - SSID, 2 - VSSID
            "identityName": string  // Verus identity name
            "zAddress": string  // z-address of user, generated by client application using Verus scoped root key
            "publicRoomCount": int
            "contactCount": int
            "pendingContactCount": int
            "newInvitationsCount": int
            "pendingRequestCount": int
            "newNotificationsCount": int
            "idealMatchCount": int
            "isDisabled": bool
            "isNew": bool
            "email": string
            "emailVerified": bool
            "phoneNumber": string
        }]
        "total": int  // total users in network (matching the query)
    }
    "error": { "status": bool, "code": int, "message": string }
}

Search users

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.searchUsers

Description: Search all users, including disabled.

Permissions:

network.manage /networkId

Request:

{
    "text": string
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "users": [{
            "id": string
            "created": timestamp
            "updated": timestamp
            "companyName": string  // name of company that user represents
            "companyTitle": string  // user title in the company
            "firstName": string
            "lastName": string
            "birthday": string
            "hometown": string
            "education": string
            "zipCode": string
            "description": string
            "linkUrl": string
            "privacyMode": int  // 0 - Default, 1 - Incognito
            "avatar": string  // url or resource id
            "avatar3D": {  // asset of user 3D avatar
                "assetId": string
                "assetSkins": map[string]string  // map of selected skins per variants
                "avatarUrl": string  // url to gbl file (Ready Player Me)
                "avatarUserId": string  // user id for session recovery (Ready Player Me)
            }
            "params": map[string]{ custom structure }  // custom user parameters, for example link to Zoom conference
            "identityType": int  // 0 - Not Assigned, 1 - SSID, 2 - VSSID
            "identityName": string  // Verus identity name
            "zAddress": string  // z-address of user, generated by client application using Verus scoped root key
            "publicRoomCount": int
            "contactCount": int
            "pendingContactCount": int
            "newInvitationsCount": int
            "pendingRequestCount": int
            "newNotificationsCount": int
            "idealMatchCount": int
            "isDisabled": bool
            "isNew": bool
            "email": string
            "emailVerified": bool
            "phoneNumber": string
        }]
        "total": int  // total users in network (matching the query)
    }
    "error": { "status": bool, "code": int, "message": string }
}

Search active users

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.searchActiveUsers

Description: Search active users.

Permissions:

network.manage /networkId

Request:

{
    "text": string
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "users": [{
            "id": string
            "created": timestamp
            "updated": timestamp
            "companyName": string  // name of company that user represents
            "companyTitle": string  // user title in the company
            "firstName": string
            "lastName": string
            "birthday": string
            "hometown": string
            "education": string
            "zipCode": string
            "description": string
            "linkUrl": string
            "privacyMode": int  // 0 - Default, 1 - Incognito
            "avatar": string  // url or resource id
            "avatar3D": {  // asset of user 3D avatar
                "assetId": string
                "assetSkins": map[string]string  // map of selected skins per variants
                "avatarUrl": string  // url to gbl file (Ready Player Me)
                "avatarUserId": string  // user id for session recovery (Ready Player Me)
            }
            "params": map[string]{ custom structure }  // custom user parameters, for example link to Zoom conference
            "identityType": int  // 0 - Not Assigned, 1 - SSID, 2 - VSSID
            "identityName": string  // Verus identity name
            "zAddress": string  // z-address of user, generated by client application using Verus scoped root key
            "publicRoomCount": int
            "contactCount": int
            "pendingContactCount": int
            "newInvitationsCount": int
            "pendingRequestCount": int
            "newNotificationsCount": int
            "idealMatchCount": int
            "isDisabled": bool
            "isNew": bool
            "email": string
            "emailVerified": bool
            "phoneNumber": string
        }]
        "total": int  // total users in network (matching the query)
    }
    "error": { "status": bool, "code": int, "message": string }
}

Update user password

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.updateUserPassword

Permissions:

all (permission not needed for changing own user)

Request:

{
    "userId": string
    "password": string
}

Response:

{ empty }

Update user avatar

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.updateUserAvatar

Permissions:

network.manage /networkId (permission not needed for changing own user)

Request:

{
    "userId": string
    "avatar": string
}

Response:

{ empty }

Update user profile

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.updateUserProfile

Permissions:

network.manage /networkId (permission not needed for changing own user)

Request:

{
    "userId": string
    "firstName": string
    "lastName": string
    "birthday": string
    "hometown": string
    "education": string
    "description": string
    "linkUrl": string
    "privacyMode": int
}

Response:

{ empty }

Update user company info

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.updateUserCompanyInfo

Permissions:

network.manage /networkId (permission not needed for changing own user)

Request:

{
    "userId": string
    "companyName": string  // name of company that user represents
    "companyTitle": string  // user title in the company
}

Response:

{ empty }

Enable user

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.enableUser

Permissions:

network.manage /networkId

Request:

{
    "userId": string
}

Response:

{ empty }

Disable user

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.disableUser

Permissions:

network.manage /networkId

Request:

{
    "userId": string
}

Response:

{ empty }

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.unlinkSocial

Permissions:

user.manageSocialLinks

Request:

{
    "userId": string
    "socialKind": string
}

Response:

{ empty }

Get social models

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.getSocialModels

Permissions:

user.manageSocialLinks (permission not needed for listing user own social models)

Request:

{
    "userId": string
}

Response:

{
    "data": {
        "social": [{
            "kind": string  // roomful/google/apple/facebook/epam/verus/merkos302
            "socialId": string  // social account unique identifier
            "identityName": string  // Verus identity name
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.linkVerusTestnetIdentity

Permissions:

all

Request:

{
    "userId": string
    "identityName": string
}

Response:

{ empty }

Get contacts

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.getContacts

Request:

{
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "contacts": [{ user simple structure }]
        "total": int
    }
    "error": { "status": bool, "code": int, "message": string }
}

Search contacts

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.searchContacts

Request:

{
    "text": string
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "contacts": [{ user simple structure }]
        "total": int
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get sorting table

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.getSortingTable

Request:

{
    "offset": int
    "size": int
}

Response:

{
    "data": {
        "content": [{ resource structure }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Delete resources from sorting table

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.deleteResourcesFromSortingTable

Request:

{
    "resourceIds": [ string ]
}

Response:

{ empty }

Get user balance

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.getUserBalance

Permissions:

balance.manage (permission not needed for user own balance)

Request:

{
    "userId": string
}

Response:

{
    "data": {
        "balance": {
            "token": float
            "user": string
            "updated": timestamp
            "created": timestamp
            "transactions": {
                "spending": map[string]float
                "mining": map[string]float
                "buying": map[string]float
            }
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Update balance

Method: jsonRpc

HTTP Method: POST

Path: /jsonRpc/user.updateBalance

Permissions:

balance.manage

Request:

{
    "userId": string
    "updateAmount": float
}

Response:

{
    "data": {
        "balance": {
            "token": float
            "user": string
            "updated": timestamp
            "created": timestamp
            "transactions": {
                "spending": map[string]float
                "mining": map[string]float
                "buying": map[string]float
            }
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Models


User Simple

{
    "id": string
    "firstName": string
    "lastName": string
    "privacyMode": int  // 0 - Default, 1 - Incognito
    "avatar": string
    "avatar3D": {  // field is not returned if empty
        "assetId": string
        "assetSkins": map[string]string  // map of selected skins per variants
        "avatarUrl": string  // url to gbl file (Ready Player Me)
        "avatarUserId": string  // user id for session recovery (Ready Player Me)
    }
    "companyName": string  // name of company that user represents
    "companyTitle": string  // user title in the company
}

Resource

{
    "id": string
    "created": timestamp
    "updated": timestamp
    "title": string
    "description": string
    "location": string
    "date": string
    "category": string
    "linkId": string  // id of resource link is pointing to
    "linkType": string  // global/local
    "encryptionVersion": string  // encryption version, like 'verus.v1'
    "encryptionEpoch": int  // epoch defines key bundle that was used for encryption
    "encryptionEpk": string  // ephemeral public key that should be used to decrypt cypher data
    "belonging": string  // determines resource location in the system in a way 'belongingType:belongingPath(networkId)'
    "status": string  // pending/processing/ready/failed
    "metadata": {
        "fileName": string
        "fileSize": int
        "fileDate": timestamp
        "behaviourType": string
        "contentType": string
        "convertedFrom": string
        "link": string
        "origin": { resource origin structure }
        "geolocation": { geolocation structure }
        "dimensions": { dimensions structure }
    }
    "thumbnail": string
    "fromTemplate": bool
    "totalReactions": int  // amount of users who reacted to the resource
    "data": {
        "audio": { resource data audio structure }
        "video": { resource data video structure }
        "amazon": { resource data amazon structure }
        "imdb": { resource data imdb structure }
        "youtube": { resource data youtube structure }
        "pinterest": { resource data pinterest structure }
        "pixabay": { resource data pixabay structure }
        "facebook": { resource data facebook structure }
        "remoteUrl": { resource data remote url structure }
        "liveStream": { live stream data structure }
        "aiGeneration": { ai generation data structure }
        "thumbnailUrl": string
        "downloadUrl": string
        "directory": { resource data directory structure }
        "channel": { channel data structure }
        "googleDrive": { google drive structure }
    }
    "customParams": map[string]{ custom structure }  // client defined parameters
    "actions": [{ programmatic action with children structure }]  // custom programmatic actions from users
}

Resource Origin

{
    "type": string
    "device": string
    "deviceName": string
    "path": string
}

Geolocation

{
    "latitude": float
    "longitude": float
}

Dimensions

{
    "width": int
    "height": int
    "orientation": int
}

Resource Data Audio

{
    "title": string
    "artist": string
    "album": string
    "genre": string
    "duration": int
    "durationFloat": float
}

Resource Data Video

{
    "duration": int
    "durationFloat": float
    "hasAlphaChannel": bool  // true, if video generated from gif with transparent pixels
    "alphaChannel": string  // alpha channel video resource (if generated from gif)
}

Resource Data Amazon

{
    "asin": string
    "summary": string
    "author": [ string ]
    "manufacturer": string
    "title": string
    "publicationDate": string
    "url": string
}

Resource Data Imdb

{
    "Actors": string
    "Genre": string
    "Ratings": [{
        "Source": string
        "Value": string
    }]
    "Released": string
    "Runtime": string
    "Website": string
    "Year": string
    "Trailers": [ string ]
    "imdbID": string
}

Resource Data Youtube

{
    "videoId": string
    "formatId": string
}

Resource Data Pinterest

{
    "pin": string
    "url": string
}

Resource Data Pixabay

{
    "id": string
    "pageUrl": string
}

Resource Data Facebook

{
    "id": string
}

Resource Data Remote Url

{
    "url": string
    "urlType": string
    "favicon": string
    "title": string
}

Live Stream Data

{
    "streamId": string
    "assetId": string
    "playbackUrl": string
    "masterUrl": string
}

AI Generation Data

{
    "generationModel": string  // the model used for image generation [dall-e-3]
    "prompt": string  // a text description of the desired image
    "revisedPrompt": string  // the prompt that was used to generate the image, if there was any revision to the prompt
    "url": string  // the URL of the generated image
}

Resource Data Directory

{
    "innerContentType": string
    "innerContentCount": int
}

Channel Data

{
    "communityId": string
    "channelId": string
    "subChannelId": string
    "messageId": string
}

Google Drive

{
    "fileId": string
    "name": string
    "mimeType": string
}

Programmatic Action with children

{
    "localId": string  // local action id, operated by client side only
    "eventName": string
    "actionName": string
    "actionData": {
        "usedPropId": string
        "usedRoomId": string
        "usedNetworkId": string
        "usedStorylineId": string
        "usedQuestionId": int
        "usedQuestionnaireId": int
        "usedSegmentId": string
        "usedPlacementAreaId": string
        "usedRoomPoint": string
        "animationData": map[string]{ custom structure }
    }
    "childActions": [{ programmatic action structure }]
}

Programmatic Action

{
    "localId": string  // local action id, operated by client side only
    "eventName": string
    "actionName": string
    "actionData": {
        "usedPropId": string
        "usedRoomId": string
        "usedNetworkId": string
        "usedStorylineId": string
        "usedQuestionId": int
        "usedQuestionnaireId": int
        "usedSegmentId": string
        "usedPlacementAreaId": string
        "usedRoomPoint": string
        "animationData": map[string]{ custom structure }
    }
}