|
8 | 8 | | [`--openapi-scopes`](#openapi-scopes) | Specify OpenAPI scopes to generate (schemas, paths, paramete... | |
9 | 9 | | [`--read-only-write-only-model-type`](#read-only-write-only-model-type) | Generate separate request and response models for readOnly/w... | |
10 | 10 | | [`--use-operation-id-as-name`](#use-operation-id-as-name) | Use OpenAPI operationId as the generated function/class name... | |
| 11 | +| [`--use-status-code-in-response-name`](#use-status-code-in-response-name) | Include HTTP status code in response model names. | |
11 | 12 | | [`--validation`](#validation) | Enable validation constraints (deprecated, use --field-const... | |
12 | 13 |
|
13 | 14 | --- |
@@ -926,6 +927,98 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. |
926 | 927 |
|
927 | 928 | --- |
928 | 929 |
|
| 930 | +## `--use-status-code-in-response-name` {#use-status-code-in-response-name} |
| 931 | + |
| 932 | +Include HTTP status code in response model names. |
| 933 | + |
| 934 | +The `--use-status-code-in-response-name` flag includes the HTTP status code |
| 935 | +in generated response model class names. Instead of generating ambiguous names |
| 936 | +like ResourceGetResponse, ResourceGetResponse1, ResourceGetResponse2, it generates |
| 937 | +clear names like ResourceGetResponse200, ResourceGetResponse400, ResourceGetResponseDefault. |
| 938 | + |
| 939 | +!!! tip "Usage" |
| 940 | + |
| 941 | + ```bash |
| 942 | + datamodel-codegen --input schema.json --use-status-code-in-response-name --openapi-scopes schemas paths # (1)! |
| 943 | + ``` |
| 944 | + |
| 945 | + 1. :material-arrow-left: `--use-status-code-in-response-name` - the option documented here |
| 946 | + |
| 947 | +??? example "Input Schema" |
| 948 | + |
| 949 | + ```yaml |
| 950 | + openapi: "3.0.0" |
| 951 | + info: |
| 952 | + version: 1.0.0 |
| 953 | + title: Status Code Response Name Test API |
| 954 | + paths: |
| 955 | + /resource: |
| 956 | + get: |
| 957 | + summary: Get a resource |
| 958 | + responses: |
| 959 | + '200': |
| 960 | + description: Successful response |
| 961 | + content: |
| 962 | + application/json: |
| 963 | + schema: |
| 964 | + type: object |
| 965 | + properties: |
| 966 | + id: |
| 967 | + type: integer |
| 968 | + name: |
| 969 | + type: string |
| 970 | + '400': |
| 971 | + description: Bad request error |
| 972 | + content: |
| 973 | + application/json: |
| 974 | + schema: |
| 975 | + type: object |
| 976 | + properties: |
| 977 | + error: |
| 978 | + type: string |
| 979 | + code: |
| 980 | + type: integer |
| 981 | + 'default': |
| 982 | + description: Unexpected error |
| 983 | + content: |
| 984 | + application/json: |
| 985 | + schema: |
| 986 | + type: object |
| 987 | + properties: |
| 988 | + message: |
| 989 | + type: string |
| 990 | + ``` |
| 991 | + |
| 992 | +??? example "Output" |
| 993 | + |
| 994 | + ```python |
| 995 | + # generated by datamodel-codegen: |
| 996 | + # filename: use_status_code_in_response_name.yaml |
| 997 | + # timestamp: 2019-07-26T00:00:00+00:00 |
| 998 | + |
| 999 | + from __future__ import annotations |
| 1000 | + |
| 1001 | + from typing import Optional |
| 1002 | + |
| 1003 | + from pydantic import BaseModel |
| 1004 | + |
| 1005 | + |
| 1006 | + class ResourceGetResponse200(BaseModel): |
| 1007 | + id: Optional[int] = None |
| 1008 | + name: Optional[str] = None |
| 1009 | + |
| 1010 | + |
| 1011 | + class ResourceGetResponse400(BaseModel): |
| 1012 | + error: Optional[str] = None |
| 1013 | + code: Optional[int] = None |
| 1014 | + |
| 1015 | + |
| 1016 | + class ResourceGetResponseDefault(BaseModel): |
| 1017 | + message: Optional[str] = None |
| 1018 | + ``` |
| 1019 | + |
| 1020 | +--- |
| 1021 | + |
929 | 1022 | ## `--validation` {#validation} |
930 | 1023 |
|
931 | 1024 | Enable validation constraints (deprecated, use --field-constraints). |
|
0 commit comments