C# records vs. classes
DevCrate emits sealed C# records with settable properties. Records provide value-based equality and with-expression support, while traditional classes use reference equality by default. The generated get; set; properties remain serializer-friendly and can be moved to a class declaration if your project requires class semantics.
Type inference
JSON integers become long, decimal numbers become double, booleans become bool, arrays become List<T>, and nested objects become named records. Nullable or missing fields receive nullable C# types where the representative data makes that state visible.
System.Text.Json compatibility
Generated JsonPropertyName attributes preserve original JSON keys, including snake_case names, while C# properties use PascalCase. The output enables nullable reference types with #nullable enable.
Representative-sample limitations
Generated types describe the JSON sample you provide, not every response an API could return. Review optional fields and mixed-type arrays against your API contract before using the model in production.