Admin Network API
Parse network participant spreadsheet
HTTP Method: POST
Path: /files/parseNetworkParticipantSpreadsheet
Permissions:
network.manage /networkId
Request:
multipart form with xslx spreadsheet file
Response:
[{
"email": string
"firstName": string
"lastName": string
"companyName": string
"companyTitle": string
}]
Generate network plugin json
HTTP Method: GET
Path: /files/generateNetworkPluginSettings/{networkId}.json
Permissions:
network.manage /networkId
Request:
{ empty }
Response:
json network plugin settings
Get network model
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.getNetworkModel
Permissions:
user subscribed to network
network.manage
network.listHidden
Request:
{
"networkId": string
}
Response:
{
"data": {
"network": { network structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Get network info
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.getNetworkInfo
Permissions:
user subscribed to network
network.manage
network.listHidden
Request:
{
"networkId": string
}
Response:
{
"data": {
"network": { network 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
}
"subscribed": bool
"subscriptionOptions": [{
"type": string // free/one_time_payment/subscription_week/subscription_month/subscription_year
"token": float // subscription cost in tokens
}]
}
"error": { "status": bool, "code": int, "message": string }
}
Get private network model
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.getPrivateNetworkModel
Permissions:
network.listHidden
Request:
{
"networkId": string
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Get clusters
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.getClusters
Permissions:
all
Request:
{ empty }
Response:
{
"data": {
"clusters": [{
"clusterName": string
"numberOfNetworks": int
}]
}
"error": { "status": bool, "code": int, "message": string }
}
Create network
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.createNetwork
Permissions:
all
Request:
{
"network": { network structure }
"subscriptionOptions": [{
"type": string
"action": string
}]
"settings": {
"permissions": {
"publishRoom": [ string ]
}
"general": {
"countryId": int // in case if network is dedicated to a country
"packageName": string // in case if network has package specific content
"applicationName": string // in case if network has its own application
"domainNames": [ string ] // in case if network has dedicated domain names
"presentationDomain": string // default domain for presentation (without redactor)
"studioDomain": string // default domain for studio (with redactor)
"shareDomain": string // domain for share server
"ssoProviders": [ string ] // epam, epam.social[google,facebook,linkedin]
"loaderType": int // 0 - logo, 1 - hybrid, 2 - slideshow, 3 - video
"logoUrl": string // url
"loadingVideoUrl": string // url or youtube id
"defaultPassword": string // default password for conference
"autoVerification": bool // if true, all newly registered users are verified by default
"disableEmailLogin": bool // if true, client application shouldn't show email login option
"disableSsoLogin": bool // if true, client application shouldn't show sso login options
"sendTextchatEmail": bool // if true, send email that user has new direct textchat message
"templateStyles": [ string ] // filter network templates by styles
"disableDefaultTemplates": bool // if true, return room templates only from current network
}
"defaults": {
"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
}
"dataCollection": {
"useDefault": bool // if true, network will use data collection server from default network
"clientUrl": string
"systemUrl": string
"clientId": string
"authKey": string
}
"matchmaking": {
"autoInviteSupportersToIdealMatchRoom": bool
}
"videochat": {
"defaultVideochatSettings": {
"videochatMode": string // videochat/conference
"videochatType": string // twilio only (peer-to-peer/group/group-small)
"videochatEngine": string // twilio/agora/livekit
"videochatInitUser": string // who can start the videochat (any/manager)
"excludeListeners": bool // don't show non-promoted videochat users
"usePresentationBoard": bool // use presentation board as share screen media
"enableStreaming": bool // enable videochat streaming to non participants
"notificationMode": int // notification mode for videochat events
"autoPromotion": {
"useCustomSettings": bool // if false, videochat will use server default settings
"autoPromotionLimit": int // limit of participants with automatic voice permissions
"autoDemoteOnLimit": bool // demote participants that were automatically promoted
}
"limitSettings": {
"useCustomSettings": bool // if false, videochat will use server default settings
"videochatLimit": int // amount of identities allowed in videochat (0 means unlimited)
}
}
}
}
"clusterName": string
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Search network models
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.searchNetworkModels
Permissions:
network.listHidden
Request:
{
"text": string
"offset": int
"size": int
}
Response:
{
"data": {
"networks": [{ network private structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
List network models
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.listNetworkModels
Permissions:
network.listHidden
Request:
{ empty }
Response:
{
"data": {
"networks": [{ network private structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
List active network models
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.listActiveNetworkModels
Permissions:
network.listHidden
Request:
{ empty }
Response:
{
"data": {
"networks": [{ network private structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
List user networks
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.listUserNetworks
Request:
{ empty }
Response:
{
"data": {
"networks": [{ network structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
Activate network
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.activateNetwork
Permissions:
all
Request:
{
"networkId": string
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Disable network
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.disableNetwork
Permissions:
all
Request:
{
"networkId": string
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Set network thumbnail
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.setNetworkThumbnail
Permissions:
network.manage /networkId
Request:
{
"networkId": string
"thumbnail": string
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Set network settings
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.setNetworkSettings
Permissions:
all
Request:
{
"networkId": string
"settings": {
"permissions": {
"publishRoom": [ string ]
}
"general": {
"countryId": int // in case if network is dedicated to a country
"packageName": string // in case if network has package specific content
"applicationName": string // in case if network has its own application
"domainNames": [ string ] // in case if network has dedicated domain names
"presentationDomain": string // default domain for presentation (without redactor)
"studioDomain": string // default domain for studio (with redactor)
"shareDomain": string // domain for share server
"ssoProviders": [ string ] // epam, epam.social[google,facebook,linkedin]
"loaderType": int // 0 - logo, 1 - hybrid, 2 - slideshow, 3 - video
"logoUrl": string // url
"loadingVideoUrl": string // url or youtube id
"defaultPassword": string // default password for conference
"autoVerification": bool // if true, all newly registered users are verified by default
"disableEmailLogin": bool // if true, client application shouldn't show email login option
"disableSsoLogin": bool // if true, client application shouldn't show sso login options
"sendTextchatEmail": bool // if true, send email that user has new direct textchat message
"templateStyles": [ string ] // filter network templates by styles
"disableDefaultTemplates": bool // if true, return room templates only from current network
}
"defaults": {
"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
}
"dataCollection": {
"useDefault": bool // if true, network will use data collection server from default network
"clientUrl": string
"systemUrl": string
"clientId": string
"authKey": string
}
"matchmaking": {
"autoInviteSupportersToIdealMatchRoom": bool
}
"videochat": {
"defaultVideochatSettings": {
"videochatMode": string // videochat/conference
"videochatType": string // twilio only (peer-to-peer/group/group-small)
"videochatEngine": string // twilio/agora/livekit
"videochatInitUser": string // who can start the videochat (any/manager)
"excludeListeners": bool // don't show non-promoted videochat users
"usePresentationBoard": bool // use presentation board as share screen media
"enableStreaming": bool // enable videochat streaming to non participants
"notificationMode": int // notification mode for videochat events
"autoPromotion": {
"useCustomSettings": bool // if false, videochat will use server default settings
"autoPromotionLimit": int // limit of participants with automatic voice permissions
"autoDemoteOnLimit": bool // demote participants that were automatically promoted
}
"limitSettings": {
"useCustomSettings": bool // if false, videochat will use server default settings
"videochatLimit": int // amount of identities allowed in videochat (0 means unlimited)
}
}
}
}
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Set network plugin settings
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.setNetworkPluginSettings
Permissions:
all
Request:
{
"networkId": string
"pluginSettings": {
"expoTitle": string
"disclaimer": string
"style": string
"logoUrl": string
"expositionDomain": string
"scroll": string
"appStoreId": string
"googleStoreId": string
"autoPlayOnClick": bool
"autoPlayOnStart": bool
"enablePlugin": bool
"initRoute": {
"room": string
"prop": string
}
"menuItems": [{
"directory": string
"link": string
"title": string
"room": string
"prop": string
"target": string
"onlyForAttendees": bool // if true, menu item will be greyed out until user has network.attendee permission
}]
"helpLink": {
"link": string
"title": string
"target": string
}
"directory": [{ // directory item could be nested or single
"title": string
"room": string // target room id
"prop": string // target prop id
"tag": string // fetch rooms with a tag
"tagSortBy": string // popularity/userActivity
"target": string
"onlyForAttendees": bool // if true, directory item will be greyed out until user has network.attendee permission
"link": string // link to specific route
"interactive": bool // can be clicked if true
"icon": string // empty if nested
"items": [{ NetworkPluginDirectoryItem structure }] // same structure as directory, if nested; empty, if single'
}]
}
}
Response:
{
"data": {
"network": { network private structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Generate network plugin settings
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.generateNetworkPluginSettings
Permissions:
all
Request:
{
"networkId": string
}
Response:
{
"data": {
"pluginSettings": {
"expoTitle": string
"disclaimer": string
"style": string
"logoUrl": string
"expositionDomain": string
"scroll": string
"appStoreId": string
"googleStoreId": string
"autoPlayOnClick": bool
"autoPlayOnStart": bool
"enablePlugin": bool
"initRoute": {
"room": string
"prop": string
}
"menuItems": [{
"directory": string
"link": string
"title": string
"room": string
"prop": string
"target": string
"onlyForAttendees": bool // if true, menu item will be greyed out until user has network.attendee permission
}]
"helpLink": {
"link": string
"title": string
"target": string
}
"directory": [{ // directory item could be nested or single
"title": string
"room": string // target room id
"prop": string // target prop id
"tag": string // fetch rooms with a tag
"tagSortBy": string // popularity/userActivity
"target": string
"onlyForAttendees": bool // if true, directory item will be greyed out until user has network.attendee permission
"link": string // link to specific route
"interactive": bool // can be clicked if true
"icon": string // empty if nested
"items": [{ NetworkPluginDirectoryItem structure }] // same structure as directory, if nested; empty, if single'
}]
}
}
"error": { "status": bool, "code": int, "message": string }
}
Is user subscribed to network
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.isUserSubscribedToNetwork
Description: API checks if user is subscribed to network.
Permissions:
network.manage /networkId
Request:
{
"userId": string
"networkId": string
}
Response:
{
"data": {
"isSubscribed": bool
}
"error": { "status": bool, "code": int, "message": string }
}
Subscribe user to network
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.subscribeUserToNetwork
Description: API subscribes user to network.
Permissions:
network.manage /networkId
Request:
{
"userId": string
"networkId": string
}
Response:
{ empty }
Add network participant
Method: jsonRpc
HTTP Method: POST
Path: /jsonRpc/network.addNetworkParticipant
Description: API creates new user (or takes existing one), subscribes him to network and sets company info.
Permissions:
network.manage /networkId
Request:
{
"participant": {
"email": string
"firstName": string
"lastName": string
"companyName": string
"companyTitle": string
}
"networkId": string
"password": string
}
Response:
{ empty }
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
}
Network Private
{
"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
"simpleName": string
"clusterName": string
"keyspaceName": string
"searchIndexPrefix": string
"isActive": bool
"isDefault": bool
"isHidden": bool // do not return network when user requests for list of network (except for developers)
"subscriptionOptions": [{
"type": string
"action": string
}]
"settings": {
"permissions": {
"publishRoom": [ string ]
}
"general": {
"countryId": int // in case if network is dedicated to a country
"packageName": string // in case if network has package specific content
"applicationName": string // in case if network has its own application
"domainNames": [ string ] // in case if network has dedicated domain names
"presentationDomain": string // default domain for presentation (without redactor)
"studioDomain": string // default domain for studio (with redactor)
"shareDomain": string // domain for share server
"ssoProviders": [ string ] // epam, epam.social[google,facebook,linkedin]
"loaderType": int // 0 - logo, 1 - hybrid, 2 - slideshow, 3 - video
"logoUrl": string // url
"loadingVideoUrl": string // url or youtube id
"defaultPassword": string // default password for conference
"autoVerification": bool // if true, all newly registered users are verified by default
"disableEmailLogin": bool // if true, client application shouldn't show email login option
"disableSsoLogin": bool // if true, client application shouldn't show sso login options
"sendTextchatEmail": bool // if true, send email that user has new direct textchat message
"templateStyles": [ string ] // filter network templates by styles
"disableDefaultTemplates": bool // if true, return room templates only from current network
}
"defaults": {
"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
}
"dataCollection": {
"useDefault": bool // if true, network will use data collection server from default network
"clientUrl": string
"systemUrl": string
"clientId": string
"authKey": string
}
"matchmaking": {
"autoInviteSupportersToIdealMatchRoom": bool
}
"videochat": {
"defaultVideochatSettings": {
"videochatMode": string // videochat/conference
"videochatType": string // twilio only (peer-to-peer/group/group-small)
"videochatEngine": string // twilio/agora/livekit
"videochatInitUser": string // who can start the videochat (any/manager)
"excludeListeners": bool // don't show non-promoted videochat users
"usePresentationBoard": bool // use presentation board as share screen media
"enableStreaming": bool // enable videochat streaming to non participants
"notificationMode": int // notification mode for videochat events
"autoPromotion": {
"useCustomSettings": bool // if false, videochat will use server default settings
"autoPromotionLimit": int // limit of participants with automatic voice permissions
"autoDemoteOnLimit": bool // demote participants that were automatically promoted
}
"limitSettings": {
"useCustomSettings": bool // if false, videochat will use server default settings
"videochatLimit": int // amount of identities allowed in videochat (0 means unlimited)
}
}
}
}
"pluginSettings": {
"expoTitle": string
"disclaimer": string
"style": string
"logoUrl": string
"expositionDomain": string
"scroll": string
"appStoreId": string
"googleStoreId": string
"autoPlayOnClick": bool
"autoPlayOnStart": bool
"enablePlugin": bool
"initRoute": {
"room": string
"prop": string
}
"menuItems": [{
"directory": string
"link": string
"title": string
"room": string
"prop": string
"target": string
"onlyForAttendees": bool // if true, menu item will be greyed out until user has network.attendee permission
}]
"helpLink": {
"link": string
"title": string
"target": string
}
"directory": [{ // directory item could be nested or single
"title": string
"room": string // target room id
"prop": string // target prop id
"tag": string // fetch rooms with a tag
"tagSortBy": string // popularity/userActivity
"target": string
"onlyForAttendees": bool // if true, directory item will be greyed out until user has network.attendee permission
"link": string // link to specific route
"interactive": bool // can be clicked if true
"icon": string // empty if nested
"items": [{ NetworkPluginDirectoryItem structure }] // same structure as directory, if nested; empty, if single'
}]
}
}