{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "definitions": {
        "ContentProjectsMetadata": {
            "additionalProperties": false,
            "properties": {
                "compileCatalogs": {
                    "default": [],
                    "description": "If set, all found dependencies will change into the given catalog. You can set multiple catalogs here. This is useful for compiling\ncopies into draft catalogs.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "listOfIds": {
                    "description": "Add any loose itemIds or componentIds dependencies into this list. This is useful especially for variants."
                },
                "name": {
                    "description": "If set, this is the label that will show in the project selector.",
                    "type": "string"
                },
                "quickBuild": {
                    "description": "If set to true, this project will be included in the projects quick build or preselected when you start the compile project command.",
                    "type": "boolean"
                },
                "rootComponentIds": {
                    "description": "Required. Define the root component of your project from where all the dependencies can be reached by static analysis of the JSON properties.\nBe careful when using `requestDockItem` calls, because the dependecy collector will miss any hard-coded itemIds in the script, as it only\nstatically crawls the JSON properties. Either add the itemId or the componentId as a possibleChild with a false condition or add it to this list.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "type": "object"
        },
        "Record<string,string>": {
            "additionalProperties": {
                "type": "string"
            },
            "type": "object"
        },
        "RubensLocalContentServerSettings": {
            "additionalProperties": false,
            "properties": {
                "contentChangeWaitTime": {
                    "default": 1000,
                    "description": "Timeout before hot-reload to wait for an eventual change of furhter components.\nThis is useful for generated content, where the content is generated in multiple steps, to prevent overloading of the configurator instance.",
                    "type": "number"
                },
                "excludedComponentIdPatterns": {
                    "default": [],
                    "description": "RLCS will hot-reload content when a componentId changes. You can use this to exclude certain componentIds from the hot-reload.\nUse ? for single any character and * for multiple characters.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "port": {
                    "description": "Define the port number on which the RLCS starts.\nThis has to be set if you want to automatically start the RLCS on VS Code start.\nTo achieve this, choose a different port number than you have in your VS Code settings as the default one\n(see `roomletool.rubensLocalContentServerDefaultPortNumber` and `roomletool.automaticRubensLocalContentServerStart`).",
                    "type": "number"
                }
            },
            "type": "object"
        }
    },
    "properties": {
        "catalogToTenantOverride": {
            "$ref": "#/definitions/Record<string,string>",
            "description": "If you manage multiple catalogs belonging to different tenants in your project folder, you can override the basic `tenant` value for the given catalogs."
        },
        "contentServer": {
            "$ref": "#/definitions/RubensLocalContentServerSettings",
            "description": "Rubens Local Content Server settings for the server-side."
        },
        "contentServerPort": {
            "description": "Use contentServer.port instead",
            "type": "number",
            "deprecated": true
        },
        "projects": {
            "default": [],
            "description": "Set up your content projects here.",
            "items": {
                "$ref": "#/definitions/ContentProjectsMetadata"
            },
            "type": "array"
        },
        "tenant": {
            "description": "If the tenant account name is different from your project root folder, set this to the tenant name, so that you get correct links to the Rubens Admin.",
            "type": "string"
        }
    },
    "type": "object"
}