{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "NeosHeadlessConfig", "type": "object", "description": "Options used to configure a Neos Headless server. Read in from a JSON file on Headless start.", "additionalProperties": false, "required": [ "startWorlds" ], "properties": { "$schema": { "type": [ "null", "string" ], "description": "JSONSchema for this file, used for external users to validate and test this file." }, "comment": { "type": [ "null", "string" ], "description": "An optional free form comment for this file. Used for identification for your configuration." }, "universeId": { "type": [ "null", "string" ], "description": "Optionally, specifies which universe this Headless Server will be in. See our wiki article on Universes for more info." }, "tickRate": { "type": "number", "description": "Configures how many ticks(updates), should occur per second. Default is 60.", "format": "float" }, "maxConcurrentAssetTransfers": { "type": "integer", "description": "Specifies the maximum concurrent asset transfers for this headless server. Default is 4.", "format": "int32" }, "usernameOverride": { "type": [ "null", "string" ], "description": "Configures a username which will override LoginCredential, within the world browser etc." }, "loginCredential": { "type": [ "null", "string" ], "description": "Neos username for this Headless Server to use." }, "loginPassword": { "type": [ "null", "string" ], "description": "Neos user password for the Headless Server to use." }, "startWorlds": { "type": "array", "description": "A list of worlds/sessions to start/create when this Headless Server starts.", "items": { "$ref": "#/definitions/WorldStartupParameters" } }, "dataFolder": { "type": [ "null", "string" ], "description": "Optionally, override the folder which Neos will use to store data for this Headless Server." }, "cacheFolder": { "type": [ "null", "string" ], "description": "Optionally, override the folder which Neos will use to store cache for this Headless Server." }, "logsFolder": { "type": [ "null", "string" ], "description": "Optionally, override the folder which Neos will use to store logs for this Headless Server." }, "allowedUrlHosts": { "type": [ "array", "null" ], "description": "A list of hosts which will automatically be allowed for in-Neos HTTP/WebSocket operations", "x-example": " ...\n \"allowedUrlHosts\":[\n \"google.com\",\n \"localhost:3000\"\n ]", "items": { "type": "string" } }, "autoSpawnItems": { "type": [ "array", "null" ], "description": "A list of item URIs to spawn in when a world starts.", "items": { "type": "string" } } }, "definitions": { "WorldStartupParameters": { "type": "object", "description": "These options are used to configure a startup word from a JSON configuration file.", "additionalProperties": false, "properties": { "isEnabled": { "type": "boolean", "description": "When set to false, this will disable this world entry from starting." }, "sessionName": { "type": [ "null", "string" ], "description": "The name of the session as shown in the World/Session Browser" }, "customSessionId": { "type": [ "null", "string" ], "description": "An optional custom session id for this session.", "x-example": "U-ProbablePrime:Cheese-Land" }, "description": { "type": [ "null", "string" ], "description": "An optional description of this session, displayed within the world/session browser." }, "maxUsers": { "type": "integer", "description": "The maximum number of users, allowed to join this session.", "format": "int32", "default": 32 }, "accessLevel": { "description": "The Access Level for this session please see SessionAccessLevel for more information.", "oneOf": [ { "$ref": "#/definitions/SessionAccessLevel" } ] }, "hideFromPublicListing": { "type": [ "boolean", "null" ], "description": "Determines if this session should be hidden from the world/session browser or not." }, "tags": { "type": [ "array", "null" ], "description": "A list of tags, to assist with searching or discovering sessions. ", "x-example": "cheese,world,game", "items": { "type": "string" } }, "mobileFriendly": { "type": "boolean", "description": "Determines if this session is friendly for mobile/quest users." }, "loadWorldURL": { "type": [ "null", "string" ], "description": "When provided with a world URL this will load this world for the session." }, "loadWorldPresetName": { "type": [ "null", "string" ], "description": "When provided and valid, this will load the specified world preset into the session." }, "overrideCorrespondingWorldId": { "description": "Overrides the world id for this session allowing it to be grouped and displayed with other sessions with this world id.", "oneOf": [ { "type": "null" }, { "$ref": "#/definitions/RecordId" } ] }, "forcePort": { "type": [ "integer", "null" ], "description": "Optional, If specified it will force this session to run on a specific network port." }, "keepOriginalRoles": { "type": "boolean", "description": "Optional, If specified will keep the original roles as saved in the world." }, "defaultUserRoles": { "type": [ "null", "object" ], "description": "When provided with a list of username and permission pairs it will grant those users the listed permissions when they join.", "x-example": "...\n\"defaultUserRoles\":[\n {\n \"User\": \"Admin\"\n }\n]\n...\n\n ", "additionalProperties": { "type": "string" } }, "roleCloudVariable": { "type": [ "null", "string" ], "description": "An optional name of a cloud variable to use to determine the role of this user. \nSee our wiki article for more information." }, "allowUserCloudVariable": { "type": [ "null", "string" ], "description": "An optional name of a cloud variable to use to determine if this user is allowed in the session. \nSee our wiki article for more information." }, "denyUserCloudVariable": { "type": [ "null", "string" ], "description": "An optional name of a cloud variable to use to determine if this user is denied access to the session. \nSee our wiki article for more information." }, "requiredUserJoinCloudVariable": { "type": [ "null", "string" ], "description": "An optional name of a cloud variable to use to determine if this user is denied access to the session. \nSee our wiki article for more information." }, "requiredUserJoinCloudVariableDenyMessage": { "type": [ "null", "string" ], "description": "The name of a cloud variable whose value will be used, When a user is denied access by RequiredUserJoinCloudVariable this message will be displayed to them if present.\nSee our wiki article for more information." }, "awayKickMinutes": { "type": "number", "description": "Configures the number of minutes that a user can be away(shelled out) from a world before they are kicked. Setting this to -1 disables this option.", "format": "double" }, "parentSessionIds": { "type": [ "array", "null" ], "description": "Provides a list of Parent Session Ids for this session. See our wiki for more info.", "items": { "type": "string" } }, "autoInviteUsernames": { "type": [ "array", "null" ], "description": "Users within this list will automatically be invited to this world when it starts.", "x-example": "...\n\"autoInviteUsernames\": [\n]\n...", "items": { "type": "string" } }, "autoInviteMessage": { "type": [ "null", "string" ], "description": "An automatic message sent to the users on the AutoInviteUsernames list along with their invite." }, "saveAsOwner": { "description": "Controls who saves this world when it is saved. See, SaveAsOwner for more information.", "oneOf": [ { "type": "null" }, { "$ref": "#/definitions/SaveAsOwner" } ] }, "autoRecover": { "type": "boolean", "description": "Headless only" }, "idleRestartInterval": { "type": "number", "description": "If this is set(>0) and the world is empty, it will restart regularly using the value to determine the number of seconds between restarts.\nHeadless only", "format": "double" }, "forcedRestartInterval": { "type": "number", "description": "If this is set(>0), it will restart regularly using the value to determine the number of seconds between restarts.\nHeadless only", "format": "double" }, "saveOnExit": { "type": "boolean", "description": "If set to true will save this world on exit." }, "autosaveInterval": { "type": "number", "description": "If this is set(>0), it will automatically save using the value to determine the number of seconds between saves.\nHeadless only", "format": "double" }, "autoSleep": { "type": "boolean", "description": "If set to true, will prevent an empty(or filled with away users) world from running a full update cycle regularily.\nHeadless only" } } }, "SessionAccessLevel": { "type": "string", "description": "Used to determine the session access level for a session.", "x-enumNames": [ "Private", "LAN", "Friends", "FriendsOfFriends", "RegisteredUsers", "Anyone" ], "enum": [ "Private", "LAN", "Friends", "FriendsOfFriends", "RegisteredUsers", "Anyone" ] }, "RecordId": { "type": "object", "additionalProperties": false, "properties": { "recordId": { "type": [ "null", "string" ] }, "ownerId": { "type": [ "null", "string" ] } } }, "SaveAsOwner": { "type": "string", "description": "", "x-enumNames": [ "LocalMachine", "CloudUser" ], "enum": [ "LocalMachine", "CloudUser" ] } } }