Skip to content

Umbraco Engage Headless Swagger incompatible with DeliveryApiExtensions #27

@kasparboelkjeldsen

Description

@kasparboelkjeldsen

Which Umbraco Engage version are you using? (Please write the exact version, example: 13.2.0)

16.0.1

Which Umbraco version are you using? (Please write the exact version, example: 13.5.2)

16.2

Issue summary

If you install DeliveryApiExtensions on a Umbraco site that also has Umbraco Engage Headless and has .AddEngageApiDocumentation() set in the Program.cs you can no longer access the swagger config.

Delivery Extensions is an incredibly common package to run in headless solutions.

Specifics

Accessing https://localhost:44375/umbraco/swagger/engage-api/swagger.json when the above is installed and setup yields this exception

An unhandled exception occurred while processing the request.
InvalidOperationException: Can't use schemaId "$<DaylightName>e__FixedBuffer" for type "$Interop+Kernel32+TIME_ZONE_INFORMATION+<DaylightName>e__FixedBuffer". The same schemaId is already used for type "$Interop+Kernel32+TIME_DYNAMIC_ZONE_INFORMATION+<DaylightName>e__FixedBuffer"
Swashbuckle.AspNetCore.SwaggerGen.SchemaRepository.RegisterType(Type type, string schemaId)

SwaggerGeneratorException: Failed to generate schema for type - Microsoft.AspNetCore.Mvc.StatusCodeResult. See inner exception
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateSchema(Type type, SchemaRepository schemaRepository, PropertyInfo propertyInfo, ParameterInfo parameterInfo, ApiParameterRouteInfo routeInfo)

SwaggerGeneratorException: Failed to generate Operation for action - Umbraco.Engage.Headless.Api.v1.Analytics.PageEventApiController.TrackPageEvent (Umbraco.Engage.Headless). See inner exception
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperationAsync(OpenApiDocument document, ApiDescription apiDescription, SchemaRepository schemaRepository, Func<ApiDescription, SchemaRepository, Task<List<OpenApiParameter>>> parametersGenerator, Func<ApiDescription, SchemaRepository, Task<OpenApiRequestBody>> bodyGenerator, Func<OpenApiOperation, OperationFilterContext, Task> applyFilters)

This -could- also be an error in Delivery Extensions, but I've yet to see this crop up with any other installed package.

Steps to reproduce

Install latest umbraco
Install Umbraco Engage & Umbraco Engage Headless.
Set .AddEngageApiDocumentation() as per documentation
See swagger working for the api's.
Now install Delivery Extensions
See swagger not working

Expected result / actual result

I would expect swagger docs to keep working.


This item has been added to our backlog AB#57865

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions