diff --git a/samples/UmbracoV10/App_Plugins/Relewise.Dashboard/dashboard.html b/samples/UmbracoV10/App_Plugins/Relewise.Dashboard/dashboard.html index 443af0c..93a3093 100644 --- a/samples/UmbracoV10/App_Plugins/Relewise.Dashboard/dashboard.html +++ b/samples/UmbracoV10/App_Plugins/Relewise.Dashboard/dashboard.html @@ -1,17 +1,18 @@ 
-

Relewise

+

Welcome to the Relewise dashboard!

- Welcome to the Relewise dashboard - here you can perform export functions to get all your content exported into Relewise.
- It's also possible to see the settings for Relewise directly here. + You can perform various operations, e.g. Export all your content to Relewise.
+ It's also possible to see the settings configured for Relewise directly here.

-
- -
@@ -20,11 +21,11 @@

Relewise

-

Settings

+

Settings

- Unexpected error occured. Please check the response on the XHR request or check logs.
+ Unexpected error occurred. Please check the response on the XHR request or check logs.
@@ -144,7 +145,7 @@

Clients

- DataAccessor + Data Accessor
{{ named.dataAccessor.datasetId }}
{{ named.dataAccessor.timeout }}
diff --git a/samples/UmbracoV10/Program.cs b/samples/UmbracoV10/Program.cs index d4bb708..bbae817 100644 --- a/samples/UmbracoV10/Program.cs +++ b/samples/UmbracoV10/Program.cs @@ -1,6 +1,5 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; namespace Relewise.UmbracoV10 { @@ -13,7 +12,11 @@ public static void Main(string[] args) public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) - .ConfigureLogging(x => x.ClearProviders()) - .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup()); + .ConfigureUmbracoDefaults() + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStaticWebAssets(); + webBuilder.UseStartup(); + }); } } diff --git a/samples/UmbracoV10/Relewise.UmbracoV10.csproj b/samples/UmbracoV10/Relewise.UmbracoV10.csproj index cab5310..a43faab 100644 --- a/samples/UmbracoV10/Relewise.UmbracoV10.csproj +++ b/samples/UmbracoV10/Relewise.UmbracoV10.csproj @@ -9,10 +9,10 @@ - + - - + + diff --git a/samples/UmbracoV10/Startup.cs b/samples/UmbracoV10/Startup.cs index 86d534c..84d95fb 100644 --- a/samples/UmbracoV10/Startup.cs +++ b/samples/UmbracoV10/Startup.cs @@ -53,7 +53,7 @@ public void ConfigureServices(IServiceCollection services) { // This setups the needed configuration for you to be able to interact with our API. // You need to add you own dataset id and api-key in the appsettings.json before recommendations and search works - services.AddRelewise(options => options.ReadFromConfiguration(_config)); + //services.AddRelewise(options => options.ReadFromConfiguration(_config)); services.AddHttpContextAccessor(); services.AddSingleton(); @@ -89,6 +89,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) } app.UseRouting(); + app.UseEndpoints(c => c .MapContentRoutes() .MapCatalogRoutes() diff --git a/samples/UmbracoV10/appsettings-schema.json b/samples/UmbracoV10/appsettings-schema.json index cc264cd..1bd30f8 100644 --- a/samples/UmbracoV10/appsettings-schema.json +++ b/samples/UmbracoV10/appsettings-schema.json @@ -1022,11 +1022,6 @@ "type": "integer", "default": 7 }, - "UmbracoPath": { - "description": "Umbraco back-office path", - "type": "string", - "default": "~/umbraco" - }, "IconsPath": { "description": "Path to Umbraco Icons for backoffice", "type": "string", @@ -1692,9 +1687,6 @@ "Logging": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsLoggingSettings" }, - "MemberPassword": { - "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsMemberPasswordConfigurationSettings" - }, "NuCache": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsNuCacheSettings" }, @@ -1713,9 +1705,6 @@ "TypeFinder": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsTypeFinderSettings" }, - "UserPassword": { - "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsUserPasswordConfigurationSettings" - }, "WebRouting": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsWebRoutingSettings" }, @@ -1748,15 +1737,18 @@ }, "DefaultDataCreation": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsInstallDefaultDataSettings" + }, + "DataTypes": { + "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsDataTypesSettings" } } }, "UmbracoCmsCoreConfigurationModelsContentSettings": { "type": "object", - "description": "Typed configuration options for content settings.", + "description": "Typed configuration options for content settings.\n ", "properties": { "Notifications": { - "description": "Gets or sets a value for the content notification settings.", + "description": "Gets or sets a value for the content notification settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsContentNotificationSettings" @@ -1764,7 +1756,7 @@ ] }, "Imaging": { - "description": "Gets or sets a value for the content imaging settings.", + "description": "Gets or sets a value for the content imaging settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsContentImagingSettings" @@ -1773,23 +1765,23 @@ }, "ResolveUrlsFromTextString": { "type": "boolean", - "description": "Gets or sets a value indicating whether URLs should be resolved from text strings.", + "description": "Gets or sets a value indicating whether URLs should be resolved from text strings.\n ", "default": false }, "Error404Collection": { "type": "array", - "description": "Gets or sets a value for the collection of error pages.", + "description": "Gets or sets a value for the collection of error pages.\n ", "items": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsContentErrorPage" } }, "PreviewBadge": { "type": "string", - "description": "Gets or sets a value for the preview badge mark-up.", + "description": "Gets or sets a value for the preview badge mark-up.\n ", "default": "\n \n \n " }, "MacroErrors": { - "description": "Gets or sets a value for the macro error behaviour.", + "description": "Gets or sets a value for the macro error behaviour.\n ", "default": "Inline", "oneOf": [ { @@ -1799,7 +1791,7 @@ }, "DisallowedUploadFiles": { "type": "array", - "description": "Gets or sets a value for the collection of file extensions that are disallowed for upload.", + "description": "Gets or sets a value for the collection of file extensions that are disallowed for upload.\n ", "default": "ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd,xamlx", "items": { "type": "string" @@ -1807,76 +1799,81 @@ }, "AllowedUploadFiles": { "type": "array", - "description": "Gets or sets a value for the collection of file extensions that are allowed for upload.", + "description": "Gets or sets a value for the collection of file extensions that are allowed for upload.\n ", "items": { "type": "string" } }, "ShowDeprecatedPropertyEditors": { "type": "boolean", - "description": "Gets or sets a value indicating whether deprecated property editors should be shown.", + "description": "Gets or sets a value indicating whether deprecated property editors should be shown.\n ", "default": false }, "LoginBackgroundImage": { "type": "string", - "description": "Gets or sets a value for the path to the login screen background image.", + "description": "Gets or sets a value for the path to the login screen background image.\n ", "default": "assets/img/login.jpg" }, "LoginLogoImage": { "type": "string", - "description": "Gets or sets a value for the path to the login screen logo image.", + "description": "Gets or sets a value for the path to the login screen logo image.\n ", "default": "assets/img/application/umbraco_logo_white.svg" }, "HideBackOfficeLogo": { "type": "boolean", - "description": "Gets or sets a value indicating whether to hide the backoffice umbraco logo or not.", + "description": "Gets or sets a value indicating whether to hide the backoffice umbraco logo or not.\n ", "default": false }, "DisableDeleteWhenReferenced": { "type": "boolean", - "description": "Gets or sets a value indicating whether to disable the deletion of items referenced by other items.", + "description": "Gets or sets a value indicating whether to disable the deletion of items referenced by other items.\n ", "default": false }, "DisableUnpublishWhenReferenced": { "type": "boolean", - "description": "Gets or sets a value indicating whether to disable the unpublishing of items referenced by other items.", + "description": "Gets or sets a value indicating whether to disable the unpublishing of items referenced by other items.\n ", "default": false }, "ContentVersionCleanupPolicy": { - "description": "Get or sets the model representing the global content version cleanup policy", + "description": "Get or sets the model representing the global content version cleanup policy\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsContentVersionCleanupPolicySettings" } ] + }, + "AllowEditInvariantFromNonDefault": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to allow editing invariant properties from a non-default language variation.", + "default": false } } }, "UmbracoCmsCoreConfigurationModelsContentNotificationSettings": { "type": "object", - "description": "Typed configuration options for content notification settings.", + "description": "Typed configuration options for content notification settings.\n ", "properties": { "Email": { "type": [ "null", "string" ], - "description": "Gets or sets a value for the email address for notifications." + "description": "Gets or sets a value for the email address for notifications.\n " }, "DisableHtmlEmail": { "type": "boolean", - "description": "Gets or sets a value indicating whether HTML email notifications should be disabled.", + "description": "Gets or sets a value indicating whether HTML email notifications should be disabled.\n ", "default": false } } }, "UmbracoCmsCoreConfigurationModelsContentImagingSettings": { "type": "object", - "description": "Typed configuration options for content imaging settings.", + "description": "Typed configuration options for content imaging settings.\n ", "properties": { "ImageFileTypes": { "type": "array", - "description": "Gets or sets a value for the collection of accepted image file extensions.", + "description": "Gets or sets a value for the collection of accepted image file extensions.\n ", "default": "jpeg,jpg,gif,bmp,png,tiff,tif,webp", "items": { "type": "string" @@ -1884,7 +1881,7 @@ }, "AutoFillImageProperties": { "type": "array", - "description": "Gets or sets a value for the imaging autofill following media file upload fields.", + "description": "Gets or sets a value for the imaging autofill following media file upload fields.\n ", "items": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsImagingAutoFillUploadField" } @@ -1898,7 +1895,7 @@ }, { "type": "object", - "description": "Typed configuration options for image autofill upload settings.", + "description": "Typed configuration options for image autofill upload settings.\n ", "required": [ "Alias", "WidthFieldAlias", @@ -1909,27 +1906,27 @@ "properties": { "Alias": { "type": "string", - "description": "Gets or sets a value for the alias of the image upload property.", + "description": "Gets or sets a value for the alias of the image upload property.\n ", "minLength": 1 }, "WidthFieldAlias": { "type": "string", - "description": "Gets or sets a value for the width field alias of the image upload property.", + "description": "Gets or sets a value for the width field alias of the image upload property.\n ", "minLength": 1 }, "HeightFieldAlias": { "type": "string", - "description": "Gets or sets a value for the height field alias of the image upload property.", + "description": "Gets or sets a value for the height field alias of the image upload property.\n ", "minLength": 1 }, "LengthFieldAlias": { "type": "string", - "description": "Gets or sets a value for the length field alias of the image upload property.", + "description": "Gets or sets a value for the length field alias of the image upload property.\n ", "minLength": 1 }, "ExtensionFieldAlias": { "type": "string", - "description": "Gets or sets a value for the extension field alias of the image upload property.", + "description": "Gets or sets a value for the extension field alias of the image upload property.\n ", "minLength": 1 } } @@ -1938,7 +1935,7 @@ }, "UmbracoCmsCoreConfigurationModelsValidationValidatableEntryBase": { "type": "object", - "description": "Provides a base class for configuration models that can be validated based on data annotations.", + "description": "Provides a base class for configuration models that can be validated based on data annotations.\n ", "x-abstract": true }, "UmbracoCmsCoreConfigurationModelsContentErrorPage": { @@ -1948,19 +1945,19 @@ }, { "type": "object", - "description": "Typed configuration for a content error page.", + "description": "Typed configuration for a content error page.\n ", "required": [ "Culture" ], "properties": { "ContentId": { "type": "integer", - "description": "Gets or sets a value for the content Id.", + "description": "Gets or sets a value for the content Id.\n ", "format": "int32" }, "ContentKey": { "type": "string", - "description": "Gets or sets a value for the content key.", + "description": "Gets or sets a value for the content key.\n ", "format": "guid" }, "ContentXPath": { @@ -1968,11 +1965,11 @@ "null", "string" ], - "description": "Gets or sets a value for the content XPath." + "description": "Gets or sets a value for the content XPath.\n " }, "Culture": { "type": "string", - "description": "Gets or sets a value for the content culture.", + "description": "Gets or sets a value for the content culture.\n ", "minLength": 1 } } @@ -1997,22 +1994,22 @@ }, "UmbracoCmsCoreConfigurationModelsContentVersionCleanupPolicySettings": { "type": "object", - "description": "Model representing the global content version cleanup policy", + "description": "Model representing the global content version cleanup policy\n ", "properties": { "EnableCleanup": { "type": "boolean", - "description": "Gets or sets a value indicating whether or not the cleanup job should be executed.", + "description": "Gets or sets a value indicating whether or not the cleanup job should be executed.\n ", "default": false }, "KeepAllVersionsNewerThanDays": { "type": "integer", - "description": "Gets or sets the number of days where all historical content versions are kept.", + "description": "Gets or sets the number of days where all historical content versions are kept.\n ", "format": "int32", "default": 7 }, "KeepLatestVersionPerDayForDays": { "type": "integer", - "description": "Gets or sets the number of days where the latest historical content version for that day are kept.", + "description": "Gets or sets the number of days where the latest historical content version for that day are kept.\n ", "format": "int32", "default": 90 } @@ -2020,37 +2017,37 @@ }, "UmbracoCmsCoreConfigurationModelsCoreDebugSettings": { "type": "object", - "description": "Typed configuration options for core debug settings.", + "description": "Typed configuration options for core debug settings.\n ", "properties": { "LogIncompletedScopes": { "type": "boolean", - "description": "Gets or sets a value indicating whether incompleted scopes should be logged.", + "description": "Gets or sets a value indicating whether incompleted scopes should be logged.\n ", "default": false }, "DumpOnTimeoutThreadAbort": { "type": "boolean", - "description": "Gets or sets a value indicating whether memory dumps on thread abort should be taken.", + "description": "Gets or sets a value indicating whether memory dumps on thread abort should be taken.\n ", "default": false } } }, "UmbracoCmsCoreConfigurationModelsExceptionFilterSettings": { "type": "object", - "description": "Typed configuration options for exception filter settings.", + "description": "Typed configuration options for exception filter settings.\n ", "properties": { "Disabled": { "type": "boolean", - "description": "Gets or sets a value indicating whether the exception filter is disabled.", + "description": "Gets or sets a value indicating whether the exception filter is disabled.\n ", "default": false } } }, "UmbracoCmsCoreConfigurationModelsModelsBuilderSettings": { "type": "object", - "description": "Typed configuration options for models builder settings.", + "description": "Typed configuration options for models builder settings.\n ", "properties": { "ModelsMode": { - "description": "Gets or sets a value for the models mode.", + "description": "Gets or sets a value for the models mode.\n ", "default": "InMemoryAuto", "oneOf": [ { @@ -2060,26 +2057,26 @@ }, "ModelsNamespace": { "type": "string", - "description": "Gets or sets a value for models namespace.", + "description": "Gets or sets a value for models namespace.\n ", "default": "Umbraco.Cms.Web.Common.PublishedModels" }, "FlagOutOfDateModels": { "type": "boolean", - "description": "Gets or sets a value indicating whether we should flag out-of-date models." + "description": "Gets or sets a value indicating whether we should flag out-of-date models.\n " }, "ModelsDirectory": { "type": "string", - "description": "Gets or sets a value for the models directory.", + "description": "Gets or sets a value for the models directory.\n ", "default": "~/umbraco/models" }, "AcceptUnsafeModelsDirectory": { "type": "boolean", - "description": "Gets or sets a value indicating whether to accept an unsafe value for ModelsDirectory.", + "description": "Gets or sets a value indicating whether to accept an unsafe value for ModelsDirectory.\n ", "default": false }, "DebugLevel": { "type": "integer", - "description": "Gets or sets a value indicating the debug log level.", + "description": "Gets or sets a value indicating the debug log level.\n ", "format": "int32", "default": 0 } @@ -2087,7 +2084,7 @@ }, "UmbracoCmsCoreConfigurationModelsMode": { "type": "string", - "description": "Defines the models generation modes.", + "description": "Defines the models generation modes.\n ", "x-enumNames": [ "Nothing", "InMemoryAuto", @@ -2103,113 +2100,108 @@ }, "UmbracoCmsCoreConfigurationModelsGlobalSettings": { "type": "object", - "description": "Typed configuration options for global settings.", + "description": "Typed configuration options for global settings.\n ", "properties": { "ReservedUrls": { "type": "string", - "description": "Gets or sets a value for the reserved URLs (must end with a comma).", + "description": "Gets or sets a value for the reserved URLs (must end with a comma).\n ", "default": "~/.well-known," }, "ReservedPaths": { "type": "string", - "description": "Gets or sets a value for the reserved paths (must end with a comma).", + "description": "Gets or sets a value for the reserved paths (must end with a comma).\n ", "default": "~/app_plugins/,~/install/,~/mini-profiler-resources/,~/umbraco/," }, "TimeOut": { "type": "string", - "description": "Gets or sets a value for the back-office login timeout.", + "description": "Gets or sets a value for the back-office login timeout.\n ", "format": "duration", "default": "00:20:00" }, "DefaultUILanguage": { "type": "string", - "description": "Gets or sets a value for the default UI language.", + "description": "Gets or sets a value for the default UI language.\n ", "default": "en-US" }, "HideTopLevelNodeFromPath": { "type": "boolean", - "description": "Gets or sets a value indicating whether to hide the top level node from the path.", + "description": "Gets or sets a value indicating whether to hide the top level node from the path.\n ", "default": true }, "UseHttps": { "type": "boolean", - "description": "Gets or sets a value indicating whether HTTPS should be used.", + "description": "Gets or sets a value indicating whether HTTPS should be used.\n ", "default": false }, "VersionCheckPeriod": { "type": "integer", - "description": "Gets or sets a value for the version check period in days.", + "description": "Gets or sets a value for the version check period in days.\n ", "format": "int32", "default": 7 }, - "UmbracoPath": { - "type": "string", - "description": "Gets or sets a value for the Umbraco back-office path.", - "default": "~/umbraco" - }, "IconsPath": { "type": "string", - "description": "Gets or sets a value for the Umbraco icons path.", + "description": "Gets or sets a value for the Umbraco icons path.\n ", "default": "umbraco/assets/icons" }, "UmbracoCssPath": { "type": "string", - "description": "Gets or sets a value for the Umbraco CSS path.", + "description": "Gets or sets a value for the Umbraco CSS path.\n ", "default": "~/css" }, "UmbracoScriptsPath": { "type": "string", - "description": "Gets or sets a value for the Umbraco scripts path.", + "description": "Gets or sets a value for the Umbraco scripts path.\n ", "default": "~/scripts" }, "UmbracoMediaPath": { "type": "string", - "description": "Gets or sets a value for the Umbraco media request path.", + "description": "Gets or sets a value for the Umbraco media request path.\n ", "default": "~/media" }, "UmbracoMediaPhysicalRootPath": { "type": "string", - "description": "Gets or sets a value for the physical Umbraco media root path (falls back to UmbracoMediaPath when empty)." + "description": "Gets or sets a value for the physical Umbraco media root path (falls back to UmbracoMediaPath when\nempty).\n " }, "InstallMissingDatabase": { "type": "boolean", - "description": "Gets or sets a value indicating whether to install the database when it is missing.", + "description": "Gets or sets a value indicating whether to install the database when it is missing.\n ", "default": false }, "DisableElectionForSingleServer": { "type": "boolean", - "description": "Gets or sets a value indicating whether to disable the election for a single server.", + "description": "Gets or sets a value indicating whether to disable the election for a single server.\n ", "default": false }, "DatabaseFactoryServerVersion": { "type": "string", - "description": "Gets or sets a value for the database factory server version." + "description": "Gets or sets a value for the database factory server version.\n " }, "MainDomLock": { "type": "string", - "description": "Gets or sets a value for the main dom lock." + "description": "Gets or sets a value for the main dom lock.\n " }, "MainDomKeyDiscriminator": { "type": "string", - "description": "Gets or sets a value to discriminate MainDom boundaries.\n\nGenerally the default should suffice but useful for advanced scenarios e.g. azure deployment slot based zero downtime deployments." + "description": "Gets or sets a value to discriminate MainDom boundaries.\n\n Generally the default should suffice but useful for advanced scenarios e.g. azure deployment slot based zero\n downtime deployments.\n\n " }, "MainDomReleaseSignalPollingInterval": { "type": "integer", - "description": "Gets or sets the duration (in milliseconds) for which the MainDomLock release signal polling task should sleep.", + "description": "Gets or sets the duration (in milliseconds) for which the MainDomLock release signal polling task should sleep.\n ", "format": "int32", "default": 2000 }, "Id": { "type": "string", - "description": "Gets or sets the telemetry ID." + "description": "Gets or sets the telemetry ID.\n " }, "NoNodesViewPath": { "type": "string", - "description": "Gets or sets a value for the path to the no content view.", + "description": "Gets or sets a value for the path to the no content view.\n ", "default": "~/umbraco/UmbracoWebsite/NoNodes.cshtml" }, "DatabaseServerRegistrar": { - "description": "Gets or sets a value for the database server registrar settings.", + "description": "Gets or sets a value for the database server registrar settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsDatabaseServerRegistrarSettings" @@ -2217,7 +2209,7 @@ ] }, "DatabaseServerMessenger": { - "description": "Gets or sets a value for the database server messenger settings.", + "description": "Gets or sets a value for the database server messenger settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsDatabaseServerMessengerSettings" @@ -2225,7 +2217,7 @@ ] }, "Smtp": { - "description": "Gets or sets a value for the SMTP settings.", + "description": "Gets or sets a value for the SMTP settings.\n ", "oneOf": [ { "type": "null" @@ -2237,40 +2229,46 @@ }, "SanitizeTinyMce": { "type": "boolean", - "description": "Gets or sets a value indicating whether TinyMCE scripting sanitization should be applied.", + "description": "Gets or sets a value indicating whether TinyMCE scripting sanitization should be applied.\n ", "default": false }, "DistributedLockingReadLockDefaultTimeout": { "type": "string", - "description": "Gets or sets a value representing the maximum time to wait whilst attempting to obtain a distributed read lock.", + "description": "Gets or sets a value representing the maximum time to wait whilst attempting to obtain a distributed read lock.\n ", "format": "duration", "default": "00:01:00" }, "DistributedLockingWriteLockDefaultTimeout": { "type": "string", - "description": "Gets or sets a value representing the maximum time to wait whilst attempting to obtain a distributed write lock.", + "description": "Gets or sets a value representing the maximum time to wait whilst attempting to obtain a distributed write lock.\n ", "format": "duration", "default": "00:00:05" }, "DistributedLockingMechanism": { "type": "string", "description": "Gets or sets a value representing the DistributedLockingMechanism to use." + }, + "ForceCombineUrlPathLeftToRight": { + "type": "boolean", + "description": "Force url paths to be left to right, even when the culture has right to left text", + "default": true, + "x-example": "For the following hierarchy\n- Root (/ar)\n - 1 (/ar/1)\n - 2 (/ar/1/2)\n - 3 (/ar/1/2/3)\n - 3 (/ar/1/2/3/4)\nWhen forced\n- https://www.umbraco.com/ar/1/2/3/4\nwhen not\n- https://www.umbraco.com/ar/4/3/2/1" } } }, "UmbracoCmsCoreConfigurationModelsDatabaseServerRegistrarSettings": { "type": "object", - "description": "Typed configuration options for database server registrar settings.", + "description": "Typed configuration options for database server registrar settings.\n ", "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.", + "description": "Gets or sets a value for the amount of time to wait between calls to the database on the background thread.\n ", "format": "duration", "default": "00:01:00" }, "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.", + "description": "Gets or sets a value for the time span to wait before considering a server stale, after it has last been accessed.\n ", "format": "duration", "default": "00:02:00" } @@ -2278,29 +2276,29 @@ }, "UmbracoCmsCoreConfigurationModelsDatabaseServerMessengerSettings": { "type": "object", - "description": "Typed configuration options for database server messaging settings.", + "description": "Typed configuration options for database server messaging settings.\n ", "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).", + "description": "Gets or sets a value for the maximum number of instructions that can be processed at startup; otherwise the server\ncold-boots (rebuilds its caches).\n ", "format": "int32", "default": 1000 }, "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.", + "description": "Gets or sets a value for the time to keep instructions in the database; records older than this number will be\npruned.\n ", "format": "duration", "default": "2.00:00:00" }, "TimeBetweenSyncOperations": { "type": "string", - "description": "Gets or sets a value for the time to wait between each sync operations.", + "description": "Gets or sets a value for the time to wait between each sync operations.\n ", "format": "duration", "default": "00:00:05" }, "TimeBetweenPruneOperations": { "type": "string", - "description": "Gets or sets a value for the time to wait between each prune operations.", + "description": "Gets or sets a value for the time to wait between each prune operations.\n ", "format": "duration", "default": "00:01:00" } @@ -2313,14 +2311,14 @@ }, { "type": "object", - "description": "Typed configuration options for SMTP settings.", + "description": "Typed configuration options for SMTP settings.\n ", "required": [ "From" ], "properties": { "From": { "type": "string", - "description": "Gets or sets a value for the SMTP from address to use for messages.", + "description": "Gets or sets a value for the SMTP from address to use for messages.\n ", "format": "email", "minLength": 1 }, @@ -2329,15 +2327,15 @@ "null", "string" ], - "description": "Gets or sets a value for the SMTP host." + "description": "Gets or sets a value for the SMTP host.\n " }, "Port": { "type": "integer", - "description": "Gets or sets a value for the SMTP port.", + "description": "Gets or sets a value for the SMTP port.\n ", "format": "int32" }, "SecureSocketOptions": { - "description": "Gets or sets a value for the secure socket options.", + "description": "Gets or sets a value for the secure socket options.\n ", "default": "Auto", "oneOf": [ { @@ -2350,10 +2348,10 @@ "null", "string" ], - "description": "Gets or sets a value for the SMTP pick-up directory." + "description": "Gets or sets a value for the SMTP pick-up directory.\n " }, "DeliveryMethod": { - "description": "Gets or sets a value for the SMTP delivery method.", + "description": "Gets or sets a value for the SMTP delivery method.\n ", "default": "Network", "oneOf": [ { @@ -2366,14 +2364,14 @@ "null", "string" ], - "description": "Gets or sets a value for the SMTP user name." + "description": "Gets or sets a value for the SMTP user name.\n " }, "Password": { "type": [ "null", "string" ], - "description": "Gets or sets a value for the SMTP password." + "description": "Gets or sets a value for the SMTP password.\n " } } } @@ -2381,7 +2379,7 @@ }, "UmbracoCmsCoreConfigurationModelsSecureSocketOptions": { "type": "string", - "description": "Matches MailKit.Security.SecureSocketOptions and defined locally to avoid having to take\na dependency on this external library into Umbraco.Core.", + "description": "Matches MailKit.Security.SecureSocketOptions and defined locally to avoid having to take\na dependency on this external library into Umbraco.Core.\n ", "x-enumNames": [ "None", "Auto", @@ -2413,17 +2411,17 @@ }, "UmbracoCmsCoreConfigurationModelsHealthChecksSettings": { "type": "object", - "description": "Typed configuration options for healthchecks settings.", + "description": "Typed configuration options for healthchecks settings.\n ", "properties": { "DisabledChecks": { "type": "array", - "description": "Gets or sets a value for the collection of healthchecks that are disabled.", + "description": "Gets or sets a value for the collection of healthchecks that are disabled.\n ", "items": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsDisabledHealthCheckSettings" } }, "Notification": { - "description": "Gets or sets a value for the healthcheck notification settings.", + "description": "Gets or sets a value for the healthcheck notification settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsHealthChecksNotificationSettings" @@ -2434,54 +2432,54 @@ }, "UmbracoCmsCoreConfigurationModelsDisabledHealthCheckSettings": { "type": "object", - "description": "Typed configuration options for disabled healthcheck settings.", + "description": "Typed configuration options for disabled healthcheck settings.\n ", "properties": { "Id": { "type": "string", - "description": "Gets or sets a value for the healthcheck Id to disable.", + "description": "Gets or sets a value for the healthcheck Id to disable.\n ", "format": "guid" }, "DisabledOn": { "type": "string", - "description": "Gets or sets a value for the date the healthcheck was disabled.", + "description": "Gets or sets a value for the date the healthcheck was disabled.\n ", "format": "date-time" }, "DisabledBy": { "type": "integer", - "description": "Gets or sets a value for Id of the user that disabled the healthcheck.", + "description": "Gets or sets a value for Id of the user that disabled the healthcheck.\n ", "format": "int32" } } }, "UmbracoCmsCoreConfigurationModelsHealthChecksNotificationSettings": { "type": "object", - "description": "Typed configuration options for healthcheck notification settings.", + "description": "Typed configuration options for healthcheck notification settings.\n ", "properties": { "Enabled": { "type": "boolean", - "description": "Gets or sets a value indicating whether health check notifications are enabled.", + "description": "Gets or sets a value indicating whether health check notifications are enabled.\n ", "default": false }, "FirstRunTime": { "type": "string", - "description": "Gets or sets a value for the first run time of a healthcheck notification in crontab format." + "description": "Gets or sets a value for the first run time of a healthcheck notification in crontab format.\n " }, "Period": { "type": "string", - "description": "Gets or sets a value for the period of the healthcheck notification.", + "description": "Gets or sets a value for the period of the healthcheck notification.\n ", "format": "duration", "default": "1.00:00:00" }, "NotificationMethods": { "type": "object", - "description": "Gets or sets a value for the collection of health check notification methods.", + "description": "Gets or sets a value for the collection of health check notification methods.\n ", "additionalProperties": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsHealthChecksNotificationMethodSettings" } }, "DisabledChecks": { "type": "array", - "description": "Gets or sets a value for the collection of health checks that are disabled for notifications.", + "description": "Gets or sets a value for the collection of health checks that are disabled for notifications.\n ", "items": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsDisabledHealthCheckSettings" } @@ -2490,15 +2488,15 @@ }, "UmbracoCmsCoreConfigurationModelsHealthChecksNotificationMethodSettings": { "type": "object", - "description": "Typed configuration options for healthcheck notification method settings.", + "description": "Typed configuration options for healthcheck notification method settings.\n ", "properties": { "Enabled": { "type": "boolean", - "description": "Gets or sets a value indicating whether the health check notification method is enabled.", + "description": "Gets or sets a value indicating whether the health check notification method is enabled.\n ", "default": false }, "Verbosity": { - "description": "Gets or sets a value for the health check notifications reporting verbosity.", + "description": "Gets or sets a value for the health check notifications reporting verbosity.\n ", "default": "Summary", "oneOf": [ { @@ -2508,12 +2506,12 @@ }, "FailureOnly": { "type": "boolean", - "description": "Gets or sets a value indicating whether the health check notifications should occur on failures only.", + "description": "Gets or sets a value indicating whether the health check notifications should occur on failures only.\n ", "default": false }, "Settings": { "type": "object", - "description": "Gets or sets a value providing provider specific settings for the health check notification method.", + "description": "Gets or sets a value providing provider specific settings for the health check notification method.\n ", "additionalProperties": { "type": "string" } @@ -2534,17 +2532,17 @@ }, "UmbracoCmsCoreConfigurationModelsHostingSettings": { "type": "object", - "description": "Typed configuration options for hosting settings.", + "description": "Typed configuration options for hosting settings.\n ", "properties": { "ApplicationVirtualPath": { "type": [ "null", "string" ], - "description": "Gets or sets a value for the application virtual path." + "description": "Gets or sets a value for the application virtual path.\n " }, "LocalTempStorageLocation": { - "description": "Gets or sets a value for the location of temporary files.", + "description": "Gets or sets a value for the location of temporary files.\n ", "default": "Default", "oneOf": [ { @@ -2554,7 +2552,7 @@ }, "Debug": { "type": "boolean", - "description": "Gets or sets a value indicating whether umbraco is running in [debug mode].", + "description": "Gets or sets a value indicating whether umbraco is running in [debug mode].\n ", "default": false }, "SiteName": { @@ -2562,7 +2560,7 @@ "null", "string" ], - "description": "Gets or sets a value specifying the name of the site." + "description": "Gets or sets a value specifying the name of the site.\n " } } }, @@ -2582,10 +2580,10 @@ }, "UmbracoCmsCoreConfigurationModelsImagingSettings": { "type": "object", - "description": "Typed configuration options for imaging settings.", + "description": "Typed configuration options for imaging settings.\n ", "properties": { "Cache": { - "description": "Gets or sets a value for imaging cache settings.", + "description": "Gets or sets a value for imaging cache settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsImagingCacheSettings" @@ -2593,7 +2591,7 @@ ] }, "Resize": { - "description": "Gets or sets a value for imaging resize settings.", + "description": "Gets or sets a value for imaging resize settings.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsImagingResizeSettings" @@ -2604,50 +2602,50 @@ }, "UmbracoCmsCoreConfigurationModelsImagingCacheSettings": { "type": "object", - "description": "Typed configuration options for image cache settings.", + "description": "Typed configuration options for image cache settings.\n ", "properties": { "BrowserMaxAge": { "type": "string", - "description": "Gets or sets a value for the browser image cache maximum age.", + "description": "Gets or sets a value for the browser image cache maximum age.\n ", "format": "duration", "default": "7.00:00:00" }, "CacheMaxAge": { "type": "string", - "description": "Gets or sets a value for the image cache maximum age.", + "description": "Gets or sets a value for the image cache maximum age.\n ", "format": "duration", "default": "365.00:00:00" }, "CacheHashLength": { "type": "integer", - "description": "Gets or sets a value for the image cache hash length.", + "description": "Gets or sets a value for the image cache hash length.\n ", "default": 12 }, "CacheFolderDepth": { "type": "integer", - "description": "Gets or sets a value for the image cache folder depth.", + "description": "Gets or sets a value for the image cache folder depth.\n ", "default": 8 }, "CacheFolder": { "type": "string", - "description": "Gets or sets a value for the image cache folder.", + "description": "Gets or sets a value for the image cache folder.\n ", "default": "~/umbraco/Data/TEMP/MediaCache" } } }, "UmbracoCmsCoreConfigurationModelsImagingResizeSettings": { "type": "object", - "description": "Typed configuration options for image resize settings.", + "description": "Typed configuration options for image resize settings.\n ", "properties": { "MaxWidth": { "type": "integer", - "description": "Gets or sets a value for the maximim resize width.", + "description": "Gets or sets a value for the maximim resize width.\n ", "format": "int32", "default": 5000 }, "MaxHeight": { "type": "integer", - "description": "Gets or sets a value for the maximim resize height.", + "description": "Gets or sets a value for the maximim resize height.\n ", "format": "int32", "default": 5000 } @@ -2655,10 +2653,10 @@ }, "UmbracoCmsCoreConfigurationModelsIndexCreatorSettings": { "type": "object", - "description": "Typed configuration options for index creator settings.", + "description": "Typed configuration options for index creator settings.\n ", "properties": { "LuceneDirectoryFactory": { - "description": "Gets or sets a value for lucene directory factory type.", + "description": "Gets or sets a value for lucene directory factory type.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsLuceneDirectoryFactory" @@ -2683,89 +2681,46 @@ }, "UmbracoCmsCoreConfigurationModelsKeepAliveSettings": { "type": "object", - "description": "Typed configuration options for keep alive settings.", + "description": "Typed configuration options for keep alive settings.\n ", "properties": { "DisableKeepAliveTask": { "type": "boolean", - "description": "Gets or sets a value indicating whether the keep alive task is disabled.", + "description": "Gets or sets a value indicating whether the keep alive task is disabled.\n ", "default": false }, "KeepAlivePingUrl": { "type": "string", - "description": "Gets or sets a value for the keep alive ping URL.", + "description": "Gets or sets a value for the keep alive ping URL.\n ", "default": "~/api/keepalive/ping" } } }, "UmbracoCmsCoreConfigurationModelsLoggingSettings": { "type": "object", - "description": "Typed configuration options for logging settings.", + "description": "Typed configuration options for logging settings.\n ", "properties": { "MaxLogAge": { "type": "string", - "description": "Gets or sets a value for the maximum age of a log file.", + "description": "Gets or sets a value for the maximum age of a log file.\n ", "format": "duration", "default": "1.00:00:00" } } }, - "UmbracoCmsCoreConfigurationModelsMemberPasswordConfigurationSettings": { - "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", - "default": 10 - }, - "RequireNonLetterOrDigit": { - "type": "boolean", - "description": "Gets a value indicating whether at least one non-letter or digit is required for the password.", - "default": false - }, - "RequireDigit": { - "type": "boolean", - "description": "Gets a value indicating whether at least one digit is required for the password.", - "default": false - }, - "RequireLowercase": { - "type": "boolean", - "description": "Gets a value indicating whether at least one lower-case character is required for the password.", - "default": false - }, - "RequireUppercase": { - "type": "boolean", - "description": "Gets a value indicating whether at least one upper-case character is required for the password.", - "default": false - }, - "HashAlgorithmType": { - "type": "string", - "description": "Gets a value for the password hash algorithm type.", - "default": "PBKDF2.ASPNETCORE.V3" - }, - "MaxFailedAccessAttemptsBeforeLockout": { - "type": "integer", - "description": "Gets a value for the maximum failed access attempts before lockout.", - "format": "int32", - "default": 5 - } - } - }, "UmbracoCmsCoreConfigurationModelsNuCacheSettings": { "type": "object", - "description": "Typed configuration options for NuCache settings.", + "description": "Typed configuration options for NuCache settings.\n ", "properties": { "BTreeBlockSize": { "type": [ "integer", "null" ], - "description": "Gets or sets a value defining the BTree block size.", + "description": "Gets or sets a value defining the BTree block size.\n ", "format": "int32" }, "NuCacheSerializerType": { - "description": "The serializer type that nucache uses to persist documents in the database.", + "description": "The serializer type that nucache uses to persist documents in the database.\n ", "default": "MessagePack", "oneOf": [ { @@ -2775,13 +2730,13 @@ }, "SqlPageSize": { "type": "integer", - "description": "The paging size to use for nucache SQL queries.", + "description": "The paging size to use for nucache SQL queries.\n ", "format": "int32", "default": 1000 }, "KitBatchSize": { "type": "integer", - "description": "The size to use for nucache Kit batches. Higher value means more content loaded into memory at a time.", + "description": "The size to use for nucache Kit batches. Higher value means more content loaded into memory at a time.\n ", "format": "int32", "default": 1 }, @@ -2792,7 +2747,7 @@ }, "UmbracoCmsCoreConfigurationModelsNuCacheSerializerType": { "type": "string", - "description": "The serializer type that nucache uses to persist documents in the database.", + "description": "The serializer type that nucache uses to persist documents in the database.\n ", "x-enumNames": [ "MessagePack", "JSON" @@ -2804,21 +2759,21 @@ }, "UmbracoCmsCoreConfigurationModelsRequestHandlerSettings": { "type": "object", - "description": "Typed configuration options for request handler settings.", + "description": "Typed configuration options for request handler settings.\n ", "properties": { "AddTrailingSlash": { "type": "boolean", - "description": "Gets or sets a value indicating whether to add a trailing slash to URLs.", + "description": "Gets or sets a value indicating whether to add a trailing slash to URLs.\n ", "default": true }, "ConvertUrlsToAscii": { "type": "string", - "description": "Gets or sets a value indicating whether to convert URLs to ASCII (valid values: \"true\", \"try\" or \"false\").", + "description": "Gets or sets a value indicating whether to convert URLs to ASCII (valid values: \"true\", \"try\" or \"false\").\n ", "default": "try" }, "EnableDefaultCharReplacements": { "type": "boolean", - "description": "Disable all default character replacements", + "description": "Disable all default character replacements\n ", "default": true }, "UserDefinedCharCollection": { @@ -2826,7 +2781,7 @@ "array", "null" ], - "description": "Add additional character replacements, or override defaults", + "description": "Add additional character replacements, or override defaults\n ", "items": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsCharItem" } @@ -2838,11 +2793,11 @@ "properties": { "Char": { "type": "string", - "description": "The character to replace" + "description": "The character to replace\n " }, "Replacement": { "type": "string", - "description": "The replacement character" + "description": "The replacement character\n " } } }, @@ -2850,6 +2805,15 @@ "type": "object", "description": "Typed configuration options for runtime settings.", "properties": { + "Mode": { + "description": "Gets or sets the runtime mode.", + "default": "BackofficeDevelopment", + "oneOf": [ + { + "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsRuntimeMode" + } + ] + }, "MaxQueryStringLength": { "type": [ "integer", @@ -2863,33 +2827,47 @@ "integer", "null" ], - "description": "Gets or sets a value for the maximum request length in kb.", + "description": "Gets or sets a value for the maximum request length in kb.\n ", "format": "int32" } } }, + "UmbracoCmsCoreConfigurationModelsRuntimeMode": { + "type": "string", + "description": "Represents the configured Umbraco runtime mode.", + "x-enumNames": [ + "BackofficeDevelopment", + "Development", + "Production" + ], + "enum": [ + "BackofficeDevelopment", + "Development", + "Production" + ] + }, "UmbracoCmsCoreConfigurationModelsSecuritySettings": { "type": "object", - "description": "Typed configuration options for security settings.", + "description": "Typed configuration options for security settings.\n ", "properties": { "KeepUserLoggedIn": { "type": "boolean", - "description": "Gets or sets a value indicating whether to keep the user logged in.", + "description": "Gets or sets a value indicating whether to keep the user logged in.\n ", "default": false }, "HideDisabledUsersInBackOffice": { "type": "boolean", - "description": "Gets or sets a value indicating whether to hide disabled users in the back-office.", + "description": "Gets or sets a value indicating whether to hide disabled users in the back-office.\n ", "default": false }, "AllowPasswordReset": { "type": "boolean", - "description": "Gets or sets a value indicating whether to allow user password reset.", + "description": "Gets or sets a value indicating whether to allow user password reset.\n ", "default": true }, "AuthCookieName": { "type": "string", - "description": "Gets or sets a value for the authorization cookie name.", + "description": "Gets or sets a value for the authorization cookie name.\n ", "default": "UMB_UCONTEXT" }, "AuthCookieDomain": { @@ -2897,19 +2875,19 @@ "null", "string" ], - "description": "Gets or sets a value for the authorization cookie domain." + "description": "Gets or sets a value for the authorization cookie domain.\n " }, "UsernameIsEmail": { "type": "boolean", - "description": "Gets or sets a value indicating whether the user's email address is to be considered as their username." + "description": "Gets or sets a value indicating whether the user's email address is to be considered as their username.\n " }, "AllowedUserNameCharacters": { "type": "string", - "description": "Gets or sets the set of allowed characters for a username", + "description": "Gets or sets the set of allowed characters for a username\n ", "default": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+\\" }, "UserPassword": { - "description": "Gets or sets a value for the user password settings.", + "description": "Gets or sets a value for the user password settings.\n ", "oneOf": [ { "type": "null" @@ -2920,7 +2898,7 @@ ] }, "MemberPassword": { - "description": "Gets or sets a value for the member password settings.", + "description": "Gets or sets a value for the member password settings.\n ", "oneOf": [ { "type": "null" @@ -2932,54 +2910,97 @@ }, "MemberBypassTwoFactorForExternalLogins": { "type": "boolean", - "description": "Gets or sets a value indicating whether to bypass the two factor requirement in Umbraco when using external login for members. Thereby rely on the External login and potential 2FA at that provider.", + "description": "Gets or sets a value indicating whether to bypass the two factor requirement in Umbraco when using external login\nfor members. Thereby rely on the External login and potential 2FA at that provider.\n ", "default": true }, "UserBypassTwoFactorForExternalLogins": { "type": "boolean", - "description": "Gets or sets a value indicating whether to bypass the two factor requirement in Umbraco when using external login for users. Thereby rely on the External login and potential 2FA at that provider.", + "description": "Gets or sets a value indicating whether to bypass the two factor requirement in Umbraco when using external login\nfor users. Thereby rely on the External login and potential 2FA at that provider.\n ", "default": true } } }, "UmbracoCmsCoreConfigurationModelsUserPasswordConfigurationSettings": { "type": "object", - "description": "Typed configuration options for user password settings.", + "description": "Typed configuration options for user password settings.\n ", "properties": { "RequiredLength": { "type": "integer", - "description": "Gets a value for the minimum required length for the password.", + "description": "Gets a value for the minimum required length for the password.\n ", "format": "int32", "default": 10 }, "RequireNonLetterOrDigit": { "type": "boolean", - "description": "Gets a value indicating whether at least one non-letter or digit is required for the password.", + "description": "Gets a value indicating whether at least one non-letter or digit is required for the password.\n ", "default": false }, "RequireDigit": { "type": "boolean", - "description": "Gets a value indicating whether at least one digit is required for the password.", + "description": "Gets a value indicating whether at least one digit is required for the password.\n ", "default": false }, "RequireLowercase": { "type": "boolean", - "description": "Gets a value indicating whether at least one lower-case character is required for the password.", + "description": "Gets a value indicating whether at least one lower-case character is required for the password.\n ", "default": false }, "RequireUppercase": { "type": "boolean", - "description": "Gets a value indicating whether at least one upper-case character is required for the password.", + "description": "Gets a value indicating whether at least one upper-case character is required for the password.\n ", "default": false }, "HashAlgorithmType": { "type": "string", - "description": "Gets a value for the password hash algorithm type.", + "description": "Gets a value for the password hash algorithm type.\n ", "default": "PBKDF2.ASPNETCORE.V3" }, "MaxFailedAccessAttemptsBeforeLockout": { "type": "integer", - "description": "Gets a value for the maximum failed access attempts before lockout.", + "description": "Gets a value for the maximum failed access attempts before lockout.\n ", + "format": "int32", + "default": 5 + } + } + }, + "UmbracoCmsCoreConfigurationModelsMemberPasswordConfigurationSettings": { + "type": "object", + "description": "Typed configuration options for member password settings.\n ", + "properties": { + "RequiredLength": { + "type": "integer", + "description": "Gets a value for the minimum required length for the password.\n ", + "format": "int32", + "default": 10 + }, + "RequireNonLetterOrDigit": { + "type": "boolean", + "description": "Gets a value indicating whether at least one non-letter or digit is required for the password.\n ", + "default": false + }, + "RequireDigit": { + "type": "boolean", + "description": "Gets a value indicating whether at least one digit is required for the password.\n ", + "default": false + }, + "RequireLowercase": { + "type": "boolean", + "description": "Gets a value indicating whether at least one lower-case character is required for the password.\n ", + "default": false + }, + "RequireUppercase": { + "type": "boolean", + "description": "Gets a value indicating whether at least one upper-case character is required for the password.\n ", + "default": false + }, + "HashAlgorithmType": { + "type": "string", + "description": "Gets a value for the password hash algorithm type.\n ", + "default": "PBKDF2.ASPNETCORE.V3" + }, + "MaxFailedAccessAttemptsBeforeLockout": { + "type": "integer", + "description": "Gets a value for the maximum failed access attempts before lockout.\n ", "format": "int32", "default": 5 } @@ -2987,25 +3008,25 @@ }, "UmbracoCmsCoreConfigurationModelsTourSettings": { "type": "object", - "description": "Typed configuration options for tour settings.", + "description": "Typed configuration options for tour settings.\n ", "properties": { "EnableTours": { "type": "boolean", - "description": "Gets or sets a value indicating whether back-office tours are enabled.", + "description": "Gets or sets a value indicating whether back-office tours are enabled.\n ", "default": true } } }, "UmbracoCmsCoreConfigurationModelsTypeFinderSettings": { "type": "object", - "description": "Typed configuration options for type finder settings.", + "description": "Typed configuration options for type finder settings.\n ", "required": [ "AssembliesAcceptingLoadExceptions" ], "properties": { "AssembliesAcceptingLoadExceptions": { "type": "string", - "description": "Gets or sets a value for the assemblies that accept load exceptions during type finder operations.", + "description": "Gets or sets a value for the assemblies that accept load exceptions during type finder operations.\n ", "minLength": 1 }, "AdditionalEntryAssemblies": { @@ -3013,7 +3034,7 @@ "array", "null" ], - "description": "By default the entry assemblies for scanning plugin types is the Umbraco DLLs. If you require\nscanning for plugins based on different root referenced assemblies you can add the assembly name to this list.", + "description": "By default the entry assemblies for scanning plugin types is the Umbraco DLLs. If you require\nscanning for plugins based on different root referenced assemblies you can add the assembly name to this list.\n ", "items": { "type": "string" } @@ -3022,45 +3043,45 @@ }, "UmbracoCmsCoreConfigurationModelsWebRoutingSettings": { "type": "object", - "description": "Typed configuration options for web routing settings.", + "description": "Typed configuration options for web routing settings.\n ", "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.", + "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.\n ", "default": false }, "TrySkipIisCustomErrors": { "type": "boolean", - "description": "Gets or sets a value indicating whether IIS custom errors should be skipped.", + "description": "Gets or sets a value indicating whether IIS custom errors should be skipped.\n ", "default": false }, "InternalRedirectPreservesTemplate": { "type": "boolean", - "description": "Gets or sets a value indicating whether an internal redirect should preserve the template.", + "description": "Gets or sets a value indicating whether an internal redirect should preserve the template.\n ", "default": false }, "DisableAlternativeTemplates": { "type": "boolean", - "description": "Gets or sets a value indicating whether the use of alternative templates are disabled.", + "description": "Gets or sets a value indicating whether the use of alternative templates are disabled.\n ", "default": false }, "ValidateAlternativeTemplates": { "type": "boolean", - "description": "Gets or sets a value indicating whether the use of alternative templates should be validated.", + "description": "Gets or sets a value indicating whether the use of alternative templates should be validated.\n ", "default": false }, "DisableFindContentByIdPath": { "type": "boolean", - "description": "Gets or sets a value indicating whether find content ID by path is disabled.", + "description": "Gets or sets a value indicating whether find content ID by path is disabled.\n ", "default": false }, "DisableRedirectUrlTracking": { "type": "boolean", - "description": "Gets or sets a value indicating whether redirect URL tracking is disabled.", + "description": "Gets or sets a value indicating whether redirect URL tracking is disabled.\n ", "default": false }, "UrlProviderMode": { - "description": "Gets or sets a value for the URL provider mode (UrlMode).", + "description": "Gets or sets a value for the URL provider mode (UrlMode).\n ", "default": "Auto", "oneOf": [ { @@ -3070,13 +3091,13 @@ }, "UmbracoApplicationUrl": { "type": "string", - "description": "Gets or sets a value for the Umbraco application URL." + "description": "Gets or sets a value for the Umbraco application URL.\n " } } }, "UmbracoCmsCoreModelsPublishedContentUrlMode": { "type": "string", - "description": "Specifies the type of URLs that the URL provider should produce, Auto is the default.", + "description": "Specifies the type of URLs that the URL provider should produce, Auto is the default.\n ", "x-enumNames": [ "Default", "Relative", @@ -3092,11 +3113,11 @@ }, "UmbracoCmsCoreConfigurationModelsUmbracoPluginSettings": { "type": "object", - "description": "Typed configuration options for the plugins.", + "description": "Typed configuration options for the plugins.\n ", "properties": { "BrowsableFileExtensions": { "type": "array", - "description": "Gets or sets the allowed file extensions (including the period \".\") that should be accessible from the browser.", + "description": "Gets or sets the allowed file extensions (including the period \".\") that should be accessible from the browser.\n ", "items": { "type": "string" } @@ -3105,35 +3126,35 @@ }, "UmbracoCmsCoreConfigurationModelsUnattendedSettings": { "type": "object", - "description": "Typed configuration options for unattended settings.", + "description": "Typed configuration options for unattended settings.\n ", "properties": { "InstallUnattended": { "type": "boolean", - "description": "Gets or sets a value indicating whether unattended installs are enabled.", + "description": "Gets or sets a value indicating whether unattended installs are enabled.\n ", "default": false }, "UpgradeUnattended": { "type": "boolean", - "description": "Gets or sets a value indicating whether unattended upgrades are enabled.", + "description": "Gets or sets a value indicating whether unattended upgrades are enabled.\n ", "default": false }, "PackageMigrationsUnattended": { "type": "boolean", - "description": "Gets or sets a value indicating whether unattended package migrations are enabled." + "description": "Gets or sets a value indicating whether unattended package migrations are enabled.\n " }, "UnattendedUserName": { "type": [ "null", "string" ], - "description": "Gets or sets a value to use for creating a user with a name for Unattended Installs" + "description": "Gets or sets a value to use for creating a user with a name for Unattended Installs\n " }, "UnattendedUserEmail": { "type": [ "null", "string" ], - "description": "Gets or sets a value to use for creating a user with an email for Unattended Installs", + "description": "Gets or sets a value to use for creating a user with an email for Unattended Installs\n ", "format": "email" }, "UnattendedUserPassword": { @@ -3141,7 +3162,7 @@ "null", "string" ], - "description": "Gets or sets a value to use for creating a user with a password for Unattended Installs" + "description": "Gets or sets a value to use for creating a user with a password for Unattended Installs\n " } } }, @@ -3150,33 +3171,32 @@ "properties": { "Commands": { "type": "array", - "description": "HTML RichText Editor TinyMCE Commands", + "description": "HTML RichText Editor TinyMCE Commands\n ", "items": { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsRichTextEditorCommand" } }, "Plugins": { "type": "array", - "description": "HTML RichText Editor TinyMCE Plugins", + "description": "HTML RichText Editor TinyMCE Plugins\n ", "items": { "type": "string" } }, "CustomConfig": { "type": "object", - "description": "HTML RichText Editor TinyMCE Custom Config", + "description": "HTML RichText Editor TinyMCE Custom Config\n ", "additionalProperties": { "type": "string" } }, "ValidElements": { "type": "string", - "description": " ", "default": "+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|reversed|start|style|type],-ul[class|style],-li[class|style],br[class],img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id],-sub[style|class],-sup[style|class],-blockquote[dir|style|class],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*],figure,figcaption" }, "InvalidElements": { "type": "string", - "description": "Invalid HTML elements for RichText Editor", + "description": "Invalid HTML elements for RichText Editor\n ", "default": "font" } } @@ -3221,11 +3241,11 @@ "properties": { "UseInMemoryCache": { "type": "boolean", - "description": "Use in memory cache", + "description": "Use in memory cache\n ", "default": false }, "CacheBuster": { - "description": "The cache buster type to use", + "description": "The cache buster type to use\n ", "default": "Version", "oneOf": [ { @@ -3238,7 +3258,7 @@ "null", "string" ], - "description": "The unique version string used if CacheBuster is 'Version'." + "description": "The unique version string used if CacheBuster is 'Version'.\n " } } }, @@ -3299,42 +3319,42 @@ }, "UmbracoCmsCoreConfigurationModelsPackageMigrationSettings": { "type": "object", - "description": "Typed configuration options for package migration settings.", + "description": "Typed configuration options for package migration settings.\n ", "properties": { "RunSchemaAndContentMigrations": { "type": "boolean", - "description": "Gets or sets a value indicating whether package migration steps that install schema and content should run.", + "description": "Gets or sets a value indicating whether package migration steps that install schema and content should run.\n ", "default": true }, "AllowComponentOverrideOfRunSchemaAndContentMigrations": { "type": "boolean", - "description": "Gets or sets a value indicating whether components can override the configured value for RunSchemaAndContentMigrations.", + "description": "Gets or sets a value indicating whether components can override the configured value for\nRunSchemaAndContentMigrations.\n ", "default": true } } }, "UmbracoCmsCoreConfigurationModelsLegacyPasswordMigrationSettings": { "type": "object", - "description": "Typed configuration options for legacy machine key settings used for migration of members from a v8 solution.", + "description": "Typed configuration options for legacy machine key settings used for migration of members from a v8 solution.\n ", "properties": { "MachineKeyDecryptionKey": { "type": "string", - "description": "Gets or sets the decryption hex-formatted string key found in legacy web.config machineKey configuration-element.", + "description": "Gets or sets the decryption hex-formatted string key found in legacy web.config machineKey configuration-element.\n ", "default": "" } } }, "UmbracoCmsCoreConfigurationContentDashboardSettings": { "type": "object", - "description": "Typed configuration options for content dashboard settings.", + "description": "Typed configuration options for content dashboard settings.\n ", "properties": { "AllowContentDashboardAccessToAllUsers": { "type": "boolean", - "description": "Gets a value indicating whether the content dashboard should be available to all users." + "description": "Gets a value indicating whether the content dashboard should be available to all users.\n " }, "ContentDashboardPath": { "type": "string", - "description": "Gets the path to use when constructing the URL for retrieving data for the content dashboard.", + "description": "Gets the path to use when constructing the URL for retrieving data for the content dashboard.\n ", "default": "cms" }, "ContentDashboardUrlAllowlist": { @@ -3342,7 +3362,7 @@ "array", "null" ], - "description": "Gets the allowed addresses to retrieve data for the content dashboard.", + "description": "Gets the allowed addresses to retrieve data for the content dashboard.\n ", "items": { "type": "string" } @@ -3357,7 +3377,7 @@ "array", "null" ], - "description": "Gets or sets the allowed addresses to retrieve data for the content dashboard.", + "description": "Gets or sets the allowed addresses to retrieve data for the content dashboard.\n ", "items": { "type": "string" } @@ -3366,10 +3386,10 @@ }, "UmbracoCmsCoreConfigurationModelsInstallDefaultDataSettings": { "type": "object", - "description": "Typed configuration options for installation of default data.", + "description": "Typed configuration options for installation of default data.\n ", "properties": { "InstallData": { - "description": "Gets or sets a value indicating whether to create default data on installation.", + "description": "Gets or sets a value indicating whether to create default data on installation.\n ", "oneOf": [ { "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsInstallDefaultDataOption" @@ -3378,7 +3398,7 @@ }, "Values": { "type": "array", - "description": "Gets or sets a value indicating which default data (languages, data types, etc.) should be created when InstallData is\nset to Values or ExceptValues.", + "description": "Gets or sets a value indicating which default data (languages, data types, etc.) should be created when\nInstallData is\nset to Values or ExceptValues.\n ", "items": { "type": "string" } @@ -3387,7 +3407,7 @@ }, "UmbracoCmsCoreConfigurationModelsInstallDefaultDataOption": { "type": "string", - "description": "An enumeration of options available for control over installation of default Umbraco data.", + "description": "An enumeration of options available for control over installation of default Umbraco data.\n ", "x-enumNames": [ "None", "Values", @@ -3401,6 +3421,34 @@ "All" ] }, + "UmbracoCmsCoreConfigurationModelsDataTypesSettings": { + "type": "object", + "properties": { + "CanBeChanged": { + "description": "Gets or sets a value indicating if data types can be changed after they've been used.", + "default": "True", + "oneOf": [ + { + "$ref": "#/definitions/UmbracoCmsCoreConfigurationModelsDataTypeChangeMode" + } + ] + } + } + }, + "UmbracoCmsCoreConfigurationModelsDataTypeChangeMode": { + "type": "string", + "description": "", + "x-enumNames": [ + "True", + "False", + "FalseWithHelpText" + ], + "enum": [ + "True", + "False", + "FalseWithHelpText" + ] + }, "JsonSchemaFormsDefinition": { "type": "object", "description": "Configurations for the Umbraco Forms package to Umbraco CMS\n ", @@ -3509,6 +3557,12 @@ }, "AppendQueryStringOnRedirectAfterFormSubmission": { "type": "boolean" + }, + "CultureToUseWhenParsingDatesForBackOffice": { + "type": "string" + }, + "TriggerConditionsCheckOn": { + "type": "string" } } }, @@ -3660,8 +3714,9 @@ "type": "string", "format": "duration" }, - "IgnoreBrokenDependencies": { - "type": "boolean" + "DiskOperationsTimeout": { + "type": "string", + "format": "duration" }, "IgnoreBrokenDependenciesBehavior": { "$ref": "#/definitions/UmbracoDeployCoreConfigurationDeployConfigurationIgnoreBrokenDependenciesBehavior" @@ -3683,6 +3738,15 @@ }, "ExportMemberGroups": { "type": "boolean" + }, + "AllowDomainsDeploymentOperations": { + "$ref": "#/definitions/UmbracoDeployCoreConfigurationDeployConfigurationDomainsDeploymentOperations" + }, + "ReloadMemoryCacheFollowingDiskReadOperation": { + "type": "boolean" + }, + "PreferLocalDbConnectionString": { + "type": "boolean" } } }, @@ -3768,9 +3832,31 @@ "All" ] }, + "UmbracoDeployCoreConfigurationDeployConfigurationDomainsDeploymentOperations": { + "type": "string", + "description": "", + "x-enumFlags": true, + "x-enumNames": [ + "None", + "Culture", + "AbsolutePath", + "Hostname", + "All" + ], + "enum": [ + "None", + "Culture", + "AbsolutePath", + "Hostname", + "All" + ] + }, "UmbracoDeployCoreConfigurationDeployProjectConfigurationDeployProjectConfig": { "type": "object", "properties": { + "CurrentWorkspaceName": { + "type": "string" + }, "Workspaces": { "type": "array", "items": { diff --git a/samples/UmbracoV9/App_Plugins/Relewise.Dashboard/dashboard.html b/samples/UmbracoV9/App_Plugins/Relewise.Dashboard/dashboard.html index 443af0c..93a3093 100644 --- a/samples/UmbracoV9/App_Plugins/Relewise.Dashboard/dashboard.html +++ b/samples/UmbracoV9/App_Plugins/Relewise.Dashboard/dashboard.html @@ -1,17 +1,18 @@ 
-

Relewise

+

Welcome to the Relewise dashboard!

- Welcome to the Relewise dashboard - here you can perform export functions to get all your content exported into Relewise.
- It's also possible to see the settings for Relewise directly here. + You can perform various operations, e.g. Export all your content to Relewise.
+ It's also possible to see the settings configured for Relewise directly here.

-
- -
@@ -20,11 +21,11 @@

Relewise

-

Settings

+

Settings

- Unexpected error occured. Please check the response on the XHR request or check logs.
+ Unexpected error occurred. Please check the response on the XHR request or check logs.
@@ -144,7 +145,7 @@

Clients

- DataAccessor + Data Accessor
{{ named.dataAccessor.datasetId }}
{{ named.dataAccessor.timeout }}
diff --git a/samples/UmbracoV9/Relewise.UmbracoV9.csproj b/samples/UmbracoV9/Relewise.UmbracoV9.csproj index 4b02781..f41c7df 100644 --- a/samples/UmbracoV9/Relewise.UmbracoV9.csproj +++ b/samples/UmbracoV9/Relewise.UmbracoV9.csproj @@ -9,9 +9,9 @@ - + - + diff --git a/samples/UmbracoV9/Startup.cs b/samples/UmbracoV9/Startup.cs index 2ebe531..5262d3b 100644 --- a/samples/UmbracoV9/Startup.cs +++ b/samples/UmbracoV9/Startup.cs @@ -55,7 +55,7 @@ public void ConfigureServices(IServiceCollection services) { // This setups the needed configuration for you to be able to interact with our API. // You need to add you own dataset id and api-key in the appsettings.json before recommendations and search works - services.AddRelewise(options => options.ReadFromConfiguration(_config)); + //services.AddRelewise(options => options.ReadFromConfiguration(_config)); services.AddHttpContextAccessor(); services.AddSingleton(); diff --git a/src/Integrations.Umbraco/Infrastructure/Mvc/Middlewares/RelewiseContentMiddleware.cs b/src/Integrations.Umbraco/Infrastructure/Mvc/Middlewares/RelewiseContentMiddleware.cs index ee5f6db..e6e5867 100644 --- a/src/Integrations.Umbraco/Infrastructure/Mvc/Middlewares/RelewiseContentMiddleware.cs +++ b/src/Integrations.Umbraco/Infrastructure/Mvc/Middlewares/RelewiseContentMiddleware.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Relewise.Client; using Relewise.Client.DataTypes; using Umbraco.Cms.Core; @@ -41,20 +42,23 @@ public async Task InvokeAsync(HttpContext context) if (content != null && EnsureContentAndIsTrackable(content)) { - ITracker tracker = context.RequestServices.GetRequiredService(); + ITracker? tracker = SafeGetTracker(context); - User user = await _userLocator.GetUser(); - - try - { - await tracker.TrackAsync(new ContentView(user, content.Id.ToString())); - } - catch (HttpRequestException ex) + if (tracker != null) { - if (ex.StatusCode == HttpStatusCode.NotFound) - throw new InvalidOperationException($"The Dataset Id '{tracker.DatasetId}' is not known by Relewise - You can always find your available dataset id's on https://my.relewise.com", ex); + User user = await _userLocator.GetUser(); + + try + { + await tracker.TrackAsync(new ContentView(user, content.Id.ToString())); + } + catch (HttpRequestException ex) + { + if (ex.StatusCode == HttpStatusCode.NotFound) + throw new InvalidOperationException($"The Dataset Id '{tracker.DatasetId}' is not known by Relewise - You can always find your available dataset id's on https://my.relewise.com", ex); - throw; + throw; + } } } } @@ -63,6 +67,22 @@ public async Task InvokeAsync(HttpContext context) await _next.Invoke(context); } + private static ITracker? SafeGetTracker(HttpContext context) + { + try + { + return context.RequestServices.GetRequiredService(); + } + catch (Exception ex) + { + ILogger? logger = context.RequestServices.GetService>(); + + logger?.LogError(ex, $"Unable to resolve {nameof(ITracker)}-instance. {{Message}}", ex.Message); + + return null; + } + } + private static bool IsNotInPreview(UmbracoContextReference umbracoContextReference) { return umbracoContextReference.UmbracoContext?.InPreviewMode == false;