Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

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