dotnet/aspnetcore

Set `AdditionalProperties` if Type has `JsonExtensionData` attribute.

Open

#66 338 ouverte le 16 avr. 2026

Voir sur GitHub
 (3 commentaires) (0 réactions) (0 assignés)C# (37 933 stars) (10 653 forks)batch import
area-minimalfeature-openapifeature-requesthelp wanted

Description

Is there an existing issue for this?

  • I have searched the existing issues

Is your feature request related to a problem? Please describe the problem.

No problem, just a nice to have.

Describe the solution you'd like

This was originally filed in Microsoft/OpenAPI.NET under #2809

If a schema has a field with the [JsonExtensionData] attribute it should specify AdditionalProperties: {} or AdditionalProperties: true to allow for a free-form object.

Describe alternatives you've considered I've setup my own SchemaTransformer that does this:

options.AddSchemaTransformer((schema, context, cancellationToken) =>
{
    var extensionDataProperty = context.JsonTypeInfo.Type
        .GetProperties(BindingFlags.Public | BindingFlags.Instance)
        .FirstOrDefault(p => Attribute.IsDefined(p, typeof(JsonExtensionDataAttribute)));

    if (extensionDataProperty is not null)
    {
        schema.AdditionalPropertiesAllowed = true;
        schema.AdditionalProperties = new OpenApiSchema();
    }

    return Task.CompletedTask;
});

Additional context

I believe it makes sense for this to be supported because if you have a model that has ExtensionData it accepts additional properties, but the OpenApi schema gen doesn't represent this without manual intervention.

Guide contributeur