[
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-frozen-field = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py310-20260619` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py311-20260619` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py312-20260619` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py313-20260619` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nset-default-enum-member = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py314-20260619` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20260619",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--set-default-enum-member",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-frozen-field = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py310-20260826` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py311-20260826` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py312-20260826` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py313-20260826` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py314-20260826` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20260826",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-frozen-field = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py310-20260909` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py311-20260909` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py312-20260909` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py313-20260909` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py314-20260909` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20260909",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-frozen-field = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.15\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py315-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.15 output for new projects.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py310-20261015` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py311-20261015` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py312-20261015` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py313-20261015` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py314-20261015` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.15\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py315-20261015` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py315-20261015",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.",
        "options": [
          "--use-standard-primitive-types"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-frozen-field = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.15\"\nuse-annotated = true\nuse-frozen-field = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py315-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.15 output for new projects.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py310-20261017` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py311-20261017` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py312-20261017` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py313-20261017` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py314-20261017` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nnaming-strategy = \"primary-first\"\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntarget-python-version = \"3.15\"\nuse-annotated = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-line-docstring = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-fixed-items = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py315-20261017` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py315-20261017",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-frozen-field = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-frozen-field = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-frozen-field = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-frozen-field = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-frozen-field = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-frozen-field = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py315-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.15 output for new projects.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nnaming-strategy = \"primary-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py310-20261027` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nnaming-strategy = \"primary-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py311-20261027` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nnaming-strategy = \"primary-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py312-20261027` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nnaming-strategy = \"primary-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py313-20261027` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nnaming-strategy = \"primary-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py314-20261027` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nnaming-strategy = \"primary-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-nullable-beside-type-list = true\nread-unevaluated-properties = true\nreuse-model = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-object-type = true\nuse-schema-description = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true"
    },
    "description": "This immutable preset extends `standard-py315-20261027` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py315-20261027",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name",
          "--naming-strategy primary-first"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-frozen-field --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-frozen-field --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-frozen-field --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-frozen-field --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-frozen-field --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-frozen-field --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py315-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.15 output for new projects.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --reuse-model --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset extends `standard-py310-20261104` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --reuse-model --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset extends `standard-py311-20261104` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --reuse-model --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset extends `standard-py312-20261104` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --reuse-model --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset extends `standard-py313-20261104` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --reuse-model --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset extends `standard-py314-20261104` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-enum-literal-aliases --keep-enum-member-values --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-merged-models --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --rename-submodules-hidden-by-classes --reuse-model --singularize-last-word-of-item-names --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --type-overrides-replace-whole-type --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-merged-models = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nrename-submodules-hidden-by-classes = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true"
    },
    "description": "This immutable preset extends `standard-py315-20261104` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py315-20261104",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py315-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.15 output for new projects.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py310-20261106` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py311-20261106` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py312-20261106` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py313-20261106` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py314-20261106` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --type-overrides-replace-whole-type --use-annotated --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py315-20261106` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py315-20261106",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py310-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.10 output for new projects.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py311-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.11 output for new projects.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py312-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.12 output for new projects.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py313-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.13 output for new projects.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py314-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.14 output for new projects.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-tuple-for-closed-arrays = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.",
    "name": "standard-py315-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Recommended modern Python 3.15 output for new projects.",
    "target_python_version": "3.15"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.10"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.10\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py310-20261111` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py310-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.10"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.11"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.11\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py311-20261111` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py311-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.11"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.12"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.12\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py312-20261111` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py312-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.12"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.13"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.13\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py313-20261111` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py313-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.13"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.14"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.14\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py314-20261111` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py314-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.14"
  },
  {
    "copyable_config": {
      "cli": "datamodel-codegen --allow-population-by-field-name --apply-field-options-to-every-field --capitalise-numbered-enum-members --check-pattern-maps-strictly --collapse-constrained-root-models-as-annotated --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-numbered-request-response-variants --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --distribute-allof-over-unions --enum-field-as-literal one --filter-literal-values --formatters builtin --ignore-ref-siblings-by-schema-version --input schema.json --input-file-type jsonschema --intersect-allof-keywords --intersect-combined-schema-keywords --keep-constrained-root-models-in-every-container --keep-content-parameter-refs --keep-defaults-of-inherited-required-fields --keep-enum-literal-aliases --keep-enum-member-values --keep-false-dataclass-arguments --keep-field-defaults-off-branch-roots --keep-first-character-of-path-keys --keep-reference-null-on-collapsed-root-models --keep-reference-null-on-merged-models --keep-self-referencing-array-items --keep-shared-members-on-collapsed-root-models --merge-message-trait-headers --merge-shared-variant-tags --name-allof-union-members-after-branches --name-converted-payloads-by-message --naming-strategy definitions-first --omit-incomplete-model-defaults --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-allof-parents-in-mro-order --read-const-beside-enum --read-dynamic-anchors-in-document-order --read-escaped-ref-pointers --read-input-model-dataclass-fields-by-alias --read-length-keywords-by-type --read-msgspec-union-bounds-exactly --read-nullable-beside-type-list --read-schema-version-per-document --read-unevaluated-properties --remove-unused-models-beside-type-overrides --rename-submodules-hidden-by-classes --reuse-every-reached-input-model-type --reuse-model --singularize-last-word-of-item-names --skip-path-extension-keys --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --type-overrides-replace-whole-type --use-annotated --use-bounds-for-float-const --use-bytes-for-content-media-type --use-decimal-in-field-forms --use-default-kwarg --use-duplicate-name-suffix-for-every-collision --use-encoded-str-for-constrained-base64 --use-enum-field-as-literal-in-operations --use-field-description --use-field-description-example --use-frozen-field --use-msgspec-forbid-unknown-fields --use-msgspec-meta-for-map-keys --use-object-type --use-one-model-per-ref-site --use-plain-alias-for-recursive-models --use-schema-description --use-serialize-as-any-for-every-subclass --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-strict-str-for-base64 --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-typed-nullable-map-values --use-union-operator --use-unique-items-as-set --use-unique-items-as-set-by-value --use-x-python-type-as-written",
      "context": {
        "input_file_type": "jsonschema",
        "output_model_type": "pydantic_v2.BaseModel",
        "target_python_version": "3.15"
      },
      "pyproject_toml": "[tool.datamodel-codegen]\nallow-population-by-field-name = true\napply-field-options-to-every-field = true\ncapitalise-numbered-enum-members = true\ncheck-pattern-maps-strictly = true\ncollapse-constrained-root-models-as-annotated = true\ncollapse-reuse-models = true\ncollapse-root-models = true\ncollapse-shared-parent-wrappers = true\ndedupe-numbered-request-response-variants = true\ndedupe-request-response-variants = true\ndeserialize-default-values = [\"decimal\", \"enum\"]\ndisable-timestamp = true\ndistribute-allof-over-unions = true\nenum-field-as-literal = \"one\"\nfilter-literal-values = true\nformatters = [\"builtin\"]\nignore-ref-siblings-by-schema-version = true\ninput = \"schema.json\"\ninput-file-type = \"jsonschema\"\nintersect-allof-keywords = true\nintersect-combined-schema-keywords = true\nkeep-constrained-root-models-in-every-container = true\nkeep-content-parameter-refs = true\nkeep-defaults-of-inherited-required-fields = true\nkeep-enum-literal-aliases = true\nkeep-enum-member-values = true\nkeep-false-dataclass-arguments = true\nkeep-field-defaults-off-branch-roots = true\nkeep-first-character-of-path-keys = true\nkeep-reference-null-on-collapsed-root-models = true\nkeep-reference-null-on-merged-models = true\nkeep-self-referencing-array-items = true\nkeep-shared-members-on-collapsed-root-models = true\nmerge-message-trait-headers = true\nmerge-shared-variant-tags = true\nname-allof-union-members-after-branches = true\nname-converted-payloads-by-message = true\nnaming-strategy = \"definitions-first\"\nomit-incomplete-model-defaults = true\nomit-redundant-constraints = true\nomit-redundant-reference-null = true\nopenapi-as-definitions = [\"paths-bodies\", \"ref-components\"]\norder-constructor-fields-by = [\"final-names\", \"written-defaults\"]\noutput = \"model.py\"\noutput-model-type = \"pydantic_v2.BaseModel\"\npin-aliases-with-alias-generator = true\nread-allof-parents-in-mro-order = true\nread-const-beside-enum = true\nread-dynamic-anchors-in-document-order = true\nread-escaped-ref-pointers = true\nread-input-model-dataclass-fields-by-alias = true\nread-length-keywords-by-type = true\nread-msgspec-union-bounds-exactly = true\nread-nullable-beside-type-list = true\nread-schema-version-per-document = true\nread-unevaluated-properties = true\nremove-unused-models-beside-type-overrides = true\nrename-submodules-hidden-by-classes = true\nreuse-every-reached-input-model-type = true\nreuse-model = true\nsingularize-last-word-of-item-names = true\nskip-path-extension-keys = true\nsnake-case-field = true\nstrict-nullable = true\ntag-msgspec-by-payload-name = true\ntarget-python-version = \"3.15\"\ntype-overrides-replace-whole-type = true\nuse-annotated = true\nuse-bounds-for-float-const = true\nuse-bytes-for-content-media-type = true\nuse-decimal-in-field-forms = true\nuse-default-kwarg = true\nuse-duplicate-name-suffix-for-every-collision = true\nuse-encoded-str-for-constrained-base64 = true\nuse-enum-field-as-literal-in-operations = true\nuse-field-description = true\nuse-field-description-example = true\nuse-frozen-field = true\nuse-msgspec-forbid-unknown-fields = true\nuse-msgspec-meta-for-map-keys = true\nuse-object-type = true\nuse-one-model-per-ref-site = true\nuse-plain-alias-for-recursive-models = true\nuse-schema-description = true\nuse-serialize-as-any-for-every-subclass = true\nuse-single-dict-for-object-maps = true\nuse-single-line-docstring = true\nuse-single-value-enum-as-const = true\nuse-site-models-for-constrained-refs = true\nuse-specialized-enum = true\nuse-standard-collections = true\nuse-strict-str-for-base64 = true\nuse-subclass-enum = true\nuse-title-as-name = true\nuse-tuple-for-closed-arrays = true\nuse-tuple-for-fixed-items = true\nuse-typed-map-values-beside-other-types = true\nuse-typed-nullable-map-values = true\nuse-union-operator = true\nuse-unique-items-as-set = true\nuse-unique-items-as-set-by-value = true\nuse-x-python-type-as-written = true"
    },
    "description": "This immutable preset extends `standard-py315-20261111` with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.",
    "name": "practical-py315-20261111",
    "option_groups": [
      {
        "description": "Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.",
        "options": [
          "--use-standard-collections",
          "--use-union-operator",
          "--use-annotated",
          "--enum-field-as-literal one",
          "--use-subclass-enum",
          "--collapse-root-models",
          "--strict-nullable",
          "--disable-timestamp"
        ],
        "title": "All output model types"
      },
      {
        "description": "Use StrEnum or IntEnum only when the selected target Python version supports it.",
        "options": [
          "--use-specialized-enum"
        ],
        "title": "Python 3.11+ targets"
      },
      {
        "description": "Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.",
        "options": [
          "--snake-case-field",
          "--allow-population-by-field-name",
          "--use-frozen-field"
        ],
        "title": "Pydantic v2 BaseModel and dataclass output"
      },
      {
        "description": "Generate Pythonic field names with aliases and stdlib primitive types for schema formats.",
        "options": [
          "--snake-case-field",
          "--use-standard-primitive-types"
        ],
        "title": "msgspec Struct output"
      },
      {
        "description": "Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--enum-field-as-literal all"
        ],
        "title": "stdlib dataclass output"
      },
      {
        "description": "Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides `--enum-field-as-literal one` from All output model types.",
        "options": [
          "--use-standard-primitive-types",
          "--use-frozen-field",
          "--enum-field-as-literal all"
        ],
        "title": "TypedDict output"
      },
      {
        "description": "Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.",
        "options": [
          "--deserialize-default-values decimal enum"
        ],
        "title": "Serialized defaults"
      },
      {
        "description": "Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.",
        "options": [
          "--formatters builtin"
        ],
        "title": "Built-in formatting"
      },
      {
        "description": "Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.",
        "options": [
          "--use-single-value-enum-as-const"
        ],
        "title": "Enums read as their const"
      },
      {
        "description": "Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.",
        "options": [
          "--openapi-as-definitions paths-bodies ref-components"
        ],
        "title": "OpenAPI schemas modeled as definitions"
      },
      {
        "description": "Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.",
        "options": [
          "--use-site-models-for-constrained-refs"
        ],
        "title": "Site models for constrained references"
      },
      {
        "description": "Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.",
        "options": [
          "--omit-redundant-constraints"
        ],
        "title": "Redundant constraints omitted"
      },
      {
        "description": "Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.",
        "options": [
          "--read-const-beside-enum"
        ],
        "title": "Const read beside an enum"
      },
      {
        "description": "Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.",
        "options": [
          "--filter-literal-values"
        ],
        "title": "Literal values filtered"
      },
      {
        "description": "Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.",
        "options": [
          "--intersect-allof-keywords"
        ],
        "title": "allOf keywords intersected"
      },
      {
        "description": "Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.",
        "options": [
          "--read-nullable-beside-type-list"
        ],
        "title": "Nullable beside a type list"
      },
      {
        "description": "Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.",
        "options": [
          "--keep-field-defaults-off-branch-roots"
        ],
        "title": "Field defaults kept off branch roots"
      },
      {
        "description": "Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.",
        "options": [
          "--use-tuple-for-closed-arrays"
        ],
        "title": "Tuples for closed arrays"
      },
      {
        "description": "Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.",
        "options": [
          "--use-single-dict-for-object-maps"
        ],
        "title": "One dict for object maps"
      },
      {
        "description": "Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.",
        "options": [
          "--check-pattern-maps-strictly"
        ],
        "title": "Stricter pattern-map checks"
      },
      {
        "description": "Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].",
        "options": [
          "--use-typed-map-values-beside-other-types"
        ],
        "title": "Typed map values beside other types"
      },
      {
        "description": "Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.",
        "options": [
          "--keep-enum-member-values"
        ],
        "title": "Enum member values kept"
      },
      {
        "description": "Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.",
        "options": [
          "--read-unevaluated-properties"
        ],
        "title": "Unevaluated properties read"
      },
      {
        "description": "Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.",
        "options": [
          "--pin-aliases-with-alias-generator"
        ],
        "title": "Aliases pinned beside an alias generator"
      },
      {
        "description": "Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.",
        "options": [
          "--tag-msgspec-by-payload-name"
        ],
        "title": "msgspec tags by payload name"
      },
      {
        "description": "Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.",
        "options": [
          "--order-constructor-fields-by final-names written-defaults"
        ],
        "title": "Constructor fields ordered by final names and written defaults"
      },
      {
        "description": "Decide Request and Response variants from the schema graph and build each inline model once.",
        "options": [
          "--dedupe-request-response-variants"
        ],
        "title": "Request and response variants deduplicated"
      },
      {
        "description": "Do not write None again where a field references a model that holds null itself.",
        "options": [
          "--omit-redundant-reference-null"
        ],
        "title": "Redundant reference null omitted"
      },
      {
        "description": "Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.",
        "options": [
          "--use-decimal-in-field-forms"
        ],
        "title": "Decimal in field forms"
      },
      {
        "description": "Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.",
        "options": [
          "--collapse-shared-parent-wrappers"
        ],
        "title": "Shared parent wrappers collapsed"
      },
      {
        "description": "Give a variant that discriminated unions tag differently, such as one by a mapping key and one by the schema name, every tag they give it, so each union decodes the documents it selects the variant by. msgspec Structs take one tag, so they are unchanged.",
        "options": [
          "--merge-shared-variant-tags"
        ],
        "title": "Shared variant tags merged"
      },
      {
        "description": "Write a format: byte string with a pattern or lengths in the field forms as an EncodedStr with the constraints in front of the decoding, so Pydantic 2.10 or later checks them on the base64 text.",
        "options": [
          "--use-encoded-str-for-constrained-base64"
        ],
        "title": "EncodedStr for constrained base64 strings"
      },
      {
        "description": "Read minLength, maxLength and pattern for strings only and minItems, maxItems and uniqueItems for arrays only, so a maxLength beside an array no longer limits how many items the list holds.",
        "options": [
          "--read-length-keywords-by-type"
        ],
        "title": "Length keywords read by type"
      },
      {
        "description": "Decide whether the int member of a msgspec union with a number member drops its bounds on the bounds the schema writes, so a bound past 2**53 no longer rejects an integer the number member accepts.",
        "options": [
          "--read-msgspec-union-bounds-exactly"
        ],
        "title": "msgspec union bounds read exactly"
      },
      {
        "description": "Give every definition its own name before an inline model that asks for it first, name the union members of an allOf after their branches, give the --duplicate-name-suffix suffix to every model renamed because its name is taken, capitalize the number of a capitalized enum member, strip only a leading slash from a paths key, name a converted AsyncAPI payload that names no type after its message, and singularize only the last word of an item model's name.",
        "options": [
          "--naming-strategy definitions-first",
          "--name-allof-union-members-after-branches",
          "--use-duplicate-name-suffix-for-every-collision",
          "--capitalize-numbered-enum-members",
          "--keep-first-character-of-path-keys",
          "--name-converted-payloads-by-message",
          "--singularize-last-word-of-item-names"
        ],
        "title": "Model names taken from the schema"
      },
      {
        "description": "Read each document by the schema version it declares, or the version of the document that references it, so the keywords beside a $ref and the version's features apply as that version says in every document of a run, and an OpenAPI 3.1 or later document reads them as JSON Schema 2020-12 does.",
        "options": [
          "--read-schema-version-per-document"
        ],
        "title": "Schema version read per document"
      },
      {
        "description": "Read a $ref as its target alone where the schema version ignores the keywords beside it (JSON Schema draft 4, 6 and 7, OpenAPI 3.0, AsyncAPI 2), so a sibling format: binary or uniqueItems no longer changes the type of a field.",
        "options": [
          "--ignore-ref-siblings-by-schema-version"
        ],
        "title": "Ignored $ref siblings left out"
      },
      {
        "description": "Combine the keywords beside an anyOf or oneOf with each branch, merge an inherited override's nested properties name by name and by its narrowed type, read the $ref siblings, $ref aliases and null branches of allOf members and the required names an allOf adds to the one model it names, and keep no enum value that the merged type rejects, as JSON Schema validates them.",
        "options": [
          "--intersect-combined-schema-keywords"
        ],
        "title": "Combined schema keywords intersected"
      },
      {
        "description": "Give an allOf one union variant per combination of the branches of the anyOf and oneOf it holds, also through a $ref member and for their value branches, read a $ref branch with the allOf members and the value keywords beside it, and an OpenAPI body with an allOf beside an anyOf or oneOf as that union, as JSON Schema validates them.",
        "options": [
          "--distribute-allof-over-unions"
        ],
        "title": "allOf distributed over unions"
      },
      {
        "description": "Keep the null that the schema of a reference admits when its model is merged into an equal model that rejects null, so a `type: [object, null]` property keeps `| None` after duplicate removal or reuse.",
        "options": [
          "--keep-reference-null-on-merged-models"
        ],
        "title": "Reference null kept on merged models"
      },
      {
        "description": "Write the keys of a msgspec map whose keys propertyNames or patternProperties constrain as Annotated[str, Meta(...)], so msgspec checks them.",
        "options": [
          "--use-msgspec-meta-for-map-keys"
        ],
        "title": "Meta for msgspec map keys"
      },
      {
        "description": "Rename a submodule named like a class of its package, such as pkg/Warn.py beside the class Warn of pkg/__init__.py, to the first free name with trailing underscores, so importing it leaves the class in place.",
        "options": [
          "--rename-submodules-hidden-by-classes"
        ],
        "title": "Submodules hidden by classes renamed"
      },
      {
        "description": "Under --use-unique-items-as-set, decide each set on the final item types and write one only where every value of its items hashes by value, and keep apart models whose arrays differ in uniqueItems.",
        "options": [
          "--use-unique-items-as-set-by-value"
        ],
        "title": "Unique items as sets by value"
      },
      {
        "description": "Under --collapse-root-models with --field-constraints, keep a constrained root model named inside any container of its holder, so a set, Sequence or Mapping keeps the constraints of its items.",
        "options": [
          "--keep-constrained-root-models-in-every-container"
        ],
        "title": "Constrained root models kept in every container"
      },
      {
        "description": "Under --collapse-root-models, keep a named enum that the output writes as a Literal type alias named at its uses.",
        "options": [
          "--keep-enum-literal-aliases"
        ],
        "title": "Enum literal aliases kept"
      },
      {
        "description": "In Pydantic output, write a type alias whose whole value is a model that names itself as a plain TypeAlias, which every model that uses it builds.",
        "options": [
          "--use-plain-alias-for-recursive-models"
        ],
        "title": "Plain aliases of recursive models"
      },
      {
        "description": "Make a class path of --type-overrides replace an object map itself (dict, not dict[str, dict]), and keep the item or property counts of the array or map an override replaces only where the new type counts the same.",
        "options": [
          "--type-overrides-replace-whole-type"
        ],
        "title": "Whole types replaced by type overrides"
      },
      {
        "description": "Under --use-serialize-as-any, wrap a field in SerializeAsAny when any subclass of its model in the output adds fields, at any depth, after reuse merges the model and through its module.",
        "options": [
          "--use-serialize-as-any-for-every-subclass"
        ],
        "title": "SerializeAsAny for every subclass"
      },
      {
        "description": "Resolve a plain-name $dynamicRef that its dynamic scope does not bind, and a reference to a plain name several schemas declare, to the first declaration in document order, so the answer no longer depends on the order the schemas are parsed in.",
        "options": [
          "--read-dynamic-anchors-in-document-order"
        ],
        "title": "Dynamic anchors read in document order"
      },
      {
        "description": "Give an object $ref with sibling keywords one model per place it is written, which every unchanged copy of that place shares, so a chain of N definitions gives N-1 site models instead of N(N-1)/2, parsed without nesting.",
        "options": [
          "--use-one-model-per-ref-site"
        ],
        "title": "One model per reference site"
      },
      {
        "description": "Read the ~0 and ~1 escapes and the percent-encoded octets of a $ref JSON pointer as the characters they encode, so every spelling of a pointer names the one model of its target instead of a copy named after the escaped text.",
        "options": [
          "--read-escaped-ref-pointers"
        ],
        "title": "Escaped reference pointers read"
      },
      {
        "description": "With --input-model, read the fields of a Pydantic dataclass by their aliases, as those of a model, so a field with an alias keeps its Python type, such as deque[int], like one without.",
        "options": [
          "--read-input-model-dataclass-fields-by-alias"
        ],
        "title": "Pydantic dataclass fields read by alias"
      },
      {
        "description": "Write every dataclass decorator argument set to false, such as eq=False from --dataclass-arguments, instead of leaving it out, which gives it its default.",
        "options": [
          "--keep-false-dataclass-arguments"
        ],
        "title": "Dataclass arguments set to false written"
      },
      {
        "description": "Type an OpenAPI parameter whose content media schema is a $ref by the model the $ref names, as a schema parameter is, instead of a copy of the referenced schema.",
        "options": [
          "--keep-content-parameter-refs"
        ],
        "title": "Content parameters typed by their reference"
      },
      {
        "description": "In the paths scope, skip a key of paths that begins with x-, a specification extension and no path item, as the api scope does, so its operations get no models.",
        "options": [
          "--skip-path-extension-keys"
        ],
        "title": "Extension keys of paths skipped"
      },
      {
        "description": "With --input-model-ref-strategy reuse-all or reuse-foreign, reach the types to reuse through the fields of every model kind, dataclasses too, and import a type the Python type of a field already imports instead of writing an unused copy of it.",
        "options": [
          "--reuse-every-reached-input-model-type"
        ],
        "title": "Every reached input model type reused"
      },
      {
        "description": "Write a field's x-python-type as given: a union spelled Optional[...] or Union[...] types the field as one spelled X | Y already does, instead of the schema's type, and a container class compatible with the schema, such as tuple or MutableSequence, is written around the schema's item types instead of list, Sequence, set, frozenset or Mapping.",
        "options": [
          "--use-x-python-type-as-written"
        ],
        "title": "x-python-type as written"
      },
      {
        "description": "Type the values of a map whose type array lists object alone or with null, such as [object, null], as its additionalProperties say instead of Any, and with --use-typed-map-values-beside-other-types of the 20261027 presets also those of a type array that lists object beside other types.",
        "options": [
          "--use-typed-nullable-map-values"
        ],
        "title": "Typed nullable map values"
      },
      {
        "description": "Write forbid_unknown_fields=True on a msgspec Struct whose schema admits no property but its own (additionalProperties: false without patternProperties), so msgspec rejects the unknown fields the schema rejects.",
        "options": [
          "--use-msgspec-forbid-unknown-fields"
        ],
        "title": "Unknown fields forbidden by closed msgspec Structs"
      },
      {
        "description": "Under --collapse-root-models, keep the null of a root model that admits null where a field, item or map value that names it takes its type.",
        "options": [
          "--keep-reference-null-on-collapsed-root-models"
        ],
        "title": "Reference null kept on collapsed root models"
      },
      {
        "description": "Read the allOf parents of every inherited schema in the order of the class bases, so a property that several bases declare takes the nearer base's constraints and description, as the class does.",
        "options": [
          "--read-allof-parents-in-mro-order"
        ],
        "title": "allOf parents read in MRO order"
      },
      {
        "description": "Give a GraphQL field, a property whose schema is true or false, a required name without a property and the tag field a discriminator appends the field options the other fields take, such as --use-default-kwarg, --use-annotated and --use-default-factory-for-optional-nested-models.",
        "options": [
          "--apply-field-options-to-every-field"
        ],
        "title": "Field options on every field"
      },
      {
        "description": "Under --strict-types str, write a format: byte string as the StrictStr that EncodedStr decodes, so Pydantic 2.10 or later refuses bytes for it as for any other strict string, instead of Base64Str.",
        "options": [
          "--use-strict-str-for-base64"
        ],
        "title": "Strict base64 strings"
      },
      {
        "description": "Type a string of an OpenAPI document that has a contentMediaType and no contentEncoding, raw binary content, as bytes, as a format: binary string is, instead of str.",
        "options": [
          "--use-bytes-for-content-media-type"
        ],
        "title": "Content media type strings as bytes"
      },
      {
        "description": "Under --collapse-root-models with --use-annotated, inline a root model of a string with constraints into a union, list, dict or other container of its holder as Annotated[str, ...], which keeps the constraints on that member.",
        "options": [
          "--collapse-constrained-root-models-as-annotated"
        ],
        "title": "Constrained string root models collapsed as Annotated"
      },
      {
        "description": "Remove the models nothing uses, such as an inlined root model, also from a module that a model-level --type-overrides key takes a model out of.",
        "options": [
          "--remove-unused-models-beside-type-overrides"
        ],
        "title": "Unused models removed beside type overrides"
      },
      {
        "description": "Keep the items of an array whose items name the array itself (list[Node | Leaf] instead of list), except in msgspec output, which cannot decode such a type alias.",
        "options": [
          "--keep-self-referencing-array-items"
        ],
        "title": "Items of self-referencing arrays kept"
      },
      {
        "description": "Under --collapse-root-models, keep each member of a root type that collapse inlined at several sites at every site when a root model that member names is collapsed later, as a recursive union reaches its plain member.",
        "options": [
          "--keep-shared-members-on-collapsed-root-models"
        ],
        "title": "Shared members kept on collapsed root models"
      },
      {
        "description": "Write the enum of an OpenAPI request body or response as a root model of a Literal where x-enum-field-as-literal, --enum-field-as-literal-map or --enum-field-as-literal writes a definition's enum so, instead of an Enum class.",
        "options": [
          "--use-enum-field-as-literal-in-operations"
        ],
        "title": "Operation enums written as Literal like definitions"
      },
      {
        "description": "Under --read-only-write-only-model-type, merge a Request or Response variant of a numbered model, such as Page1Request of an inline copy Page1 of Page, into PageRequest where it renders the same, as the numbered model merges into Page.",
        "options": [
          "--dedupe-numbered-request-response-variants"
        ],
        "title": "Request and response variants of numbered models deduplicated"
      },
      {
        "description": "With --use-default, keep the default a schema gives a property that only a schema it inherits from lists as required, as --use-default keeps that of a property the schema lists as required itself.",
        "options": [
          "--keep-defaults-of-inherited-required-fields"
        ],
        "title": "Defaults of inherited required fields kept"
      },
      {
        "description": "Write a property whose object default lacks required fields of its model, such as default: {}, without that default, so input that leaves the property out is valid instead of failing on the default.",
        "options": [
          "--omit-incomplete-model-defaults"
        ],
        "title": "Incomplete model defaults omitted"
      },
      {
        "description": "Give an AsyncAPI message the headers of all its traits, merged in order as JSON Merge Patches, inline and referenced traits alike, and then its own headers, which win.",
        "options": [
          "--merge-message-trait-headers"
        ],
        "title": "AsyncAPI message trait headers merged"
      },
      {
        "description": "Type a finite float const, which no Literal holds, as a float whose minimum and maximum both equal it, written as the output writes number bounds, so Pydantic and msgspec reject other numbers instead of accepting any float.",
        "options": [
          "--use-bounds-for-float-const"
        ],
        "title": "Float consts fixed by bounds"
      },
      {
        "description": "Deduplicate identical models without empty inheritance wrappers and prefer schema titles for class names; the standard groups keep definitions ahead of inline duplicate names.",
        "options": [
          "--reuse-model",
          "--collapse-reuse-models",
          "--use-title-as-name"
        ],
        "title": "Practical model structure and names"
      },
      {
        "description": "Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.",
        "options": [
          "--use-default-kwarg",
          "--use-object-type",
          "--use-tuple-for-fixed-items",
          "--use-unique-items-as-set",
          "--use-single-line-docstring"
        ],
        "title": "Practical typing and defaults"
      },
      {
        "description": "Preserve schema and field descriptions, including examples, in generated model documentation.",
        "options": [
          "--use-schema-description",
          "--use-field-description",
          "--use-field-description-example"
        ],
        "title": "Schema documentation"
      }
    ],
    "requires_target_python_version": false,
    "summary": "Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.",
    "target_python_version": "3.15"
  }
]
