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# (10 653 forks)batch import
area-minimalfeature-openapifeature-requesthelp wanted

Métriques du dépôt

Stars
 (37 933 stars)
Métriques de merge PR
 (Merge moyen 16j 9h) (258 PRs mergées en 30 j)

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