---
name: "datamodel-codegen"
section: "1"
platform: "linux"
package: "datamodel-codegen"
version: "0.26.4-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/datamodel-codegen"
---

# datamodel-codegen(1)

pydantic code generator from OpenAPI and more

## NAME

datamodel-codegen - pydantic code generator from OpenAPI and more

## DESCRIPTION

### usage:

-

  datamodel-codegen \[options\]

Generate Python data models from schema definitions or structured data

## OPTIONS

- **--additional-imports** ADDITIONAL\_IMPORTS

  Custom imports for output (delimited list input). For example "datetime.date,datetime.datetime"

- **--custom-formatters** CUSTOM\_FORMATTERS

  List of modules with custom formatter (delimited list input).

- **--http-headers** HTTP\_HEADER \[HTTP\_HEADER ...\]

  Set headers in HTTP requests to the remote host. (example: "Authorization: Basic dXNlcjpwYXNz")

- **--http-ignore-tls**

  Disable verification of the remote host's TLS certificate

- **--http-query-parameters** HTTP\_QUERY\_PARAMETERS \[HTTP\_QUERY\_PARAMETERS ...\]

  Set query parameters in HTTP requests to the remote host. (example: "ref=branch")

- **--input** INPUT

  Input file/directory (default: stdin)

- **--input-file-type** {auto,openapi,jsonschema,json,yaml,dict,csv,graphql}

  Input file type (default: auto)

- **--output** OUTPUT

  Output file (default: stdout)

- **--output-model-type** {pydantic.BaseModel,pydantic\_v2.BaseModel,dataclasses.dataclass,typing.TypedDict,msgspec.Struct}

  Output model type (default: pydantic.BaseModel)

