Websocket API
| Endpoint | Method | Description |
|---|---|---|
| testVersionNotSupported | websocket | Test version not supported |
| invalidConnection | websocketEvent | Invalid connection event |
| user_info | websocketEvent | User info event |
Test version not supported
Method: websocket
Endpoint: testVersionNotSupported
Request:
{ empty }
Response:
{
"error": { "status": bool, "code": int, "message": string }
}
Invalid connection event
Event: invalidConnection
Description: Event is automatically emitted when second socket connection is initiated for user session or network is reset
Data:
{
"error": { "status": bool, "code": int, "message": string }
}
User info event
Event: user_info
Description: Event is automatically emitted for authorized socket connection
Data:
{
"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
"email": string
"emailVerified": bool
"phoneNumber": string
"permissions": {
"admin": bool
"developer": bool
}
"userRoles": [{
"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
}]
}
"network": { network structure }
"networkState": {
"defaultSubNetworkId": string
"data": map[string]{ custom structure }
}
"networkDefaults": {
"metaverseCurrency": string // in case when network has its own currency
"provisionCurrency": string // currency that is used for Verus provisioning
"enablePayments": bool // if true - client could purchase products; else - all products are free
"enableTokenomics": bool // if true - user will mint or spend tokens for his actions (like placing content in room)
"disableBalance": bool // DEPRECATED
"roomId": string // default room in network (e.g. Agora in humanity)
"storylineVideoSound": bool // enables video sound in storyline by default
"hasQuestionnaire": bool // enables matchmaking questionnaire
"hasSearchCard": bool // enables matchmaking search by search card
"hasGamingBalance": bool // enables gaming balance
"hasAnalytics": bool // enables analytics
"allUsersAreConnected": bool // if true, all users in network are friends by default
"disableOwnerBadge": bool // if true, disables room owner badge (crown) near avatar
"disableFavoriteRooms": bool // if true, disables favorite room appearance on client
"disableShareRoom": bool // if true, disables room sharing
"disableRoomCreation": bool // if true, disables room creation on client
"orderByFirstComments": bool // show first resource comments first
"hideTextchat": bool // if true, client shouldn't show textchat UI
"hideVideochat": bool // if true, client shouldn't show videochat UI
"hideSocialSessions": bool // if true, client shouldn't show social sessions UI
"allowHostSetup": bool // if true, allows user to setup personalised custom params for props in room
"socialCircleAsset": string // id of default asset for dynamic social circle
"socialCircleLimit": int // sets social circle limit, 0 = no limit
"allowAnonymous": bool // if true, users can access network without authorization
"onlyVerifiedAccounts": bool // if true, server would require to verify email before creating new user session
"singleScreenAuth": bool // if true, show registration and authorization on the same scene
"requireZipCode": bool // if true, zip code should be required field during registration
"paymentProviders": [ string ] // restricts use of payment providers (stripe/braintree/apple) in network; if empty, all providers are available
"aiEndpoint": string // address for AI server
"loadBalancerUrl": string // url of load balancer for playgrounds
"gamificationParticlesIndex": int // 0 - default, 1 - epam
"colorizationSchemeType": int // 0 - Default, 1 - Fabuwood
"defaultNavigationMode": int // 0 - classic, 1 - advanced, 2 - pro
"defaultButtonAppearance": int // 0 - default, 1 - show, 2 - hide
"hasCascadeTextchatSkin": bool // textchat cascade appearance in application
"animatedBackButton": bool // animate back button icon in application
"hasExpo": bool // informs clients that the network has expo
"expoStartDate": timestamp // timestamp when conference starts
"expoEndDate": timestamp // timestamp when conference ends
"hasAttendees": bool // enables additional room privacy settings
}
"presentationDomain": string // default domain for presentation (without redactor)
"studioDomain": string // default domain for studio (with redactor)
"shareDomain": string // default domain for sharing
"loadBalancerUrl": string // default url for load balancer
"userSettings": {
"email": {
"ignoreNewTextchatMessage": bool
}
"navigation": {
"navigationMode": int
"verticalSensitivity": float
"horizontalSensitivity": float
"joystickSettings": int
"helperButtonAppearance": int
}
"objectCollision": int
}
"isNew": bool
}
"error": { "status": bool, "code": int, "message": string }
}
Models
Network
{
"id": string
"created": timestamp
"updated": timestamp
"fullName": string
"type": string // Public/Matchmaking/BusinessSocial/NetworkConference/Humanity
"thumbnail": string // resourceId
"parentNetworkId": string // if not empty, current network is a sub network
}