Description
The OpenAPI specification defines the request body using camelCase property names and the lowercase enum value "available". The generated client produces a different representation.
Swagger Codegen Version
3.0.82
Language / Generator
OpenAPI/Swagger Spec
{
"openapi": "3.0.0",
"info": {
"title": "Serializer Test API",
"version": "0.0.0"
},
"tags": [
{
"name": "test",
"description": "Serializer test operations"
}
],
"paths": {
"/test": {
"post": {
"tags": [
"test"
],
"operationId": "post_test_xcuctqa",
"summary": "Test model serialization",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TestModel"
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
}
},
"components": {
"schemas": {
"TestModel": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"firstName": {
"type": "string"
},
"optionalValue": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"available",
"pending"
]
},
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Tag"
}
}
},
"additionalProperties": false
},
"Tag": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
Command Line Used
I am using a script that uses the basic command
docker run --rm \
--user "$(id -u):$(id -g)" \
-v "$(pwd)":/local \
-v "$PARENT_DIR":/output \
swaggerapi/swagger-codegen-cli-v3:3.0.82 \
generate \
-i /local/spec/openapi.json \
-l "$LANG" \
-o "/output/$OUT_NAME"
and in this case uses 'csharp' for $LANG
Steps to Reproduce
- Generate a client using the provided specification
- Send a request using
var body = new TestModel
{
Id = 1,
FirstName = "test",
Status = TestModel.StatusEnum.Available
};
await api.PostTestXcuctqaAsync(body);
- Observe the outgoing request body
Expected Behavior
The serialized request body should use the property names and enum values defined by the OpenAPI specification:
{
"id": 1,
"firstName": "test",
"status": "available"
}
Actual Behavior
The generated client serializes the model as:
{
"Status": "Available",
"Id": 1,
"FirstName": "test",
"OptionalValue": null,
"Tags": null
}
Related Issues / Repos
Environment
Additional Context
Checklist
Description
The OpenAPI specification defines the request body using camelCase property names and the lowercase enum value "available". The generated client produces a different representation.
Swagger Codegen Version
3.0.82
Language / Generator
OpenAPI/Swagger Spec
{ "openapi": "3.0.0", "info": { "title": "Serializer Test API", "version": "0.0.0" }, "tags": [ { "name": "test", "description": "Serializer test operations" } ], "paths": { "/test": { "post": { "tags": [ "test" ], "operationId": "post_test_xcuctqa", "summary": "Test model serialization", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestModel" } } } }, "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "TestModel": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "firstName": { "type": "string" }, "optionalValue": { "type": "string" }, "status": { "type": "string", "enum": [ "available", "pending" ] }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/Tag" } } }, "additionalProperties": false }, "Tag": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } }, "additionalProperties": false } } } }Command Line Used
I am using a script that uses the basic command
docker run --rm \ --user "$(id -u):$(id -g)" \ -v "$(pwd)":/local \ -v "$PARENT_DIR":/output \ swaggerapi/swagger-codegen-cli-v3:3.0.82 \ generate \ -i /local/spec/openapi.json \ -l "$LANG" \ -o "/output/$OUT_NAME"and in this case uses 'csharp' for $LANG
Steps to Reproduce
Expected Behavior
The serialized request body should use the property names and enum values defined by the OpenAPI specification:
{
"id": 1,
"firstName": "test",
"status": "available"
}
Actual Behavior
The generated client serializes the model as:
{
"Status": "Available",
"Id": 1,
"FirstName": "test",
"OptionalValue": null,
"Tags": null
}
Related Issues / Repos
Environment
Additional Context
Checklist