467 lines
16 KiB
JSON
467 lines
16 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "urn:onlyoffice:config:superset:1",
|
|
"title": "Config Patch Schema (Superset for Admin and Tenant)",
|
|
"description": "Superset schema with x-scope markers. Use at runtime to derive per-scope schemas.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"cron6": {
|
|
"type": "string",
|
|
"pattern": "^\\s*\\S+(?:\\s+\\S+){5}\\s*$",
|
|
"errorMessage": "Cron expression must have exactly 6 parts"
|
|
},
|
|
"passlength": {
|
|
"type": "string",
|
|
"pattern": "^.{8,128}$"
|
|
},
|
|
"passdigit": {
|
|
"type": "string",
|
|
"pattern": ".*[0-9].*"
|
|
},
|
|
"passupper": {
|
|
"type": "string",
|
|
"pattern": ".*[A-Z].*"
|
|
},
|
|
"passspecial": {
|
|
"type": "string",
|
|
"pattern": ".*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?].*"
|
|
},
|
|
"passallowedchars": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]+$",
|
|
"errorMessage": "contain only uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), and special characters"
|
|
}
|
|
},
|
|
"properties": {
|
|
"aiSettings": {
|
|
"type": "object",
|
|
"description": "AI integration settings for document processing and AI-powered features",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"version": {
|
|
"type": "integer",
|
|
"description": "AI settings schema version",
|
|
"minimum": 1,
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"timeout": {
|
|
"type": "string",
|
|
"description": "Default timeout for AI API requests (e.g., '5m', '30s')",
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"proxy": {
|
|
"type": "string",
|
|
"description": "Proxy URL for AI API requests",
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"allowedCorsOrigins": {
|
|
"type": "array",
|
|
"description": "Array of allowed CORS origins for AI API requests",
|
|
"x-scope": ["admin", "tenant"],
|
|
"items": {
|
|
"type": "string",
|
|
"description": "Allowed origin URL"
|
|
}
|
|
},
|
|
"actions": {
|
|
"type": "object",
|
|
"description": "Available AI actions/features configuration",
|
|
"additionalProperties": true,
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"providers": {
|
|
"type": "object",
|
|
"description": "AI service providers configuration",
|
|
"additionalProperties": true,
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"customProviders": {
|
|
"type": "object",
|
|
"description": "Custom AI service providers configuration",
|
|
"additionalProperties": true,
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"description": "Active AI models configuration",
|
|
"x-scope": ["admin", "tenant"],
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"services": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"CoAuthoring": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"expire": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"filesCron": {"$ref": "#/$defs/cron6", "x-scope": "admin"},
|
|
"documentsCron": {"$ref": "#/$defs/cron6", "x-scope": "admin"},
|
|
"files": {"type": "integer", "minimum": 0, "x-scope": "admin"},
|
|
"filesremovedatonce": {"type": "integer", "minimum": 0, "x-scope": "admin"},
|
|
"sessionidle": {"type": "string", "x-scope": ["admin", "tenant"]},
|
|
"sessionabsolute": {"type": "string", "x-scope": ["admin", "tenant"]}
|
|
}
|
|
},
|
|
"request-filtering-agent": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"allowPrivateIPAddress": {
|
|
"type": "boolean",
|
|
"description": "Whether to allow requests from private IP addresses"
|
|
},
|
|
"allowMetaIPAddress": {
|
|
"type": "boolean",
|
|
"description": "Whether to allow requests from meta IP addresses"
|
|
}
|
|
}
|
|
},
|
|
"autoAssembly": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"step": {"type": "string", "enum": ["1m", "5m", "10m", "15m", "30m"]}
|
|
}
|
|
},
|
|
"ipfilter": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"rules": {
|
|
"type": "array",
|
|
"description": "Array of IP filtering rules",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["address", "allowed"],
|
|
"properties": {
|
|
"address": {
|
|
"type": "string",
|
|
"description": "IP address, CIDR notation, or '*' for all (e.g., '192.168.1.0/24', '10.0.0.1', '*')"
|
|
},
|
|
"allowed": {
|
|
"type": "boolean",
|
|
"description": "Whether this address/range is allowed (true) or denied (false)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"useforrequest": {
|
|
"type": "boolean",
|
|
"description": "Whether to use IP filtering for requests"
|
|
},
|
|
"errorcode": {
|
|
"type": "integer",
|
|
"minimum": 400,
|
|
"maximum": 599,
|
|
"description": "HTTP error code to return when IP is not allowed"
|
|
}
|
|
}
|
|
},
|
|
"sql": {
|
|
"type": "object",
|
|
"description": "Database connection settings for the CoAuthoring service",
|
|
"additionalProperties": false,
|
|
"x-scope": "admin",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Database type (e.g., 'mysql', 'mariadb', 'mssql', 'postgres', 'dameng', 'oracle')",
|
|
"examples": ["postgres"]
|
|
},
|
|
"dbHost": {
|
|
"type": "string",
|
|
"description": "Database host name or IP address",
|
|
"examples": ["localhost"]
|
|
},
|
|
"dbPort": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"description": "Database TCP port",
|
|
"examples": [5432]
|
|
},
|
|
"dbName": {
|
|
"type": "string",
|
|
"description": "Database name",
|
|
"examples": ["onlyoffice"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"FileConverter": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"converter": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"maxDownloadBytes": {"type": "integer", "minimum": 0, "maximum": 10485760000, "x-scope": ["admin", "tenant"]},
|
|
"inputLimits": {
|
|
"type": "array",
|
|
"x-scope": ["admin", "tenant"],
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "File types this limit applies to (e.g., 'docx;dotx;docm;dotm')"
|
|
},
|
|
"zip": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"uncompressed": {
|
|
"type": "string",
|
|
"description": "Maximum uncompressed size (e.g., '50MB', '300MB')"
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"description": "Template pattern for file matching (e.g., '*.xml')"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"wopi": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"enable": {"type": "boolean"},
|
|
"publicKey": {"type": "string"},
|
|
"refreshLockInterval": {
|
|
"type": "string",
|
|
"pattern": "^(\\d+[smhd]|\\d+\\s*(second|minute|hour|day)s?)$",
|
|
"description": "Refresh lock interval in time format (e.g., '10m', '1h', '30s')"
|
|
}
|
|
}
|
|
},
|
|
"email": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"smtpServerConfiguration": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"host": {"type": "string"},
|
|
"port": {"type": "integer", "minimum": 1, "maximum": 65535},
|
|
"auth": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"user": {"type": "string"},
|
|
"pass": {"type": "string"}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"contactDefaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"from": {"type": "string", "format": "email"},
|
|
"to": {"type": "string", "format": "email"}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"log": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"x-scope": "admin",
|
|
"properties": {
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"categories": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"default": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"level": {
|
|
"type": "string",
|
|
"enum": ["ALL", "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF"],
|
|
"description": "Logging level for the application"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"notification": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"rules": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"licenseExpirationWarning": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"enable": {"type": "boolean", "x-scope": ["admin", "tenant"]},
|
|
"policies": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"repeatInterval": {
|
|
"type": "string",
|
|
"pattern": "^(\\d+[smhd]|\\d+\\s*(second|minute|hour|day)s?)$",
|
|
"description": "Repeat interval in time format (e.g., '1d', '1h', '30m')",
|
|
"x-scope": ["admin", "tenant"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"licenseExpirationError": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"enable": {"type": "boolean", "x-scope": ["admin", "tenant"]},
|
|
"policies": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"repeatInterval": {
|
|
"type": "string",
|
|
"pattern": "^(\\d+[smhd]|\\d+\\s*(second|minute|hour|day)s?)$",
|
|
"description": "Repeat interval in time format (e.g., '1d', '1h', '30m')",
|
|
"x-scope": ["admin", "tenant"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"licenseLimitEdit": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"enable": {"type": "boolean", "x-scope": ["admin", "tenant"]},
|
|
"policies": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"repeatInterval": {
|
|
"type": "string",
|
|
"pattern": "^(\\d+[smhd]|\\d+\\s*(second|minute|hour|day)s?)$",
|
|
"description": "Repeat interval in time format (e.g., '1d', '1h', '30m')",
|
|
"x-scope": ["admin", "tenant"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"licenseLimitLiveViewer": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"enable": {"type": "boolean", "x-scope": ["admin", "tenant"]},
|
|
"policies": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"repeatInterval": {
|
|
"type": "string",
|
|
"pattern": "^(\\d+[smhd]|\\d+\\s*(second|minute|hour|day)s?)$",
|
|
"description": "Repeat interval in time format (e.g., '1d', '1h', '30m')",
|
|
"x-scope": ["admin", "tenant"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"adminPanel": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"x-scope": ["admin", "tenant"],
|
|
"properties": {
|
|
"passwordValidation": {
|
|
"type": "object",
|
|
"x-scope": ["admin", "tenant"],
|
|
"description": "Password validation requirements using custom format types",
|
|
"properties": {
|
|
"minLength": {
|
|
"$ref": "#/$defs/passlength",
|
|
"description": "be at least 8 characters long",
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"hasDigit": {
|
|
"$ref": "#/$defs/passdigit",
|
|
"description": "contain at least one digit",
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"hasUppercase": {
|
|
"$ref": "#/$defs/passupper",
|
|
"description": "contain at least one uppercase letter",
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"hasSpecialChar": {
|
|
"$ref": "#/$defs/passspecial",
|
|
"description": "contain at least one special character",
|
|
"x-scope": ["admin", "tenant"]
|
|
},
|
|
"allowedCharactersOnly": {
|
|
"$ref": "#/$defs/passallowedchars",
|
|
"description": "contain only uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), and special characters (e.g., ! @ # $ % & *)",
|
|
"x-scope": ["admin", "tenant"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|