Skip to main content

Find .NET DTO field schemas

io.moderne.prethink.calm.FindDotnetDtoFieldSchemas

Per-property schema rows for C# DTOs: serialized name (JsonPropertyName/JsonProperty), OpenAPI format, required flag (DataAnnotations.RequiredAttribute / non-nullable value types), and a validations JSON map.

Recipe source

This recipe is only available to users of Moderne.

This recipe is available under the Moderne Proprietary License.

Used by

This recipe is used as part of the following composite recipes:

Usage

This recipe has no required configuration options. Users of Moderne can run it via the Moderne CLI.

You will need to have configured the Moderne CLI on your machine before you can run the following command.

shell
mod run . --recipe FindDotnetDtoFieldSchemas

If the recipe is not available locally, then you can install it using:

mod config recipes jar install io.moderne.recipe:rewrite-prethink:0.6.0

See how this recipe works across multiple open-source repositories

Run this recipe on OSS repos at scale with the Moderne SaaS.

The community edition of the Moderne platform enables you to easily run recipes across thousands of open-source repositories.

Please contact Moderne for more information about safely running the recipes on your own codebase in a private SaaS.

Data Tables

DTO field schemas

io.moderne.prethink.table.DtoFieldSchemas

Per-field schema detail for request/response DTOs: wire name, type, required flag, OpenAPI format, validation constraints, and any @Schema(example=) example values.

Column NameDescription
Source pathThe path to the source file containing the DTO class.
Owner class FQNFully qualified name of the DTO class owning this field. Joins to data-assets.csv via 'Class name'.
Field nameThe Java field name.
Serialized nameThe JSON name on the wire, after applying @JsonProperty overrides and class-level @JsonNaming.
Serialized name sourceHow the serialized name was derived: 'java-name' (no override), 'json-property' (@JsonProperty value), 'jackson-strategy' (recognized @JsonNaming applied), or 'unknown-strategy' (@JsonNaming present but strategy class isn't a known one - the Java field name is used as a best-effort fallback).
Type FQNFully qualified name of the field's type (after unwrapping Optional/Collection wrappers).
Type resolutionHow confidently the type was resolved: 'resolved' (FQN known), 'simple-name' (only the class simple name could be recovered, may not uniquely identify the DTO), or 'unresolved' (the type could not be determined at all).
Is collectionTrue when the declared type is a collection (List/Set/array/etc.) - the type FQN is then the element type.
Is mapTrue when the declared type is a Map - the type FQN is then the value type.
Is optionalTrue when the declared type is java.util.Optional.
FormatOpenAPI 3.0.3 format (int32, int64, date-time, uuid, email, binary, ...) or null.
RequiredWhether the field is required. Set true for @NotNull/@NotBlank/@NotEmpty, primitives, and @JsonProperty(required=true).
Validations JSONJSON map of validation constraint simple name to argument map. Example: {"NotNull":{},"Size":{"min":1,"max":100}}.
Example valueExample value from @Schema(example = "...") if declared on the field, else null.