diff --git a/src/Squidex/Areas/Api/Config/OpenApi/OpenApiServices.cs b/src/Squidex/Areas/Api/Config/OpenApi/OpenApiServices.cs index c5a2f8e5d..f8f055ee4 100644 --- a/src/Squidex/Areas/Api/Config/OpenApi/OpenApiServices.cs +++ b/src/Squidex/Areas/Api/Config/OpenApi/OpenApiServices.cs @@ -32,6 +32,9 @@ namespace Squidex.Areas.Api.Config.OpenApi services.AddSingletonAs() .As(); + services.AddSingletonAs() + .As(); + services.AddSingletonAs() .As(); diff --git a/src/Squidex/Areas/Api/Config/OpenApi/ThemeProcessor.cs b/src/Squidex/Areas/Api/Config/OpenApi/ThemeProcessor.cs index 62cb20c48..eda3eb2f3 100644 --- a/src/Squidex/Areas/Api/Config/OpenApi/ThemeProcessor.cs +++ b/src/Squidex/Areas/Api/Config/OpenApi/ThemeProcessor.cs @@ -26,7 +26,7 @@ namespace Squidex.Areas.Api.Config.OpenApi public void Process(DocumentProcessorContext context) { - context.Document.BasePath = $"{Constants.ApiPrefix}/"; + context.Document.BasePath = Constants.ApiPrefix; context.Document.Info.ExtensionData = new Dictionary { diff --git a/src/Squidex/Areas/Api/Config/OpenApi/VersionProcessor.cs b/src/Squidex/Areas/Api/Config/OpenApi/VersionProcessor.cs new file mode 100644 index 000000000..5a150f082 --- /dev/null +++ b/src/Squidex/Areas/Api/Config/OpenApi/VersionProcessor.cs @@ -0,0 +1,31 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using NSwag.Generation.Processors; +using NSwag.Generation.Processors.Contexts; +using Squidex.Web; + +namespace Squidex.Areas.Api.Config.OpenApi +{ + public sealed class VersionProcessor : IDocumentProcessor + { + private readonly ExposedValues exposedValues; + + public VersionProcessor(ExposedValues exposedValues) + { + this.exposedValues = exposedValues; + } + + public void Process(DocumentProcessorContext context) + { + if (exposedValues.TryGetValue("version", out var version)) + { + context.Document.Info.Version = version; + } + } + } +} diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs b/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs index 6e502cf24..db56218fa 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs @@ -9,7 +9,6 @@ using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Options; using Namotion.Reflection; using NJsonSchema; using NJsonSchema.Generation; @@ -23,23 +22,19 @@ using Squidex.Domain.Apps.Entities.Apps; using Squidex.Domain.Apps.Entities.Schemas; using Squidex.Infrastructure; using Squidex.Pipeline.OpenApi; -using Squidex.Web; namespace Squidex.Areas.Api.Controllers.Contents.Generator { public sealed class SchemasOpenApiGenerator { - private readonly UrlsOptions urlOptions; private readonly OpenApiDocumentGeneratorSettings settings = new OpenApiDocumentGeneratorSettings(); private OpenApiSchemaGenerator schemaGenerator; private OpenApiDocument document; private JsonSchema statusSchema; private JsonSchemaResolver schemaResolver; - public SchemasOpenApiGenerator(IOptions urlOptions, IEnumerable documentProcessors) + public SchemasOpenApiGenerator(IEnumerable documentProcessors) { - this.urlOptions = urlOptions.Value; - settings.ConfigureSchemaSettings(); foreach (var processor in documentProcessors) @@ -50,7 +45,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Generator public OpenApiDocument Generate(HttpContext httpContext, IAppEntity app, IEnumerable schemas) { - document = NSwagHelper.CreateApiDocument(httpContext, urlOptions, app.Name); + document = NSwagHelper.CreateApiDocument(httpContext, app.Name); schemaGenerator = new OpenApiSchemaGenerator(settings); schemaResolver = new OpenApiSchemaResolver(document, settings); diff --git a/src/Squidex/Areas/Api/Views/Shared/Docs.cshtml b/src/Squidex/Areas/Api/Views/Shared/Docs.cshtml index b32732b73..2781fc1dd 100644 --- a/src/Squidex/Areas/Api/Views/Shared/Docs.cshtml +++ b/src/Squidex/Areas/Api/Views/Shared/Docs.cshtml @@ -17,8 +17,19 @@ - +
+ \ No newline at end of file diff --git a/src/Squidex/Docs/schemabody.md b/src/Squidex/Docs/schemabody.md index 57a6e9d40..4f1830f1a 100644 --- a/src/Squidex/Docs/schemabody.md +++ b/src/Squidex/Docs/schemabody.md @@ -1,7 +1,6 @@ The data of the content to be created or updated. Please note that each field is an object with one entry per language. -If the field is not localizable you must use iv (Invariant Language) as a key. -When you change the field to be localizable the value will become the value for the master language, depending what the master language is at this point of time. +If the field is not localizable you must use `iv` (Invariant Language) as a key. Read more about it at: https://docs.squidex.io/04-guides/02-api.html \ No newline at end of file diff --git a/src/Squidex/Pipeline/OpenApi/NSwagHelper.cs b/src/Squidex/Pipeline/OpenApi/NSwagHelper.cs index 3aa04f1d3..67efac0bd 100644 --- a/src/Squidex/Pipeline/OpenApi/NSwagHelper.cs +++ b/src/Squidex/Pipeline/OpenApi/NSwagHelper.cs @@ -11,7 +11,6 @@ using System.IO; using Microsoft.AspNetCore.Http; using NJsonSchema; using NSwag; -using Squidex.Web; namespace Squidex.Pipeline.OpenApi { @@ -30,7 +29,7 @@ namespace Squidex.Pipeline.OpenApi } } - public static OpenApiDocument CreateApiDocument(HttpContext context, UrlsOptions urlOptions, string appName) + public static OpenApiDocument CreateApiDocument(HttpContext context, string appName) { var scheme = string.Equals(context.Request.Scheme, "http", StringComparison.OrdinalIgnoreCase) ?