Skip to content
On this page

Admin Network API

EndpointMethodDescription
/files/parseNetworkParticipantSpreadsheetwebRequestParse network participant spreadsheet
/files/generateNetworkPluginSettings/{networkId}.jsonwebRequestGenerate network plugin json
/jsonRpc/network.getNetworkModeljsonRpcGet network model
/jsonRpc/network.getNetworkInfojsonRpcGet network info
/jsonRpc/network.getPrivateNetworkModeljsonRpcGet private network model
/jsonRpc/network.getClustersjsonRpcGet clusters
/jsonRpc/network.createNetworkjsonRpcCreate network
/jsonRpc/network.searchNetworkModelsjsonRpcSearch network models
/jsonRpc/network.listNetworkModelsjsonRpcList network models
/jsonRpc/network.listActiveNetworkModelsjsonRpcList active network models
/jsonRpc/network.listUserNetworksjsonRpcList user networks
/jsonRpc/network.activateNetworkjsonRpcActivate network
/jsonRpc/network.disableNetworkjsonRpcDisable network
/jsonRpc/network.setNetworkThumbnailjsonRpcSet network thumbnail
/jsonRpc/network.setNetworkSettingsjsonRpcSet network settings
/jsonRpc/network.setNetworkPluginSettingsjsonRpcSet network plugin settings
/jsonRpc/network.generateNetworkPluginSettingsjsonRpcGenerate network plugin settings
/jsonRpc/network.isUserSubscribedToNetworkjsonRpcIs user subscribed to network
/jsonRpc/network.subscribeUserToNetworkjsonRpcSubscribe user to network
/jsonRpc/network.addNetworkParticipantjsonRpcAdd network participant

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'
        }]
    }
}