From b3b0c44debde0180cab3cd6b07522984f97a256e Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 24 Jun 2021 10:06:57 +0200 Subject: [PATCH] Added schema by default and reference it from the appsettings files. + Do not suggest null values instead of objects --- src/JsonSchema/Program.cs | 3 +- .../appsettings.Development.json | 1 + src/Umbraco.Web.UI.NetCore/appsettings.json | 3 +- .../umbraco/config/appsettings-schema.json | 1335 +++++++++++++++++ 4 files changed, 1340 insertions(+), 2 deletions(-) create mode 100644 src/Umbraco.Web.UI.NetCore/umbraco/config/appsettings-schema.json diff --git a/src/JsonSchema/Program.cs b/src/JsonSchema/Program.cs index d9ba2657a6..1b6c4b864e 100644 --- a/src/JsonSchema/Program.cs +++ b/src/JsonSchema/Program.cs @@ -44,7 +44,8 @@ namespace JsonSchema SchemaType = SchemaType.JsonSchema, AlwaysAllowAdditionalObjectProperties = true, SerializerSettings = new JsonSerializerSettings(), - TypeNameGenerator = new UmbracoPrefixedTypeNameGenerator() + TypeNameGenerator = new UmbracoPrefixedTypeNameGenerator(), + DefaultReferenceTypeNullHandling = ReferenceTypeNullHandling.NotNull }; settings.SerializerSettings.Converters.Add(new StringEnumConverter()); diff --git a/src/Umbraco.Web.UI.NetCore/appsettings.Development.json b/src/Umbraco.Web.UI.NetCore/appsettings.Development.json index edeb4946d6..63ce8ac46f 100644 --- a/src/Umbraco.Web.UI.NetCore/appsettings.Development.json +++ b/src/Umbraco.Web.UI.NetCore/appsettings.Development.json @@ -1,4 +1,5 @@ { + "$schema" : "./umbraco/config/appsettings-schema.json", "Serilog": { "MinimumLevel": { "Default": "Information" diff --git a/src/Umbraco.Web.UI.NetCore/appsettings.json b/src/Umbraco.Web.UI.NetCore/appsettings.json index 1e2d97a018..8fe1993bcb 100644 --- a/src/Umbraco.Web.UI.NetCore/appsettings.json +++ b/src/Umbraco.Web.UI.NetCore/appsettings.json @@ -1,4 +1,5 @@ { + "$schema" : "./umbraco/config/appsettings-schema.json", "ConnectionStrings": { "umbracoDbDSN": "" }, @@ -71,4 +72,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.NetCore/umbraco/config/appsettings-schema.json b/src/Umbraco.Web.UI.NetCore/umbraco/config/appsettings-schema.json new file mode 100644 index 0000000000..d0e1e765fb --- /dev/null +++ b/src/Umbraco.Web.UI.NetCore/umbraco/config/appsettings-schema.json @@ -0,0 +1,1335 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "AppSettings", + "type": "object", + "properties": { + "Umbraco": { + "$ref": "#/definitions/umbracoUmbracoDefinition" + } + }, + "definitions": { + "umbracoUmbracoDefinition": { + "type": "object", + "description": "Configuration of Umbraco CMS and packages", + "properties": { + "CMS": { + "$ref": "#/definitions/umbracoCmsDefinition" + }, + "Forms": { + "$ref": "#/definitions/umbracoFormsDefinition" + }, + "Deploy": { + "$ref": "#/definitions/umbracoDeployDefinition" + } + } + }, + "umbracoCmsDefinition": { + "type": "object", + "description": "Configurations for the Umbraco CMS", + "properties": { + "ActiveDirectory": { + "$ref": "#/definitions/umbracoActiveDirectorySettings" + }, + "Content": { + "$ref": "#/definitions/umbracoContentSettings" + }, + "CoreDebug": { + "$ref": "#/definitions/umbracoCoreDebugSettings" + }, + "ExceptionFilter": { + "$ref": "#/definitions/umbracoExceptionFilterSettings" + }, + "ModelsBuilder": { + "$ref": "#/definitions/umbracoModelsBuilderSettings" + }, + "Global": { + "$ref": "#/definitions/umbracoGlobalSettings" + }, + "HealthChecks": { + "$ref": "#/definitions/umbracoHealthChecksSettings" + }, + "Hosting": { + "$ref": "#/definitions/umbracoHostingSettings" + }, + "Imaging": { + "$ref": "#/definitions/umbracoImagingSettings" + }, + "Examine": { + "$ref": "#/definitions/umbracoIndexCreatorSettings" + }, + "KeepAlive": { + "$ref": "#/definitions/umbracoKeepAliveSettings" + }, + "Logging": { + "$ref": "#/definitions/umbracoLoggingSettings" + }, + "MemberPassword": { + "$ref": "#/definitions/umbracoMemberPasswordConfigurationSettings" + }, + "NuCache": { + "$ref": "#/definitions/umbracoNuCacheSettings" + }, + "RequestHandler": { + "$ref": "#/definitions/umbracoRequestHandlerSettings" + }, + "Runtime": { + "$ref": "#/definitions/umbracoRuntimeSettings" + }, + "Security": { + "$ref": "#/definitions/umbracoSecuritySettings" + }, + "Tours": { + "$ref": "#/definitions/umbracoTourSettings" + }, + "TypeFinder": { + "$ref": "#/definitions/umbracoTypeFinderSettings" + }, + "UserPassword": { + "$ref": "#/definitions/umbracoUserPasswordConfigurationSettings" + }, + "WebRouting": { + "$ref": "#/definitions/umbracoWebRoutingSettings" + }, + "Plugins": { + "$ref": "#/definitions/umbracoUmbracoPluginSettings" + }, + "Unattended": { + "$ref": "#/definitions/umbracoUnattendedSettings" + }, + "RichTextEditor": { + "$ref": "#/definitions/umbracoRichTextEditorSettings" + }, + "RuntimeMinification": { + "$ref": "#/definitions/umbracoRuntimeMinificationSettings" + } + } + }, + "umbracoActiveDirectorySettings": { + "type": "object", + "description": "Typed configuration options for active directory settings.", + "properties": { + "Domain": { + "type": "string", + "description": "Gets or sets a value for the Active Directory domain." + } + } + }, + "umbracoContentSettings": { + "type": "object", + "description": "Typed configuration options for content settings.", + "properties": { + "Notifications": { + "description": "Gets or sets a value for the content notification settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoContentNotificationSettings" + } + ] + }, + "Imaging": { + "description": "Gets or sets a value for the content imaging settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoContentImagingSettings" + } + ] + }, + "ResolveUrlsFromTextString": { + "type": "boolean", + "description": "Gets or sets a value indicating whether URLs should be resolved from text strings." + }, + "Error404Collection": { + "type": "array", + "description": "Gets or sets a value for the collection of error pages.", + "items": { + "$ref": "#/definitions/umbracoContentErrorPage" + } + }, + "PreviewBadge": { + "type": "string", + "description": "Gets or sets a value for the preview badge mark-up." + }, + "MacroErrors": { + "description": "Gets or sets a value for the macro error behaviour.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoMacroErrorBehaviour" + } + ] + }, + "DisallowedUploadFiles": { + "type": "array", + "description": "Gets or sets a value for the collection of file extensions that are disallowed for upload.", + "items": { + "type": "string" + } + }, + "AllowedUploadFiles": { + "type": "array", + "description": "Gets or sets a value for the collection of file extensions that are allowed for upload.", + "items": { + "type": "string" + } + }, + "ShowDeprecatedPropertyEditors": { + "type": "boolean", + "description": "Gets or sets a value indicating whether deprecated property editors should be shown." + }, + "LoginBackgroundImage": { + "type": "string", + "description": "Gets or sets a value for the path to the login screen background image." + }, + "LoginLogoImage": { + "type": "string", + "description": "Gets or sets a value for the path to the login screen logo image." + } + } + }, + "umbracoContentNotificationSettings": { + "type": "object", + "description": "Typed configuration options for content notification settings.", + "properties": { + "Email": { + "type": "string", + "description": "Gets or sets a value for the email address for notifications." + }, + "DisableHtmlEmail": { + "type": "boolean", + "description": "Gets or sets a value indicating whether HTML email notifications should be disabled." + } + } + }, + "umbracoContentImagingSettings": { + "type": "object", + "description": "Typed configuration options for content imaging settings.", + "properties": { + "ImageFileTypes": { + "type": "array", + "description": "Gets or sets a value for the collection of accepted image file extensions.", + "items": { + "type": "string" + } + }, + "AutoFillImageProperties": { + "type": "array", + "description": "Gets or sets a value for the imaging autofill following media file upload fields.", + "items": { + "$ref": "#/definitions/umbracoImagingAutoFillUploadField" + } + } + } + }, + "umbracoImagingAutoFillUploadField": { + "allOf": [ + { + "$ref": "#/definitions/umbracoValidatableEntryBase" + }, + { + "type": "object", + "description": "Typed configuration options for image autofill upload settings.", + "required": [ + "Alias", + "WidthFieldAlias", + "HeightFieldAlias", + "LengthFieldAlias", + "ExtensionFieldAlias" + ], + "properties": { + "Alias": { + "type": "string", + "description": "Gets or sets a value for the alias of the image upload property.", + "minLength": 1 + }, + "WidthFieldAlias": { + "type": "string", + "description": "Gets or sets a value for the width field alias of the image upload property.", + "minLength": 1 + }, + "HeightFieldAlias": { + "type": "string", + "description": "Gets or sets a value for the height field alias of the image upload property.", + "minLength": 1 + }, + "LengthFieldAlias": { + "type": "string", + "description": "Gets or sets a value for the length field alias of the image upload property.", + "minLength": 1 + }, + "ExtensionFieldAlias": { + "type": "string", + "description": "Gets or sets a value for the extension field alias of the image upload property.", + "minLength": 1 + } + } + } + ] + }, + "umbracoValidatableEntryBase": { + "type": "object", + "description": "Provides a base class for configuration models that can be validated based on data annotations.", + "x-abstract": true + }, + "umbracoContentErrorPage": { + "allOf": [ + { + "$ref": "#/definitions/umbracoValidatableEntryBase" + }, + { + "type": "object", + "description": "Typed configuration for a content error page.", + "required": [ + "Culture" + ], + "properties": { + "ContentId": { + "type": "integer", + "description": "Gets or sets a value for the content Id.", + "format": "int32" + }, + "ContentKey": { + "type": "string", + "description": "Gets or sets a value for the content key.", + "format": "guid" + }, + "ContentXPath": { + "type": "string", + "description": "Gets or sets a value for the content XPath." + }, + "HasContentId": { + "type": "boolean", + "description": "Gets a value indicating whether the ContentId field is populated." + }, + "HasContentKey": { + "type": "boolean", + "description": "Gets a value indicating whether the ContentKey field is populated." + }, + "HasContentXPath": { + "type": "boolean", + "description": "Gets a value indicating whether the ContentXPath field is populated." + }, + "Culture": { + "type": "string", + "description": "Gets or sets a value for the content culture.", + "minLength": 1 + } + } + } + ] + }, + "umbracoMacroErrorBehaviour": { + "type": "string", + "description": "", + "x-enumNames": [ + "Inline", + "Silent", + "Throw", + "Content" + ], + "enum": [ + "Inline", + "Silent", + "Throw", + "Content" + ] + }, + "umbracoCoreDebugSettings": { + "type": "object", + "description": "Typed configuration options for core debug settings.", + "properties": { + "LogIncompletedScopes": { + "type": "boolean", + "description": "Gets or sets a value indicating whether incompleted scopes should be logged." + }, + "DumpOnTimeoutThreadAbort": { + "type": "boolean", + "description": "Gets or sets a value indicating whether memory dumps on thread abort should be taken." + } + } + }, + "umbracoExceptionFilterSettings": { + "type": "object", + "description": "Typed configuration options for exception filter settings.", + "properties": { + "Disabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the exception filter is disabled." + } + } + }, + "umbracoModelsBuilderSettings": { + "type": "object", + "description": "Typed configuration options for models builder settings.", + "properties": { + "ModelsMode": { + "description": "Gets or sets a value for the models mode.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoModelsMode" + } + ] + }, + "ModelsNamespace": { + "type": "string", + "description": "Gets or sets a value for models namespace." + }, + "FlagOutOfDateModels": { + "type": "boolean", + "description": "Gets or sets a value indicating whether we should flag out-of-date models." + }, + "ModelsDirectory": { + "type": "string", + "description": "Gets or sets a value for the models directory." + }, + "AcceptUnsafeModelsDirectory": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to accept an unsafe value for ModelsDirectory." + }, + "DebugLevel": { + "type": "integer", + "description": "Gets or sets a value indicating the debug log level.", + "format": "int32" + } + } + }, + "umbracoModelsMode": { + "type": "string", + "description": "Defines the models generation modes.", + "x-enumNames": [ + "Nothing", + "InMemoryAuto", + "SourceCodeManual", + "SourceCodeAuto" + ], + "enum": [ + "Nothing", + "InMemoryAuto", + "SourceCodeManual", + "SourceCodeAuto" + ] + }, + "umbracoGlobalSettings": { + "type": "object", + "description": "Typed configuration options for global settings.", + "properties": { + "ReservedUrls": { + "type": "string", + "description": "Gets or sets a value for the reserved URLs." + }, + "ReservedPaths": { + "type": "string", + "description": "Gets or sets a value for the reserved paths." + }, + "TimeOut": { + "type": "string", + "description": "Gets or sets a value for the timeout", + "format": "time-span" + }, + "DefaultUILanguage": { + "type": "string", + "description": "Gets or sets a value for the default UI language." + }, + "HideTopLevelNodeFromPath": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to hide the top level node from the path." + }, + "UseHttps": { + "type": "boolean", + "description": "Gets or sets a value indicating whether HTTPS should be used." + }, + "VersionCheckPeriod": { + "type": "integer", + "description": "Gets or sets a value for the version check period in days.", + "format": "int32" + }, + "UmbracoPath": { + "type": "string", + "description": "Gets or sets a value for the Umbraco back-office path." + }, + "IconsPath": { + "type": "string", + "description": "Gets or sets a value for the Umbraco icons path." + }, + "UmbracoCssPath": { + "type": "string", + "description": "Gets or sets a value for the Umbraco CSS path." + }, + "UmbracoScriptsPath": { + "type": "string", + "description": "Gets or sets a value for the Umbraco scripts path." + }, + "UmbracoMediaPath": { + "type": "string", + "description": "Gets or sets a value for the Umbraco media path." + }, + "InstallMissingDatabase": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to install the database when it is missing." + }, + "DisableElectionForSingleServer": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to disable the election for a single server." + }, + "DatabaseFactoryServerVersion": { + "type": "string", + "description": "Gets or sets a value for the database factory server version." + }, + "MainDomLock": { + "type": "string", + "description": "Gets or sets a value for the main dom lock." + }, + "Id": { + "type": "string" + }, + "NoNodesViewPath": { + "type": "string", + "description": "Gets or sets a value for the path to the no content view." + }, + "DatabaseServerRegistrar": { + "description": "Gets or sets a value for the database server registrar settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoDatabaseServerRegistrarSettings" + } + ] + }, + "DatabaseServerMessenger": { + "description": "Gets or sets a value for the database server messenger settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoDatabaseServerMessengerSettings" + } + ] + }, + "Smtp": { + "description": "Gets or sets a value for the SMTP settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoSmtpSettings" + } + ] + }, + "IsSmtpServerConfigured": { + "type": "boolean", + "description": "Gets a value indicating whether SMTP is configured." + }, + "SqlWriteLockTimeOut": { + "type": "string", + "description": "An int value representing the time in milliseconds to lock the database for a write operation", + "format": "time-span" + } + } + }, + "umbracoDatabaseServerRegistrarSettings": { + "type": "object", + "description": "Typed configuration options for database server registrar settings.", + "properties": { + "WaitTimeBetweenCalls": { + "type": "string", + "description": "Gets or sets a value for the amount of time to wait between calls to the database on the background thread.", + "format": "time-span" + }, + "StaleServerTimeout": { + "type": "string", + "description": "Gets or sets a value for the time span to wait before considering a server stale, after it has last been accessed.", + "format": "time-span" + } + } + }, + "umbracoDatabaseServerMessengerSettings": { + "type": "object", + "description": "Typed configuration options for database server messaging settings.", + "properties": { + "MaxProcessingInstructionCount": { + "type": "integer", + "description": "Gets or sets a value for the maximum number of instructions that can be processed at startup; otherwise the server cold-boots (rebuilds its caches).", + "format": "int32" + }, + "TimeToRetainInstructions": { + "type": "string", + "description": "Gets or sets a value for the time to keep instructions in the database; records older than this number will be pruned.", + "format": "time-span" + }, + "TimeBetweenSyncOperations": { + "type": "string", + "description": "Gets or sets a value for the time to wait between each sync operations.", + "format": "time-span" + }, + "TimeBetweenPruneOperations": { + "type": "string", + "description": "Gets or sets a value for the time to wait between each prune operations.", + "format": "time-span" + } + } + }, + "umbracoSmtpSettings": { + "allOf": [ + { + "$ref": "#/definitions/umbracoValidatableEntryBase" + }, + { + "type": "object", + "description": "Typed configuration options for SMTP settings.", + "required": [ + "From" + ], + "properties": { + "From": { + "type": "string", + "description": "Gets or sets a value for the SMTP from address to use for messages.", + "format": "email", + "minLength": 1 + }, + "Host": { + "type": "string", + "description": "Gets or sets a value for the SMTP host." + }, + "Port": { + "type": "integer", + "description": "Gets or sets a value for the SMTP port.", + "format": "int32" + }, + "SecureSocketOptions": { + "description": "Gets or sets a value for the secure socket options.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoSecureSocketOptions" + } + ] + }, + "PickupDirectoryLocation": { + "type": "string", + "description": "Gets or sets a value for the SMTP pick-up directory." + }, + "DeliveryMethod": { + "description": "Gets or sets a value for the SMTP delivery method.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoSmtpDeliveryMethod" + } + ] + }, + "Username": { + "type": "string", + "description": "Gets or sets a value for the SMTP user name." + }, + "Password": { + "type": "string", + "description": "Gets or sets a value for the SMTP password." + } + } + } + ] + }, + "umbracoSecureSocketOptions": { + "type": "string", + "description": "Matches MailKit.Security.SecureSocketOptions and defined locally to avoid having to take\na dependency on this external library into Umbraco.Core.", + "x-enumNames": [ + "None", + "Auto", + "SslOnConnect", + "StartTls", + "StartTlsWhenAvailable" + ], + "enum": [ + "None", + "Auto", + "SslOnConnect", + "StartTls", + "StartTlsWhenAvailable" + ] + }, + "umbracoSmtpDeliveryMethod": { + "type": "string", + "description": "", + "x-enumNames": [ + "Network", + "SpecifiedPickupDirectory", + "PickupDirectoryFromIis" + ], + "enum": [ + "Network", + "SpecifiedPickupDirectory", + "PickupDirectoryFromIis" + ] + }, + "umbracoHealthChecksSettings": { + "type": "object", + "description": "Typed configuration options for healthchecks settings.", + "properties": { + "DisabledChecks": { + "type": "array", + "description": "Gets or sets a value for the collection of healthchecks that are disabled.", + "items": { + "$ref": "#/definitions/umbracoDisabledHealthCheckSettings" + } + }, + "Notification": { + "description": "Gets or sets a value for the healthcheck notification settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoHealthChecksNotificationSettings" + } + ] + } + } + }, + "umbracoDisabledHealthCheckSettings": { + "type": "object", + "description": "Typed configuration options for disabled healthcheck settings.", + "properties": { + "Id": { + "type": "string", + "description": "Gets or sets a value for the healthcheck Id to disable.", + "format": "guid" + }, + "DisabledOn": { + "type": "string", + "description": "Gets or sets a value for the date the healthcheck was disabled.", + "format": "date-time" + }, + "DisabledBy": { + "type": "integer", + "description": "Gets or sets a value for Id of the user that disabled the healthcheck.", + "format": "int32" + } + } + }, + "umbracoHealthChecksNotificationSettings": { + "type": "object", + "description": "Typed configuration options for healthcheck notification settings.", + "properties": { + "Enabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether health check notifications are enabled." + }, + "FirstRunTime": { + "type": "string", + "description": "Gets or sets a value for the first run time of a healthcheck notification in crontab format." + }, + "Period": { + "type": "string", + "description": "Gets or sets a value for the period of the healthcheck notification.", + "format": "time-span" + }, + "NotificationMethods": { + "type": "object", + "description": "Gets or sets a value for the collection of health check notification methods.", + "additionalProperties": { + "$ref": "#/definitions/umbracoHealthChecksNotificationMethodSettings" + } + }, + "DisabledChecks": { + "type": "array", + "description": "Gets or sets a value for the collection of health checks that are disabled for notifications.", + "items": { + "$ref": "#/definitions/umbracoDisabledHealthCheckSettings" + } + } + } + }, + "umbracoHealthChecksNotificationMethodSettings": { + "type": "object", + "description": "Typed configuration options for healthcheck notification method settings.", + "properties": { + "Enabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the health check notification method is enabled." + }, + "Verbosity": { + "description": "Gets or sets a value for the health check notifications reporting verbosity.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoHealthCheckNotificationVerbosity" + } + ] + }, + "FailureOnly": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the health check notifications should occur on failures only." + }, + "Settings": { + "type": "object", + "description": "Gets or sets a value providing provider specific settings for the health check notification method.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "umbracoHealthCheckNotificationVerbosity": { + "type": "string", + "description": "", + "x-enumNames": [ + "Summary", + "Detailed" + ], + "enum": [ + "Summary", + "Detailed" + ] + }, + "umbracoHostingSettings": { + "type": "object", + "description": "Typed configuration options for hosting settings.", + "properties": { + "ApplicationVirtualPath": { + "type": "string", + "description": "Gets or sets a value for the application virtual path." + }, + "LocalTempStorageLocation": { + "description": "Gets or sets a value for the location of temporary files.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoLocalTempStorage" + } + ] + }, + "Debug": { + "type": "boolean", + "description": "Gets or sets a value indicating whether umbraco is running in [debug mode]." + } + } + }, + "umbracoLocalTempStorage": { + "type": "string", + "description": "", + "x-enumNames": [ + "Unknown", + "Default", + "EnvironmentTemp" + ], + "enum": [ + "Unknown", + "Default", + "EnvironmentTemp" + ] + }, + "umbracoImagingSettings": { + "type": "object", + "description": "Typed configuration options for imaging settings.", + "properties": { + "Cache": { + "description": "Gets or sets a value for imaging cache settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoImagingCacheSettings" + } + ] + }, + "Resize": { + "description": "Gets or sets a value for imaging resize settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoImagingResizeSettings" + } + ] + } + } + }, + "umbracoImagingCacheSettings": { + "type": "object", + "description": "Typed configuration options for image cache settings.", + "properties": { + "BrowserMaxAge": { + "type": "string", + "description": "Gets or sets a value for the browser image cache maximum age.", + "format": "time-span" + }, + "CacheMaxAge": { + "type": "string", + "description": "Gets or sets a value for the image cache maximum age.", + "format": "time-span" + }, + "CachedNameLength": { + "type": "integer", + "description": "Gets or sets a value for length of the cached name." + }, + "CacheFolder": { + "type": "string", + "description": "Gets or sets a value for the cache folder." + } + } + }, + "umbracoImagingResizeSettings": { + "type": "object", + "description": "Typed configuration options for image resize settings.", + "properties": { + "MaxWidth": { + "type": "integer", + "description": "Gets or sets a value for the maximim resize width.", + "format": "int32" + }, + "MaxHeight": { + "type": "integer", + "description": "Gets or sets a value for the maximim resize height.", + "format": "int32" + } + } + }, + "umbracoIndexCreatorSettings": { + "type": "object", + "description": "Typed configuration options for index creator settings.", + "properties": { + "LuceneDirectoryFactory": { + "description": "Gets or sets a value for lucene directory factory type.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoLuceneDirectoryFactory" + } + ] + } + } + }, + "umbracoLuceneDirectoryFactory": { + "type": "string", + "description": "", + "x-enumNames": [ + "Default", + "SyncedTempFileSystemDirectoryFactory", + "TempFileSystemDirectoryFactory" + ], + "enum": [ + "Default", + "SyncedTempFileSystemDirectoryFactory", + "TempFileSystemDirectoryFactory" + ] + }, + "umbracoKeepAliveSettings": { + "type": "object", + "description": "Typed configuration options for keep alive settings.", + "properties": { + "DisableKeepAliveTask": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the keep alive task is disabled." + }, + "KeepAlivePingUrl": { + "type": "string", + "description": "Gets a value for the keep alive ping URL." + } + } + }, + "umbracoLoggingSettings": { + "type": "object", + "description": "Typed configuration options for logging settings.", + "properties": { + "MaxLogAge": { + "type": "string", + "description": "Gets or sets a value for the maximum age of a log file.", + "format": "time-span" + } + } + }, + "umbracoMemberPasswordConfigurationSettings": { + "type": "object", + "description": "Typed configuration options for member password settings.", + "properties": { + "RequiredLength": { + "type": "integer", + "description": "Gets a value for the minimum required length for the password.", + "format": "int32" + }, + "RequireNonLetterOrDigit": { + "type": "boolean", + "description": "Gets a value indicating whether at least one non-letter or digit is required for the password." + }, + "RequireDigit": { + "type": "boolean", + "description": "Gets a value indicating whether at least one digit is required for the password." + }, + "RequireLowercase": { + "type": "boolean", + "description": "Gets a value indicating whether at least one lower-case character is required for the password." + }, + "RequireUppercase": { + "type": "boolean", + "description": "Gets a value indicating whether at least one upper-case character is required for the password." + }, + "HashAlgorithmType": { + "type": "string", + "description": "Gets a value for the password hash algorithm type." + }, + "MaxFailedAccessAttemptsBeforeLockout": { + "type": "integer", + "description": "Gets a value for the maximum failed access attempts before lockout.", + "format": "int32" + } + } + }, + "umbracoNuCacheSettings": { + "type": "object", + "description": "Typed configuration options for NuCache settings.", + "properties": { + "BTreeBlockSize": { + "type": [ + "integer", + "null" + ], + "description": "Gets or sets a value defining the BTree block size.", + "format": "int32" + } + } + }, + "umbracoRequestHandlerSettings": { + "type": "object", + "description": "Typed configuration options for request handler settings.", + "properties": { + "AddTrailingSlash": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to add a trailing slash to URLs." + }, + "ConvertUrlsToAscii": { + "type": "string", + "description": "Gets or sets a value indicating whether to convert URLs to ASCII (valid values: \"true\", \"try\" or \"false\")." + }, + "ShouldConvertUrlsToAscii": { + "type": "boolean", + "description": "Gets a value indicating whether URLs should be converted to ASCII." + }, + "ShouldTryConvertUrlsToAscii": { + "type": "boolean", + "description": "Gets a value indicating whether URLs should be tried to be converted to ASCII." + }, + "CharCollection": { + "type": "array", + "description": "Gets or sets a value for the default character collection for replacements.", + "items": { + "$ref": "#/definitions/umbracoIChar" + } + } + } + }, + "umbracoIChar": { + "type": "object", + "x-abstract": true, + "properties": { + "Char": { + "type": "string" + }, + "Replacement": { + "type": "string" + } + } + }, + "umbracoRuntimeSettings": { + "type": "object", + "description": "Typed configuration options for runtime settings.", + "properties": { + "MaxQueryStringLength": { + "type": [ + "integer", + "null" + ], + "description": "Gets or sets a value for the maximum query string length.", + "format": "int32" + }, + "MaxRequestLength": { + "type": [ + "integer", + "null" + ], + "description": "Gets or sets a value for the maximum request length.", + "format": "int32" + } + } + }, + "umbracoSecuritySettings": { + "type": "object", + "description": "Typed configuration options for security settings.", + "properties": { + "KeepUserLoggedIn": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to keep the user logged in." + }, + "HideDisabledUsersInBackOffice": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to hide disabled users in the back-office." + }, + "AllowPasswordReset": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to allow user password reset." + }, + "AuthCookieName": { + "type": "string", + "description": "Gets or sets a value for the authorization cookie name." + }, + "AuthCookieDomain": { + "type": "string", + "description": "Gets or sets a value for the authorization cookie domain." + }, + "UsernameIsEmail": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the user's email address is to be considered as their username." + }, + "UserPassword": { + "description": "Gets or sets a value for the user password settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoUserPasswordConfigurationSettings" + } + ] + }, + "MemberPassword": { + "description": "Gets or sets a value for the member password settings.", + "oneOf": [ + { + "$ref": "#/definitions/umbracoMemberPasswordConfigurationSettings" + } + ] + } + } + }, + "umbracoUserPasswordConfigurationSettings": { + "type": "object", + "description": "Typed configuration options for user password settings.", + "properties": { + "RequiredLength": { + "type": "integer", + "description": "Gets a value for the minimum required length for the password.", + "format": "int32" + }, + "RequireNonLetterOrDigit": { + "type": "boolean", + "description": "Gets a value indicating whether at least one non-letter or digit is required for the password." + }, + "RequireDigit": { + "type": "boolean", + "description": "Gets a value indicating whether at least one digit is required for the password." + }, + "RequireLowercase": { + "type": "boolean", + "description": "Gets a value indicating whether at least one lower-case character is required for the password." + }, + "RequireUppercase": { + "type": "boolean", + "description": "Gets a value indicating whether at least one upper-case character is required for the password." + }, + "HashAlgorithmType": { + "type": "string", + "description": "Gets a value for the password hash algorithm type." + }, + "MaxFailedAccessAttemptsBeforeLockout": { + "type": "integer", + "description": "Gets a value for the maximum failed access attempts before lockout.", + "format": "int32" + } + } + }, + "umbracoTourSettings": { + "type": "object", + "description": "Typed configuration options for tour settings.", + "properties": { + "EnableTours": { + "type": "boolean", + "description": "Gets or sets a value indicating whether back-office tours are enabled." + } + } + }, + "umbracoTypeFinderSettings": { + "type": "object", + "description": "Typed configuration options for type finder settings.", + "properties": { + "AssembliesAcceptingLoadExceptions": { + "type": "string", + "description": "Gets or sets a value for the assemblies that accept load exceptions during type finder operations." + } + } + }, + "umbracoWebRoutingSettings": { + "type": "object", + "description": "Typed configuration options for web routing settings.", + "properties": { + "TryMatchingEndpointsForAllPages": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to check if any routed endpoints match a front-end request before\nthe Umbraco dynamic router tries to map the request to an Umbraco content item." + }, + "TrySkipIisCustomErrors": { + "type": "boolean", + "description": "Gets or sets a value indicating whether IIS custom errors should be skipped." + }, + "InternalRedirectPreservesTemplate": { + "type": "boolean", + "description": "Gets or sets a value indicating whether an internal redirect should preserve the template." + }, + "DisableAlternativeTemplates": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the use of alternative templates are disabled." + }, + "ValidateAlternativeTemplates": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the use of alternative templates should be validated." + }, + "DisableFindContentByIdPath": { + "type": "boolean", + "description": "Gets or sets a value indicating whether find content ID by path is disabled." + }, + "DisableRedirectUrlTracking": { + "type": "boolean", + "description": "Gets or sets a value indicating whether redirect URL tracking is disabled." + }, + "UrlProviderMode": { + "description": "Gets or sets a value for the URL provider mode (UrlMode).", + "oneOf": [ + { + "$ref": "#/definitions/umbracoUrlMode" + } + ] + }, + "UmbracoApplicationUrl": { + "type": "string", + "description": "Gets or sets a value for the Umbraco application URL." + } + } + }, + "umbracoUrlMode": { + "type": "string", + "description": "Specifies the type of URLs that the URL provider should produce, Auto is the default.", + "x-enumNames": [ + "Default", + "Relative", + "Absolute", + "Auto" + ], + "enum": [ + "Default", + "Relative", + "Absolute", + "Auto" + ] + }, + "umbracoUmbracoPluginSettings": { + "type": "object", + "description": "Typed configuration options for the plugins.", + "properties": { + "BrowsableFileExtensions": { + "type": "array", + "description": "Gets or sets the allowed file extensions (including the period \".\") that should be accessible from the browser.", + "items": { + "type": "string" + } + } + } + }, + "umbracoUnattendedSettings": { + "type": "object", + "description": "Typed configuration options for unattended settings.", + "properties": { + "InstallUnattended": { + "type": "boolean", + "description": "Gets or sets a value indicating whether unattended installs are enabled." + }, + "UpgradeUnattended": { + "type": "boolean", + "description": "Gets or sets a value indicating whether unattended upgrades are enabled." + }, + "UnattendedUserName": { + "type": "string", + "description": "Gets or sets a value to use for creating a user with a name for Unattended Installs" + }, + "UnattendedUserEmail": { + "type": "string", + "description": "Gets or sets a value to use for creating a user with an email for Unattended Installs", + "format": "email" + }, + "UnattendedUserPassword": { + "type": "string", + "description": "Gets or sets a value to use for creating a user with a password for Unattended Installs" + } + } + }, + "umbracoRichTextEditorSettings": { + "type": "object", + "properties": { + "Commands": { + "type": "array", + "items": { + "$ref": "#/definitions/umbracoRichTextEditorCommand" + } + }, + "Plugins": { + "type": "array", + "items": { + "type": "string" + } + }, + "CustomConfig": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ValidElements": { + "type": "string" + }, + "InvalidElements": { + "type": "string" + } + } + }, + "umbracoRichTextEditorCommand": { + "type": "object", + "properties": { + "Alias": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Mode": { + "$ref": "#/definitions/umbracoRichTextEditorCommandMode" + } + } + }, + "umbracoRichTextEditorCommandMode": { + "type": "string", + "description": "", + "x-enumNames": [ + "Insert", + "Selection", + "All" + ], + "enum": [ + "Insert", + "Selection", + "All" + ] + }, + "umbracoRuntimeMinificationSettings": { + "type": "object", + "properties": { + "UseInMemoryCache": { + "type": "boolean" + }, + "CacheBuster": { + "description": "The cache buster type to use", + "oneOf": [ + { + "$ref": "#/definitions/umbracoRuntimeMinificationCacheBuster" + } + ] + } + } + }, + "umbracoRuntimeMinificationCacheBuster": { + "type": "string", + "description": "", + "x-enumNames": [ + "Version", + "AppDomain", + "Timestamp" + ], + "enum": [ + "Version", + "AppDomain", + "Timestamp" + ] + }, + "umbracoFormsDefinition": { + "type": "object", + "description": "Configurations for the Umbraco Forms package to Umbraco CMS" + }, + "umbracoDeployDefinition": { + "type": "object", + "description": "Configurations for the Umbraco Deploy package to Umbraco CMS" + } + } +} \ No newline at end of file