diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index 3f4d8cd3429..5d604086d81 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -2456,26 +2456,29 @@ public class DefaultCodegen implements CodegenConfig {
}
private static class NamedSchema {
- private NamedSchema(String name, Schema s) {
+ private NamedSchema(String name, Schema s, boolean required) {
this.name = name;
this.schema = s;
+ this.required = required;
}
private String name;
private Schema schema;
+ private boolean required;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
NamedSchema that = (NamedSchema) o;
- return Objects.equals(name, that.name) &&
+ return Objects.equals(required, that.required) &&
+ Objects.equals(name, that.name) &&
Objects.equals(schema, that.schema);
}
@Override
public int hashCode() {
- return Objects.hash(name, schema);
+ return Objects.hash(name, schema, required);
}
}
@@ -2548,7 +2551,7 @@ public class DefaultCodegen implements CodegenConfig {
if (StringUtils.isBlank(interfaceSchema.get$ref())) {
// primitive type
String languageType = getTypeDeclaration(interfaceSchema);
- CodegenProperty interfaceProperty = fromProperty(languageType, interfaceSchema);
+ CodegenProperty interfaceProperty = fromProperty(languageType, interfaceSchema, false);
if (ModelUtils.isArraySchema(interfaceSchema) || ModelUtils.isMapSchema(interfaceSchema)) {
while (interfaceProperty != null) {
addImport(m, interfaceProperty.complexType);
@@ -2584,7 +2587,7 @@ public class DefaultCodegen implements CodegenConfig {
refSchema = allDefinitions.get(ref);
}
final String modelName = toModelName(ref);
- CodegenProperty interfaceProperty = fromProperty(modelName, interfaceSchema);
+ CodegenProperty interfaceProperty = fromProperty(modelName, interfaceSchema, false);
m.interfaces.add(modelName);
addImport(composed, refSchema, m, modelName);
@@ -2835,7 +2838,7 @@ public class DefaultCodegen implements CodegenConfig {
m.setTypeProperties(schema);
m.setComposedSchemas(getComposedSchemas(schema));
if (ModelUtils.isArraySchema(schema)) {
- CodegenProperty arrayProperty = fromProperty(name, schema);
+ CodegenProperty arrayProperty = fromProperty(name, schema, false);
m.setItems(arrayProperty.items);
m.arrayModelType = arrayProperty.complexType;
addParentContainer(m, name, schema);
@@ -2955,17 +2958,17 @@ public class DefaultCodegen implements CodegenConfig {
if (schema.getAdditionalProperties() == null) {
if (!disallowAdditionalPropertiesIfNotPresent) {
isAdditionalPropertiesTrue = true;
- addPropProp = fromProperty("", new Schema());
+ addPropProp = fromProperty("", new Schema(), false);
additionalPropertiesIsAnyType = true;
}
} else if (schema.getAdditionalProperties() instanceof Boolean) {
if (Boolean.TRUE.equals(schema.getAdditionalProperties())) {
isAdditionalPropertiesTrue = true;
- addPropProp = fromProperty("", new Schema());
+ addPropProp = fromProperty("", new Schema(), false);
additionalPropertiesIsAnyType = true;
}
} else {
- addPropProp = fromProperty("", (Schema) schema.getAdditionalProperties());
+ addPropProp = fromProperty("", (Schema) schema.getAdditionalProperties(), false);
if (ModelUtils.isAnyType((Schema) schema.getAdditionalProperties())) {
additionalPropertiesIsAnyType = true;
}
@@ -3451,7 +3454,7 @@ public class DefaultCodegen implements CodegenConfig {
innerSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to undefined type");
p.setAdditionalProperties(innerSchema);
}
- CodegenProperty cp = fromProperty("inner", innerSchema);
+ CodegenProperty cp = fromProperty("inner", innerSchema, false);
updatePropertyForMap(property, cp);
}
@@ -3522,6 +3525,19 @@ public class DefaultCodegen implements CodegenConfig {
property.pattern = toRegularExpression(p.getPattern());
}
+ /**
+ * TODO remove this in 7.0.0 as a breaking change
+ * This method was kept when required was added to the fromProperty signature
+ * to ensure that the change was non-breaking
+ *
+ * @param name name of the property
+ * @param p OAS property schema
+ * @return Codegen Property object
+ */
+ public CodegenProperty fromProperty(String name, Schema p) {
+ return fromProperty(name, p, false);
+ }
+
/**
* Convert OAS Property object to Codegen Property object.
*
@@ -3531,26 +3547,28 @@ public class DefaultCodegen implements CodegenConfig {
* Any subsequent processing of the CodegenModel return value must be idempotent
* for a given (String name, Schema schema).
*
- * @param name name of the property
- * @param p OAS property schema
+ * @param name name of the property
+ * @param p OAS property schema
+ * @param required true if the property is required in the next higher object schema, false otherwise
* @return Codegen Property object
*/
- public CodegenProperty fromProperty(String name, Schema p) {
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
if (p == null) {
LOGGER.error("Undefined property/schema for `{}`. Default to type:string.", name);
return null;
}
LOGGER.debug("debugging fromProperty for {} : {}", name, p);
- NamedSchema ns = new NamedSchema(name, p);
+ NamedSchema ns = new NamedSchema(name, p, required);
CodegenProperty cpc = schemaCodegenPropertyCache.get(ns);
if (cpc != null) {
- LOGGER.debug("Cached fromProperty for {} : {}", name, p.getName());
+ LOGGER.debug("Cached fromProperty for {} : {} required={}", name, p.getName(), required);
return cpc;
}
// unalias schema
p = unaliasSchema(p, schemaMapping);
CodegenProperty property = CodegenModelFactory.newInstance(CodegenModelType.PROPERTY);
+ property.required = required;
ModelUtils.syncValidationProperties(p, property);
property.name = toVarName(name);
@@ -3717,7 +3735,7 @@ public class DefaultCodegen implements CodegenConfig {
}
ArraySchema arraySchema = (ArraySchema) p;
Schema innerSchema = unaliasSchema(getSchemaItems(arraySchema), schemaMapping);
- CodegenProperty cp = fromProperty(itemName, innerSchema);
+ CodegenProperty cp = fromProperty(itemName, innerSchema, false);
updatePropertyForArray(property, cp);
} else if (ModelUtils.isTypeObjectSchema(p)) {
updatePropertyForObject(property, p);
@@ -3965,14 +3983,14 @@ public class DefaultCodegen implements CodegenConfig {
Schema responseSchema = unaliasSchema(ModelUtils.getSchemaFromResponse(methodResponse), schemaMapping);
if (responseSchema != null) {
- CodegenProperty cm = fromProperty("response", responseSchema);
+ CodegenProperty cm = fromProperty("response", responseSchema, false);
if (ModelUtils.isArraySchema(responseSchema)) {
ArraySchema as = (ArraySchema) responseSchema;
- CodegenProperty innerProperty = fromProperty("response", getSchemaItems(as));
+ CodegenProperty innerProperty = fromProperty("response", getSchemaItems(as), false);
op.returnBaseType = innerProperty.baseType;
} else if (ModelUtils.isMapSchema(responseSchema)) {
- CodegenProperty innerProperty = fromProperty("response", getAdditionalProperties(responseSchema));
+ CodegenProperty innerProperty = fromProperty("response", getAdditionalProperties(responseSchema), false);
op.returnBaseType = innerProperty.baseType;
} else {
if (cm.complexType != null) {
@@ -4430,7 +4448,7 @@ public class DefaultCodegen implements CodegenConfig {
r.setPattern(toRegularExpression(responseSchema.getPattern()));
}
- CodegenProperty cp = fromProperty("response", responseSchema);
+ CodegenProperty cp = fromProperty("response", responseSchema, false);
r.dataType = getTypeDeclaration(responseSchema);
if (!ModelUtils.isArraySchema(responseSchema)) {
@@ -4453,7 +4471,7 @@ public class DefaultCodegen implements CodegenConfig {
r.isArray = true;
r.containerType = cp.containerType;
ArraySchema as = (ArraySchema) responseSchema;
- CodegenProperty items = fromProperty("response", getSchemaItems(as));
+ CodegenProperty items = fromProperty("response", getSchemaItems(as), false);
r.setItems(items);
CodegenProperty innerCp = items;
@@ -4612,7 +4630,7 @@ public class DefaultCodegen implements CodegenConfig {
private void updateParameterForMap(CodegenParameter codegenParameter, Schema parameterSchema, Set imports) {
- CodegenProperty codegenProperty = fromProperty("inner", getAdditionalProperties(parameterSchema));
+ CodegenProperty codegenProperty = fromProperty("inner", getAdditionalProperties(parameterSchema), false);
codegenParameter.items = codegenProperty;
codegenParameter.mostInnerItems = codegenProperty.mostInnerItems;
codegenParameter.baseType = codegenProperty.dataType;
@@ -4700,11 +4718,11 @@ public class DefaultCodegen implements CodegenConfig {
if (this instanceof RustServerCodegen) {
// for rust server, we need to do somethings special as it uses
// $ref (e.g. #components/schemas/Pet) to determine whether it's a model
- prop = fromProperty(parameter.getName(), parameterSchema);
+ prop = fromProperty(parameter.getName(), parameterSchema, false);
} else if (getUseInlineModelResolver()) {
- prop = fromProperty(parameter.getName(), getReferencedSchemaWhenNotEnum(parameterSchema));
+ prop = fromProperty(parameter.getName(), getReferencedSchemaWhenNotEnum(parameterSchema), false);
} else {
- prop = fromProperty(parameter.getName(), parameterSchema);
+ prop = fromProperty(parameter.getName(), parameterSchema, false);
}
codegenParameter.setSchema(prop);
} else if (parameter.getContent() != null) {
@@ -4827,7 +4845,7 @@ public class DefaultCodegen implements CodegenConfig {
collectionFormat = getCollectionFormat(parameter);
// default to csv:
collectionFormat = StringUtils.isEmpty(collectionFormat) ? "csv" : collectionFormat;
- CodegenProperty itemsProperty = fromProperty("inner", inner);
+ CodegenProperty itemsProperty = fromProperty("inner", inner, false);
codegenParameter.items = itemsProperty;
codegenParameter.mostInnerItems = itemsProperty.mostInnerItems;
codegenParameter.baseType = itemsProperty.dataType;
@@ -4843,15 +4861,10 @@ public class DefaultCodegen implements CodegenConfig {
;
}
- CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema);
+ CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema, false);
if (Boolean.TRUE.equals(codegenProperty.isModel)) {
codegenParameter.isModel = true;
}
- // TODO revise below which seems not working
- //if (parameterSchema.getRequired() != null && !parameterSchema.getRequired().isEmpty() && parameterSchema.getRequired().contains(codegenProperty.baseName)) {
- codegenProperty.required = Boolean.TRUE.equals(parameter.getRequired()) ? true : false;
- //}
- //codegenProperty.required = true;
if (parameterModelName != null) {
codegenParameter.dataType = parameterModelName;
@@ -4865,7 +4878,9 @@ public class DefaultCodegen implements CodegenConfig {
imports.add(codegenProperty.baseType);
}
codegenParameter.dataFormat = codegenProperty.dataFormat;
- codegenParameter.required = codegenProperty.required;
+ if (parameter.getRequired() != null) {
+ codegenParameter.required = parameter.getRequired().booleanValue();
+ }
if (codegenProperty.isEnum) {
codegenParameter.datatypeWithEnum = codegenProperty.datatypeWithEnum;
@@ -4902,15 +4917,19 @@ public class DefaultCodegen implements CodegenConfig {
if (schema.get$ref() != null) {
schema = ModelUtils.getReferencedSchema(openAPI, schema);
}
- codegenParameter.items = fromProperty(codegenParameter.paramName, schema);
+ codegenParameter.items = fromProperty(codegenParameter.paramName, schema, false);
// https://swagger.io/docs/specification/serialization/
if (schema != null) {
Map> properties = schema.getProperties();
+ List requiredVarNames = new ArrayList<>();
+ if (schema.getRequired() != null) {
+ requiredVarNames.addAll(schema.getRequired());
+ }
if (properties != null) {
codegenParameter.items.vars =
properties.entrySet().stream()
.map(entry -> {
- CodegenProperty property = fromProperty(entry.getKey(), entry.getValue());
+ CodegenProperty property = fromProperty(entry.getKey(), entry.getValue(), requiredVarNames.contains(entry.getKey()));
property.baseName = codegenParameter.baseName + "[" + entry.getKey() + "]";
return property;
}).collect(Collectors.toList());
@@ -5189,7 +5208,7 @@ public class DefaultCodegen implements CodegenConfig {
} else {
schema = header.getSchema();
}
- CodegenProperty cp = fromProperty(headerEntry.getKey(), schema);
+ CodegenProperty cp = fromProperty(headerEntry.getKey(), schema, false);
cp.setDescription(escapeText(description));
cp.setUnescapedDescription(description);
if (header.getRequired() != null) {
@@ -5257,7 +5276,7 @@ public class DefaultCodegen implements CodegenConfig {
* @param schema the input OAS schema.
*/
protected void addParentContainer(CodegenModel model, String name, Schema schema) {
- final CodegenProperty property = fromProperty(name, schema);
+ final CodegenProperty property = fromProperty(name, schema, false);
addImport(model, property.complexType);
model.parent = toInstantiationType(schema);
final String containerType = property.containerType;
@@ -5423,13 +5442,16 @@ public class DefaultCodegen implements CodegenConfig {
if (prop == null) {
LOGGER.warn("Please report the issue. There shouldn't be null property for {}", key);
} else {
- final CodegenProperty cp = fromProperty(key, prop);
- cp.required = mandatory.contains(key);
+ final CodegenProperty cp = fromProperty(key, prop, mandatory.contains(key));
vars.add(cp);
+ m.setHasVars(true);
+ if (cp.required) {
+ m.setHasRequired(true);
+ m.getRequiredVars().add(cp);
+ }
if (cm == null) {
continue;
}
- cm.hasRequired = cm.hasRequired || cp.required;
cm.hasOptional = cm.hasOptional || !cp.required;
if (cp.isEnum) {
// FIXME: if supporting inheritance, when called a second time for allProperties it is possible for
@@ -5445,9 +5467,7 @@ public class DefaultCodegen implements CodegenConfig {
addImportsForPropertyType(cm, cp);
// if required, add to the list "requiredVars"
- if (Boolean.TRUE.equals(cp.required)) {
- cm.requiredVars.add(cp);
- } else { // else add to the list "optionalVars" for optional property
+ if (Boolean.FALSE.equals(cp.required)) {
cm.optionalVars.add(cp);
}
@@ -6467,7 +6487,7 @@ public class DefaultCodegen implements CodegenConfig {
CodegenParameter codegenParameter = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
LOGGER.debug("Debugging fromFormProperty {}: {}", name, propertySchema);
- CodegenProperty codegenProperty = fromProperty(name, propertySchema);
+ CodegenProperty codegenProperty = fromProperty(name, propertySchema, false);
Schema ps = unaliasSchema(propertySchema, schemaMapping);
ModelUtils.syncValidationProperties(ps, codegenParameter);
@@ -6553,7 +6573,7 @@ public class DefaultCodegen implements CodegenConfig {
;
} else if (ModelUtils.isArraySchema(ps)) {
Schema inner = getSchemaItems((ArraySchema) ps);
- CodegenProperty arrayInnerProperty = fromProperty("inner", inner);
+ CodegenProperty arrayInnerProperty = fromProperty("inner", inner, false);
codegenParameter.items = arrayInnerProperty;
codegenParameter.mostInnerItems = arrayInnerProperty.mostInnerItems;
codegenParameter.isPrimitiveType = false;
@@ -6648,7 +6668,7 @@ public class DefaultCodegen implements CodegenConfig {
codegenParameter.isNullable = codegenModel.isNullable;
imports.add(codegenParameter.baseType);
} else {
- CodegenProperty codegenProperty = fromProperty("property", schema);
+ CodegenProperty codegenProperty = fromProperty("property", schema, false);
if (codegenProperty != null && codegenProperty.getComplexType() != null && codegenProperty.getComplexType().contains(" | ")) {
List parts = Arrays.asList(codegenProperty.getComplexType().split(" \\| "));
@@ -6713,7 +6733,7 @@ public class DefaultCodegen implements CodegenConfig {
inner = new StringSchema().description("//TODO automatically added by openapi-generator");
schema.setAdditionalProperties(inner);
}
- CodegenProperty codegenProperty = fromProperty("property", schema);
+ CodegenProperty codegenProperty = fromProperty("property", schema, false);
imports.add(codegenProperty.baseType);
@@ -6745,7 +6765,7 @@ public class DefaultCodegen implements CodegenConfig {
}
protected void updateRequestBodyForPrimitiveType(CodegenParameter codegenParameter, Schema schema, String bodyParameterName, Set imports) {
- CodegenProperty codegenProperty = fromProperty("PRIMITIVE_REQUEST_BODY", schema);
+ CodegenProperty codegenProperty = fromProperty("PRIMITIVE_REQUEST_BODY", schema, false);
if (codegenProperty != null) {
if (StringUtils.isEmpty(bodyParameterName)) {
codegenParameter.baseName = "body"; // default to body
@@ -6779,7 +6799,7 @@ public class DefaultCodegen implements CodegenConfig {
codegenParameter.isFreeFormObject = true;
// HTTP request body is free form object
- CodegenProperty codegenProperty = fromProperty("FREE_FORM_REQUEST_BODY", schema);
+ CodegenProperty codegenProperty = fromProperty("FREE_FORM_REQUEST_BODY", schema, false);
if (codegenProperty != null) {
if (StringUtils.isEmpty(bodyParameterName)) {
codegenParameter.baseName = "body"; // default to body
@@ -6808,7 +6828,7 @@ public class DefaultCodegen implements CodegenConfig {
} else {
final ArraySchema arraySchema = (ArraySchema) schema;
Schema inner = getSchemaItems(arraySchema);
- CodegenProperty codegenProperty = fromProperty("property", arraySchema);
+ CodegenProperty codegenProperty = fromProperty("property", arraySchema, false);
imports.add(codegenProperty.baseType);
CodegenProperty innerCp = codegenProperty;
CodegenProperty mostInnerItem = innerCp;
@@ -6942,7 +6962,7 @@ public class DefaultCodegen implements CodegenConfig {
String contentType = contentEntry.getKey();
CodegenProperty schemaProp = null;
if (mt.getSchema() != null) {
- schemaProp = fromProperty(toMediaTypeSchemaName(contentType, mediaTypeSchemaSuffix), mt.getSchema());
+ schemaProp = fromProperty(toMediaTypeSchemaName(contentType, mediaTypeSchemaSuffix), mt.getSchema(), false);
}
CodegenMediaType codegenMt = new CodegenMediaType(schemaProp, ceMap);
cmtContent.put(contentType, codegenMt);
@@ -7049,27 +7069,9 @@ public class DefaultCodegen implements CodegenConfig {
protected void addVarsRequiredVarsAdditionalProps(Schema schema, IJsonSchemaValidationProperties property) {
setAddProps(schema, property);
- if (!"object".equals(schema.getType())) {
- return;
- }
- if (schema instanceof ObjectSchema) {
- ObjectSchema objSchema = (ObjectSchema) schema;
- HashSet requiredVars = new HashSet<>();
- if (objSchema.getRequired() != null) {
- requiredVars.addAll(objSchema.getRequired());
- }
- if (objSchema.getProperties() != null && objSchema.getProperties().size() > 0) {
- property.setHasVars(true);
- }
- addVars(property, property.getVars(), objSchema.getProperties(), requiredVars);
- List requireCpVars = property.getVars()
- .stream()
- .filter(p -> Boolean.TRUE.equals(p.required)).collect(Collectors.toList());
- property.setRequiredVars(requireCpVars);
- if (property.getRequiredVars() != null && property.getRequiredVars().size() > 0) {
- property.setHasRequired(true);
- }
- }
+ Set mandatory = schema.getRequired() == null ? Collections.emptySet()
+ : new TreeSet<>(schema.getRequired());
+ addVars(property, property.getVars(), schema.getProperties(), mandatory);
}
private void addJsonSchemaForBodyRequestInCaseItsNotPresent(CodegenParameter codegenParameter, RequestBody body) {
@@ -7576,7 +7578,7 @@ public class DefaultCodegen implements CodegenConfig {
Schema notSchema = schema.getNot();
CodegenProperty notProperty = null;
if (notSchema != null) {
- notProperty = fromProperty("NotSchema", notSchema);
+ notProperty = fromProperty("NotSchema", notSchema, false);
}
List allOf = new ArrayList<>();
List oneOf = new ArrayList<>();
@@ -7602,7 +7604,7 @@ public class DefaultCodegen implements CodegenConfig {
List xOf = new ArrayList<>();
int i = 0;
for (Schema xOfSchema : xOfCollection) {
- CodegenProperty cp = fromProperty(collectionName + "_" + i, xOfSchema);
+ CodegenProperty cp = fromProperty(collectionName + "_" + i, xOfSchema, false);
xOf.add(cp);
i += 1;
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java
index c3cc9a13032..c3cf15fc36f 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java
@@ -129,7 +129,7 @@ public interface IJsonSchemaValidationProperties {
boolean getHasVars();
- void setHasVars(boolean hasRequiredVars);
+ void setHasVars(boolean hasVars);
boolean getHasRequired();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java
index 4a1933e094a..2965605fd3c 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java
@@ -385,8 +385,8 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
}
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty property = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty property = super.fromProperty(name, p, required);
if (property != null) {
String nameInCamelCase = property.nameInCamelCase;
nameInCamelCase = sanitizeName(nameInCamelCase);
@@ -566,7 +566,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
if (operation.getResponses() != null && !operation.getResponses().isEmpty()) {
ApiResponse methodResponse = findMethodResponse(operation.getResponses());
if (methodResponse != null && ModelUtils.getSchemaFromResponse(methodResponse) != null) {
- CodegenProperty cm = fromProperty("response", ModelUtils.getSchemaFromResponse(methodResponse));
+ CodegenProperty cm = fromProperty("response", ModelUtils.getSchemaFromResponse(methodResponse), false);
op.vendorExtensions.put("x-codegen-response", cm);
op.vendorExtensions.put("x-is-model-type", isModelType(cm));
op.vendorExtensions.put("x-is-stream-type", isStreamType(cm));
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java
index a05999bd7ff..7cbb943a98b 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java
@@ -251,8 +251,8 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg
@SuppressWarnings("rawtypes")
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty property = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty property = super.fromProperty(name, p, required);
String nameInCamelCase = property.nameInCamelCase;
if (nameInCamelCase.length() > 1) {
nameInCamelCase = sanitizeName(Character.toLowerCase(nameInCamelCase.charAt(0)) + nameInCamelCase.substring(1));
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java
index bc42591cb25..b560bfd258a 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java
@@ -551,8 +551,8 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
}
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- final CodegenProperty property = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ final CodegenProperty property = super.fromProperty(name, p, required);
// Handle composed properties
if (ModelUtils.isComposedSchema(p)) {
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java
index f0dbaed17af..1f1bb974a8f 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java
@@ -461,8 +461,8 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
* @return Codegen Property object
*/
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty prop = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty prop = super.fromProperty(name, p, required);
if (ModelUtils.isArraySchema(p)) {
ArraySchema as = (ArraySchema) p;
if (ModelUtils.isSet(as)) {
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java
index a2bdc183207..c0c49772095 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java
@@ -852,8 +852,8 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf
}
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty cm = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty cm = super.fromProperty(name, p, required);
Schema ref = ModelUtils.getReferencedSchema(openAPI, p);
if (ref != null) {
if (ref.getEnum() != null) {
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java
index e6ce6acc3e2..00cd52dbab8 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java
@@ -242,7 +242,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
if (apiResponse != null) {
Schema response = ModelUtils.getSchemaFromResponse(apiResponse);
if (response != null) {
- CodegenProperty cm = fromProperty("response", response);
+ CodegenProperty cm = fromProperty("response", response, false);
op.vendorExtensions.put("x-codegen-response", cm);
if ("HttpContent".equals(cm.dataType)) {
op.vendorExtensions.put("x-codegen-response-ishttpcontent", true);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java
index 13be5ab4139..516df642b38 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java
@@ -297,7 +297,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
Schema response = ModelUtils.getSchemaFromResponse(methodResponse);
response = ModelUtils.unaliasSchema(this.openAPI, response, schemaMapping);
if (response != null) {
- CodegenProperty cm = fromProperty("response", response);
+ CodegenProperty cm = fromProperty("response", response, false);
op.vendorExtensions.put("x-codegen-response", cm);
if ("std::shared_ptr".equals(cm.dataType)) {
op.vendorExtensions.put("x-codegen-response-ishttpcontent", true);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java
index 3f95f7a31ee..1c98aefeaff 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java
@@ -384,8 +384,8 @@ public class GoClientCodegen extends AbstractGoCodegen {
}
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty prop = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty prop = super.fromProperty(name, p, required);
String cc = camelize(prop.name, true);
if (isReservedWord(cc)) {
cc = escapeReservedWord(cc);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java
index adfef4bf3c8..1bf5b024ec0 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java
@@ -323,7 +323,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen {
}
if (!hasPrimaryKey) {
final IntegerSchema schema = new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT);
- CodegenProperty cp = super.fromProperty(primaryKeyConvention, schema);
+ CodegenProperty cp = super.fromProperty(primaryKeyConvention, schema, false);
cp.setRequired(true);
model.vars.add(0, cp);
model.allVars.add(0, cp);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java
index 71162ddf665..62f7d164eae 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java
@@ -307,8 +307,8 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen {
}
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty property = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty property = super.fromProperty(name, p, required);
Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p);
//Referenced enum case:
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java
index 9c61e903776..f7f886467c8 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java
@@ -446,8 +446,8 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
* @return Codegen Property object
*/
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty cp = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty cp = super.fromProperty(name, p, required);
if (cp.isEnum) {
updateCodegenPropertyEnum(cp);
}
@@ -518,7 +518,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
return cp;
}
Schema unaliasedSchema = unaliasSchema(schema, schemaMapping);
- CodegenProperty unaliasedProp = fromProperty("body", unaliasedSchema);
+ CodegenProperty unaliasedProp = fromProperty("body", unaliasedSchema, false);
Boolean dataTypeMismatch = !cp.dataType.equals(unaliasedProp.dataType);
Boolean baseTypeMismatch = !cp.baseType.equals(unaliasedProp.complexType) && unaliasedProp.complexType != null;
if (dataTypeMismatch || baseTypeMismatch) {
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java
index b3736774184..3cfb87e3207 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java
@@ -849,8 +849,8 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
* @return Codegen Property object
*/
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty cp = super.fromProperty(name, p);
+ public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty cp = super.fromProperty(name, p, required);
if (cp.isAnyType && cp.isNullable) {
cp.isNullable = false;
}
@@ -964,7 +964,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
return cp;
}
Schema unaliasedSchema = unaliasSchema(schema, schemaMapping);
- CodegenProperty unaliasedProp = fromProperty("body", unaliasedSchema);
+ CodegenProperty unaliasedProp = fromProperty("body", unaliasedSchema, false);
Boolean dataTypeMismatch = !cp.dataType.equals(unaliasedProp.dataType);
Boolean baseTypeMismatch = !cp.baseType.equals(unaliasedProp.complexType) && unaliasedProp.complexType != null;
if (dataTypeMismatch || baseTypeMismatch) {
@@ -1022,7 +1022,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
codegenParameter.isNullable = codegenModel.isNullable;
imports.add(codegenParameter.baseType);
} else {
- CodegenProperty codegenProperty = fromProperty("property", schema);
+ CodegenProperty codegenProperty = fromProperty("property", schema, false);
if (codegenProperty != null && codegenProperty.getComplexType() != null && codegenProperty.getComplexType().contains(" | ")) {
List parts = Arrays.asList(codegenProperty.getComplexType().split(" \\| "));
@@ -2033,7 +2033,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
isAdditionalPropertiesTrue = true;
// pass in the hashCode as the name to ensure that the returned property is not from the cache
// if we need to set indent on every one, then they need to be different
- addPropProp = fromProperty(String.valueOf(property.hashCode()), new Schema());
+ addPropProp = fromProperty(String.valueOf(property.hashCode()), new Schema(), false);
addPropProp.name = "";
addPropProp.baseName = "";
addPropProp.nameInSnakeCase = null;
@@ -2042,14 +2042,14 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
} else if (schema.getAdditionalProperties() instanceof Boolean) {
if (Boolean.TRUE.equals(schema.getAdditionalProperties())) {
isAdditionalPropertiesTrue = true;
- addPropProp = fromProperty(String.valueOf(property.hashCode()), new Schema());
+ addPropProp = fromProperty(String.valueOf(property.hashCode()), new Schema(), false);
addPropProp.name = "";
addPropProp.baseName = "";
addPropProp.nameInSnakeCase = null;
additionalPropertiesIsAnyType = true;
}
} else {
- addPropProp = fromProperty(String.valueOf(property.hashCode()), (Schema) schema.getAdditionalProperties());
+ addPropProp = fromProperty(String.valueOf(property.hashCode()), (Schema) schema.getAdditionalProperties(), false);
addPropProp.name = "";
addPropProp.baseName = "";
addPropProp.nameInSnakeCase = null;
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java
index 38a75efd9de..195215bdb53 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java
@@ -443,8 +443,8 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
}
@Override
- public ExtendedCodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty cp = super.fromProperty(name, p);
+ public ExtendedCodegenProperty fromProperty(String name, Schema p, boolean required) {
+ CodegenProperty cp = super.fromProperty(name, p, required);
return new ExtendedCodegenProperty(cp);
}
@@ -515,7 +515,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
if (op.returnPassthrough instanceof String && cm != null) {
cp = (ExtendedCodegenProperty) this.processCodeGenModel(cm).vars.get(1);
} else if (responseSchema != null) {
- cp = fromProperty("response", responseSchema);
+ cp = fromProperty("response", responseSchema, false);
this.processCodegenProperty(cp, "", null);
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index 4005601df8b..ef0b59a12bc 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -4220,4 +4220,29 @@ public class DefaultCodegenTest {
Assert.assertEquals(codegenParameter.defaultValue, "1971-12-19T03:39:57-08:00");
Assert.assertEquals(codegenParameter.getSchema(), null);
}
+
+ @Test
+ public void testFromPropertyRequiredAndOptional() {
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_12857.yaml");
+ final DefaultCodegen codegen = new DefaultCodegen();
+ codegen.setOpenAPI(openAPI);
+ codegen.setDisallowAdditionalPropertiesIfNotPresent(false);
+
+ String modelName = "FooRequired";
+ Schema sc = openAPI.getComponents().getSchemas().get(modelName);
+ CodegenModel fooRequired = codegen.fromModel(modelName, sc);
+ modelName = "FooOptional";
+ sc = openAPI.getComponents().getSchemas().get(modelName);
+ CodegenModel fooOptional = codegen.fromModel(modelName, sc);
+ Assert.assertTrue(fooRequired.vars.get(0).required);
+ Assert.assertEquals(fooRequired.vars.get(0).name, "foo");
+
+ Assert.assertEquals(fooRequired.requiredVars.size(), 1);
+ Assert.assertEquals(fooRequired.requiredVars.get(0).name, "foo");
+ Assert.assertTrue(fooRequired.requiredVars.get(0).required);
+
+ Assert.assertFalse(fooOptional.vars.get(0).required);
+ Assert.assertEquals(fooOptional.vars.get(0).name, "foo");
+ Assert.assertEquals(fooOptional.requiredVars.size(), 0);
+ }
}
diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_12857.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_12857.yaml
new file mode 100644
index 00000000000..88f3af1b9e8
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/issue_12857.yaml
@@ -0,0 +1,17 @@
+openapi: 3.0.3
+info:
+ title: openapi 3.0.3 sample spec
+ description: sample spec for testing openapi functionality, built from json schema
+ tests for draft6
+ version: 0.0.1
+paths: {}
+components:
+ schemas:
+ FooRequired:
+ properties:
+ foo: {}
+ required:
+ - foo
+ FooOptional:
+ properties:
+ foo: {}
\ No newline at end of file
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md
index 8ce6449e5f2..072ad05b36d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | | [optional]
-**PetType** | **string** | | [default to PetTypeEnum.ChildCat]
+**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs
index 6358e859ce1..e5f952880eb 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Model
/// Gets or Sets PetType
///
- [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)]
- public PetTypeEnum PetType
+ [DataMember(Name = "pet_type", EmitDefaultValue = false)]
+ public PetTypeEnum? PetType
{
get{ return _PetType;}
set
@@ -63,7 +63,7 @@ namespace Org.OpenAPITools.Model
_flagPetType = true;
}
}
- private PetTypeEnum _PetType;
+ private PetTypeEnum? _PetType;
private bool _flagPetType;
///
@@ -86,10 +86,9 @@ namespace Org.OpenAPITools.Model
/// Initializes a new instance of the class.
///
/// name.
- /// petType (required) (default to PetTypeEnum.ChildCat).
- public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base()
+ /// petType (default to PetTypeEnum.ChildCat).
+ public ChildCat(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) : base()
{
- this._PetType = petType;
this._Name = name;
if (this.Name != null)
{
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md
index 8ce6449e5f2..072ad05b36d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | | [optional]
-**PetType** | **string** | | [default to PetTypeEnum.ChildCat]
+**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs
index a6603b7cb85..2420d129554 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Model
///
/// Gets or Sets PetType
///
- [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)]
- public PetTypeEnum PetType { get; set; }
+ [DataMember(Name = "pet_type", EmitDefaultValue = false)]
+ public PetTypeEnum? PetType { get; set; }
///
/// Initializes a new instance of the class.
///
@@ -67,11 +67,11 @@ namespace Org.OpenAPITools.Model
/// Initializes a new instance of the class.
///
/// name.
- /// petType (required) (default to PetTypeEnum.ChildCat).
- public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base()
+ /// petType (default to PetTypeEnum.ChildCat).
+ public ChildCat(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) : base()
{
- this.PetType = petType;
this.Name = name;
+ this.PetType = petType;
this.AdditionalProperties = new Dictionary();
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/docs/ChildCat.md
index 8ce6449e5f2..072ad05b36d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/docs/ChildCat.md
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/docs/ChildCat.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | | [optional]
-**PetType** | **string** | | [default to PetTypeEnum.ChildCat]
+**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ChildCat.cs
index 7a15a5297df..4c60ed776cd 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -52,8 +52,8 @@ namespace Org.OpenAPITools.Model
///
/// Gets or Sets PetType
///
- [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)]
- public PetTypeEnum PetType { get; set; }
+ [DataMember(Name = "pet_type", EmitDefaultValue = false)]
+ public PetTypeEnum? PetType { get; set; }
///
/// Initializes a new instance of the class.
///
@@ -66,11 +66,11 @@ namespace Org.OpenAPITools.Model
/// Initializes a new instance of the class.
///
/// name.
- /// petType (required) (default to PetTypeEnum.ChildCat).
- public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base()
+ /// petType (default to PetTypeEnum.ChildCat).
+ public ChildCat(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) : base()
{
- this.PetType = petType;
this.Name = name;
+ this.PetType = petType;
this.AdditionalProperties = new Dictionary();
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/docs/ChildCat.md
index 8ce6449e5f2..072ad05b36d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/docs/ChildCat.md
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/docs/ChildCat.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | | [optional]
-**PetType** | **string** | | [default to PetTypeEnum.ChildCat]
+**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ChildCat.cs
index 7a15a5297df..4c60ed776cd 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -52,8 +52,8 @@ namespace Org.OpenAPITools.Model
///
/// Gets or Sets PetType
///
- [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)]
- public PetTypeEnum PetType { get; set; }
+ [DataMember(Name = "pet_type", EmitDefaultValue = false)]
+ public PetTypeEnum? PetType { get; set; }
///
/// Initializes a new instance of the class.
///
@@ -66,11 +66,11 @@ namespace Org.OpenAPITools.Model
/// Initializes a new instance of the class.
///
/// name.
- /// petType (required) (default to PetTypeEnum.ChildCat).
- public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base()
+ /// petType (default to PetTypeEnum.ChildCat).
+ public ChildCat(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) : base()
{
- this.PetType = petType;
this.Name = name;
+ this.PetType = petType;
this.AdditionalProperties = new Dictionary();
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient/docs/ChildCat.md
index 8ce6449e5f2..072ad05b36d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient/docs/ChildCat.md
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/docs/ChildCat.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | | [optional]
-**PetType** | **string** | | [default to PetTypeEnum.ChildCat]
+**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ChildCat.cs
index 7a15a5297df..4c60ed776cd 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -52,8 +52,8 @@ namespace Org.OpenAPITools.Model
///
/// Gets or Sets PetType
///
- [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)]
- public PetTypeEnum PetType { get; set; }
+ [DataMember(Name = "pet_type", EmitDefaultValue = false)]
+ public PetTypeEnum? PetType { get; set; }
///
/// Initializes a new instance of the class.
///
@@ -66,11 +66,11 @@ namespace Org.OpenAPITools.Model
/// Initializes a new instance of the class.
///
/// name.
- /// petType (required) (default to PetTypeEnum.ChildCat).
- public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base()
+ /// petType (default to PetTypeEnum.ChildCat).
+ public ChildCat(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) : base()
{
- this.PetType = petType;
this.Name = name;
+ this.PetType = petType;
this.AdditionalProperties = new Dictionary();
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/docs/ChildCat.md
index 8ce6449e5f2..072ad05b36d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/docs/ChildCat.md
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/docs/ChildCat.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | | [optional]
-**PetType** | **string** | | [default to PetTypeEnum.ChildCat]
+**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ChildCat.cs
index d2b81927885..c6c7222d7a6 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -52,8 +52,8 @@ namespace Org.OpenAPITools.Model
///
/// Gets or Sets PetType
///
- [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)]
- public PetTypeEnum PetType { get; set; }
+ [DataMember(Name = "pet_type", EmitDefaultValue = false)]
+ public PetTypeEnum? PetType { get; set; }
///
/// Initializes a new instance of the class.
///
@@ -63,11 +63,11 @@ namespace Org.OpenAPITools.Model
/// Initializes a new instance of the class.
///
/// name.
- /// petType (required) (default to PetTypeEnum.ChildCat).
- public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base()
+ /// petType (default to PetTypeEnum.ChildCat).
+ public ChildCat(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) : base()
{
- this.PetType = petType;
this.Name = name;
+ this.PetType = petType;
}
///
diff --git a/samples/client/petstore/java/jersey3/docs/ChildCat.md b/samples/client/petstore/java/jersey3/docs/ChildCat.md
index 6a114cc4ffb..3f39832529b 100644
--- a/samples/client/petstore/java/jersey3/docs/ChildCat.md
+++ b/samples/client/petstore/java/jersey3/docs/ChildCat.md
@@ -8,7 +8,7 @@
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**name** | **String** | | [optional] |
-|**petType** | [**String**](#String) | | |
+|**petType** | [**String**](#String) | | [optional] |
diff --git a/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/model/ChildCat.java b/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/model/ChildCat.java
index 8e16e6fedd2..e0ce86c3f91 100644
--- a/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/model/ChildCat.java
+++ b/samples/client/petstore/java/jersey3/src/main/java/org/openapitools/client/model/ChildCat.java
@@ -105,10 +105,10 @@ public class ChildCat extends ParentPet {
* Get petType
* @return petType
**/
- @jakarta.annotation.Nonnull
- @ApiModelProperty(required = true, value = "")
+ @jakarta.annotation.Nullable
+ @ApiModelProperty(value = "")
@JsonProperty(JSON_PROPERTY_PET_TYPE)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public String getPetType() {
return petType;
@@ -116,7 +116,7 @@ public class ChildCat extends ParentPet {
@JsonProperty(JSON_PROPERTY_PET_TYPE)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public void setPetType(String petType) {
if (!PET_TYPE_VALUES.contains(petType)) {
throw new IllegalArgumentException(petType + " is invalid. Possible values for petType: " + String.join(", ", PET_TYPE_VALUES));
diff --git a/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts b/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts
index 572cae52236..0d480e40bc0 100644
--- a/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts
+++ b/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts
@@ -359,7 +359,7 @@ export interface ChildCat extends ParentPet {
* @type {string}
* @memberof ChildCat
*/
- 'pet_type': ChildCatPetTypeEnum;
+ 'pet_type'?: ChildCatPetTypeEnum;
}
export const ChildCatPetTypeEnum = {
diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/docs/ChildCat.md b/samples/openapi3/client/petstore/java/jersey2-java8/docs/ChildCat.md
index 6a114cc4ffb..3f39832529b 100644
--- a/samples/openapi3/client/petstore/java/jersey2-java8/docs/ChildCat.md
+++ b/samples/openapi3/client/petstore/java/jersey2-java8/docs/ChildCat.md
@@ -8,7 +8,7 @@
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**name** | **String** | | [optional] |
-|**petType** | [**String**](#String) | | |
+|**petType** | [**String**](#String) | | [optional] |
diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/ChildCat.java b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/ChildCat.java
index 0e2970ef036..ae123669a7d 100644
--- a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/ChildCat.java
+++ b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/ChildCat.java
@@ -105,10 +105,10 @@ public class ChildCat extends ParentPet {
* Get petType
* @return petType
**/
- @javax.annotation.Nonnull
- @ApiModelProperty(required = true, value = "")
+ @javax.annotation.Nullable
+ @ApiModelProperty(value = "")
@JsonProperty(JSON_PROPERTY_PET_TYPE)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public String getPetType() {
return petType;
@@ -116,7 +116,7 @@ public class ChildCat extends ParentPet {
@JsonProperty(JSON_PROPERTY_PET_TYPE)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public void setPetType(String petType) {
if (!PET_TYPE_VALUES.contains(petType)) {
throw new IllegalArgumentException(petType + " is invalid. Possible values for petType: " + String.join(", ", PET_TYPE_VALUES));
diff --git a/samples/openapi3/client/petstore/python-experimental/docs/PetApi.md b/samples/openapi3/client/petstore/python-experimental/docs/PetApi.md
index 7b9ab23bc5d..d8ee4cb32fc 100644
--- a/samples/openapi3/client/petstore/python-experimental/docs/PetApi.md
+++ b/samples/openapi3/client/petstore/python-experimental/docs/PetApi.md
@@ -1315,7 +1315,7 @@ skip_deserialization | bool | default is False | when True, headers and body wil
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**additionalMetadata** | **str** | Additional data to pass to server | [optional]
-**file** | **file_type** | file to upload |
+**file** | **file_type** | file to upload | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
### path_params
diff --git a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/endpoint_parameters.py b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/endpoint_parameters.py
index 666b832fc7c..d4bfb218fd0 100644
--- a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/endpoint_parameters.py
+++ b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/endpoint_parameters.py
@@ -73,6 +73,10 @@ class SchemaForRequestBodyApplicationXWwwFormUrlencoded(
DictSchema
):
_required_property_names = set((
+ 'number',
+ 'double',
+ 'pattern_without_delimiter',
+ 'byte',
))
@@ -171,6 +175,10 @@ class SchemaForRequestBodyApplicationXWwwFormUrlencoded(
def __new__(
cls,
*args: typing.Union[dict, frozendict, ],
+ number: number,
+ double: double,
+ pattern_without_delimiter: pattern_without_delimiter,
+ byte: byte,
integer: typing.Union[integer, Unset] = unset,
int32: typing.Union[int32, Unset] = unset,
int64: typing.Union[int64, Unset] = unset,
@@ -186,6 +194,10 @@ class SchemaForRequestBodyApplicationXWwwFormUrlencoded(
return super().__new__(
cls,
*args,
+ number=number,
+ double=double,
+ pattern_without_delimiter=pattern_without_delimiter,
+ byte=byte,
integer=integer,
int32=int32,
int64=int64,
diff --git a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/json_form_data.py b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/json_form_data.py
index 34dfe5627ce..ce7e5851c6a 100644
--- a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/json_form_data.py
+++ b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/json_form_data.py
@@ -73,6 +73,8 @@ class SchemaForRequestBodyApplicationXWwwFormUrlencoded(
DictSchema
):
_required_property_names = set((
+ 'param',
+ 'param2',
))
param = StrSchema
param2 = StrSchema
@@ -81,12 +83,16 @@ class SchemaForRequestBodyApplicationXWwwFormUrlencoded(
def __new__(
cls,
*args: typing.Union[dict, frozendict, ],
+ param: param,
+ param2: param2,
_configuration: typing.Optional[Configuration] = None,
**kwargs: typing.Type[Schema],
) -> 'SchemaForRequestBodyApplicationXWwwFormUrlencoded':
return super().__new__(
cls,
*args,
+ param=param,
+ param2=param2,
_configuration=_configuration,
**kwargs,
)
diff --git a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/upload_file.py b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/upload_file.py
index e308b76b1f2..c8c8a179a53 100644
--- a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/upload_file.py
+++ b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/fake_api_endpoints/upload_file.py
@@ -75,6 +75,7 @@ class SchemaForRequestBodyMultipartFormData(
DictSchema
):
_required_property_names = set((
+ 'file',
))
additionalMetadata = StrSchema
file = BinarySchema
@@ -83,6 +84,7 @@ class SchemaForRequestBodyMultipartFormData(
def __new__(
cls,
*args: typing.Union[dict, frozendict, ],
+ file: file,
additionalMetadata: typing.Union[additionalMetadata, Unset] = unset,
_configuration: typing.Optional[Configuration] = None,
**kwargs: typing.Type[Schema],
@@ -90,6 +92,7 @@ class SchemaForRequestBodyMultipartFormData(
return super().__new__(
cls,
*args,
+ file=file,
additionalMetadata=additionalMetadata,
_configuration=_configuration,
**kwargs,
diff --git a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_file_with_required_file.py b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_file_with_required_file.py
index 689f54addd2..fb1375c1b8a 100644
--- a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_file_with_required_file.py
+++ b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_file_with_required_file.py
@@ -101,6 +101,7 @@ class SchemaForRequestBodyMultipartFormData(
DictSchema
):
_required_property_names = set((
+ 'requiredFile',
))
additionalMetadata = StrSchema
requiredFile = BinarySchema
@@ -109,6 +110,7 @@ class SchemaForRequestBodyMultipartFormData(
def __new__(
cls,
*args: typing.Union[dict, frozendict, ],
+ requiredFile: requiredFile,
additionalMetadata: typing.Union[additionalMetadata, Unset] = unset,
_configuration: typing.Optional[Configuration] = None,
**kwargs: typing.Type[Schema],
@@ -116,6 +118,7 @@ class SchemaForRequestBodyMultipartFormData(
return super().__new__(
cls,
*args,
+ requiredFile=requiredFile,
additionalMetadata=additionalMetadata,
_configuration=_configuration,
**kwargs,
diff --git a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_image.py b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_image.py
index 70cce044b13..20bb010ae19 100644
--- a/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_image.py
+++ b/samples/openapi3/client/petstore/python-experimental/petstore_api/api/pet_api_endpoints/upload_image.py
@@ -108,6 +108,7 @@ class SchemaForRequestBodyMultipartFormData(
cls,
*args: typing.Union[dict, frozendict, ],
additionalMetadata: typing.Union[additionalMetadata, Unset] = unset,
+ file: typing.Union[file, Unset] = unset,
_configuration: typing.Optional[Configuration] = None,
**kwargs: typing.Type[Schema],
) -> 'SchemaForRequestBodyMultipartFormData':
@@ -115,6 +116,7 @@ class SchemaForRequestBodyMultipartFormData(
cls,
*args,
additionalMetadata=additionalMetadata,
+ file=file,
_configuration=_configuration,
**kwargs,
)