Admin User API
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 }
Unlink social
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 }
}
Link verus testnet identity
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 }
}
}