- **--url** URL

  Input file URL. \`--input\` is ignored when \`--url\` is used

### Typing customization:

- **--base-class** BASE\_CLASS

  Base Class (default: pydantic.BaseModel)

- **--enum-field-as-literal** {all,one}

  Parse enum field as literal. all: all enum field type are Literal. one: field type is Literal when an enum has only one possible value

- **--field-constraints**

  Use field constraints and not con\* annotations

- **--set-default-enum-member**

  Set enum members as default values for enum field

- **--strict-types** {str,bytes,int,float,bool} \[{str,bytes,int,float,bool} ...\]

  Use strict types

- **--use-annotated**

  Use typing.Annotated for Field(). Also, \`--fieldconstraints\` option will be enabled.

- **--use-generic-container-types**

  Use generic container types for type hinting (typing.Sequence, typing.Mapping). If \`--use-standardcollections\` option is set, then import from collections.abc instead of typing

- **--use-non-positive-negative-number-constrained-types**

  Use the Non{Positive,Negative}{FloatInt} types instead of the corresponding con\* constrained types.

- **--use-one-literal-as-default**

  Use one literal as default value for one literal field

- **--use-standard-collections**

  Use standard collections for type hinting (list, dict)

- **--use-subclass-enum**

  Define Enum class as subclass with field type when enum has type (int, float, bytes, str)

- **--use-union-operator**

  Use \| operator for Union type (PEP 604).

- **--use-unique-items-as-set**

  define field type as \`set\` when the field attribute has \`uniqueItems\`

### Field customization:

- **--capitalise-enum-members**, **--capitalize-enum-members**

  Capitalize field names on enum

- **--empty-enum-field-name** EMPTY\_ENUM\_FIELD\_NAME

  Set field name when enum value is empty (default: \`\_\`)

- **--field-extra-keys** FIELD\_EXTRA\_KEYS \[FIELD\_EXTRA\_KEYS ...\]

  Add extra keys to field parameters

- **--field-extra-keys-without-x-prefix** FIELD\_EXTRA\_KEYS\_WITHOUT\_X\_PREFIX \[FIELD\_EXTRA\_KEYS\_WITHOUT\_X\_PREFIX ...\]

  Add extra keys with \`x-\` prefix to field parameters. The extra keys are stripped of the \`x-\` prefix.

- **--field-include-all-keys**

  Add all keys to field parameters

- **--force-optional**

  Force optional for required fields

- **--no-alias**

  Do not add a field alias. E.g., if **--snake-case-field** is used along with a base class, which has an alias\_generator

- **--original-field-name-delimiter** ORIGINAL\_FIELD\_NAME\_DELIMITER

  Set delimiter to convert to snake case. This option only can be used with **--snake-case-field** (default: \`\_\` )

- **--remove-special-field-name-prefix**

  Remove field name prefix if it has a special meaning e.g. underscores

- **--snake-case-field**

  Change camel-case field name to snake-case

- **--special-field-name-prefix** SPECIAL\_FIELD\_NAME\_PREFIX

  Set field name prefix when first character can't be used as Python field name (default: \`field\`)

- **--strip-default-none**

  Strip default None on fields

- **--union-mode** {smart,left\_to\_right}

  Union mode for only pydantic v2 field

- **--use-default**

  Use default value even if a field is required

- **--use-default-kwarg**

  Use \`default=\` instead of a positional argument for Fields that have default values.

- **--use-field-description**

  Use schema description to populate field docstring

### Model customization:

- **--allow-extra-fields**

  Allow to pass extra fields, if this flag is not passed, extra fields are forbidden.

- **--allow-population-by-field-name**

  Allow population by field name

- **--class-name** CLASS\_NAME

  Set class name of root model

- **--collapse-root-models**

  Models generated with a root-type field will be merged into the models using that root-type model

- **--disable-appending-item-suffix**

  Disable appending \`Item\` suffix to model name in an array

- **--disable-timestamp**

  Disable timestamp on file headers

- **--enable-faux-immutability**

  Enable faux immutability

- **--enable-version-header**

  Enable package version on file headers

- **--keep-model-order**

  Keep generated models' order

- **--keyword-only**

  Defined models as keyword only (for example dataclass(kw\_only=True)).

- **--output-datetime-class** {datetime,AwareDatetime,NaiveDatetime}

  Choose Datetime class between AwareDatetime, NaiveDatetime or datetime. Each output model has its default mapping (for example pydantic: datetime, dataclass: str, ...)

- **--reuse-model**

  Reuse models on the field when a module has the model with the same content

- **--target-python-version** {3.6,3.7,3.8,3.9,3.10,3.11,3.12,3.13}

  target python version (default: 3.8)

- **--treat-dot-as-module**

  treat dotted module names as modules

- **--use-exact-imports**

  import exact types instead of modules, for example: "from .foo import Bar" instead of "from . import foo" with "foo.Bar"

- **--use-pendulum**

  use pendulum instead of datetime

- **--use-schema-description**

  Use schema description to populate class docstring

- **--use-title-as-name**

  use titles as class names of models

### Template customization:

- **--aliases** ALIASES

  Alias mapping file

- **--custom-file-header** CUSTOM\_FILE\_HEADER

  Custom file header

- **--custom-file-header-path** CUSTOM\_FILE\_HEADER\_PATH

  Custom file header file path

- **--custom-formatters-kwargs** CUSTOM\_FORMATTERS\_KWARGS

  A file with kwargs for custom formatters.

- **--custom-template-dir** CUSTOM\_TEMPLATE\_DIR

  Custom template directory

- **--encoding** ENCODING

  The encoding of input and output (default: utf-8)

- **--extra-template-data** EXTRA\_TEMPLATE\_DATA

  Extra template data

- **--use-double-quotes**

  Model generated with double quotes. Single quotes or your black config skip\_string\_normalization value will be used without this option.

- **--wrap-string-literal**

  Wrap string literal by using black \`experimentalstring-processing\` option (require black 20.8b0 or later)

### OpenAPI-only options:

- **--openapi-scopes** {schemas,paths,tags,parameters} \[{schemas,paths,tags,parameters} ...\]

  Scopes of OpenAPI model generation (default: schemas)

- **--strict-nullable**

  Treat default field as a non-nullable field (Only OpenAPI)

- **--use-operation-id-as-name**

  use operation id of OpenAPI as class names of models

- **--validation**

  Deprecated: Enable validation (Only OpenAPI). this option is deprecated. it will be removed in future releases

### General options:

- **--debug**

  show debug message (require "debug". \`$ pip install 'datamodel-code-generator\[debug\]'\`)

- **--disable-warnings**

  disable warnings

- **--no-color**

  disable colorized output

- **--version**

  show version

- **-h**, **--help**

  show this help message and exit
