diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
index 5bb6cbda4b7f..76bdf64501b3 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
@@ -723,6 +723,16 @@ public void setAdditionalPropertiesIsAnyType(boolean additionalPropertiesIsAnyTy
this.additionalPropertiesIsAnyType = additionalPropertiesIsAnyType;
}
+ @Override
+ public boolean getHasVars() {
+ return this.hasVars;
+ }
+
+ @Override
+ public void setHasVars(boolean hasVars) {
+ this.hasVars = hasVars;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java
index 3ecbc32462f5..6a93e266730e 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java
@@ -40,6 +40,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
public boolean isFile;
public boolean isEnum;
private boolean additionalPropertiesIsAnyType;
+ private boolean hasVars;
public List _enum;
public Map allowableValues;
public CodegenProperty items;
@@ -151,6 +152,7 @@ public CodegenParameter copy() {
output.additionalProperties = this.additionalProperties;
output.isNull = this.isNull;
output.setAdditionalPropertiesIsAnyType(this.getAdditionalPropertiesIsAnyType());
+ output.setHasVars(this.hasVars);
if (this._enum != null) {
output._enum = new ArrayList(this._enum);
@@ -205,7 +207,7 @@ public CodegenParameter copy() {
@Override
public int hashCode() {
- return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, getAdditionalPropertiesIsAnyType());
+ return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars);
}
@Override
@@ -251,6 +253,7 @@ public boolean equals(Object o) {
required == that.required &&
isNull == that.isNull &&
getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() &&
+ getHasVars() == that.getHasVars() &&
getExclusiveMaximum() == that.getExclusiveMaximum() &&
getExclusiveMinimum() == that.getExclusiveMinimum() &&
getUniqueItems() == that.getUniqueItems() &&
@@ -367,7 +370,8 @@ public String toString() {
sb.append(", contentType=").append(contentType);
sb.append(", multipleOf=").append(multipleOf);
sb.append(", isNull=").append(isNull);
- sb.append(", getAdditionalPropertiesIsAnyType=").append(getAdditionalPropertiesIsAnyType());
+ sb.append(", getAdditionalPropertiesIsAnyType=").append(additionalPropertiesIsAnyType);
+ sb.append(", getHasVars=").append(hasVars);
sb.append('}');
return sb.toString();
}
@@ -605,5 +609,15 @@ public boolean getAdditionalPropertiesIsAnyType() {
public void setAdditionalPropertiesIsAnyType(boolean additionalPropertiesIsAnyType) {
this.additionalPropertiesIsAnyType = additionalPropertiesIsAnyType;
}
+
+ @Override
+ public boolean getHasVars() {
+ return this.hasVars;
+ }
+
+ @Override
+ public void setHasVars(boolean hasVars) {
+ this.hasVars = hasVars;
+ }
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java
index d4dadd49fc20..f00ef51ffba7 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java
@@ -186,6 +186,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
public String xmlNamespace;
public boolean isXmlWrapped = false;
private boolean additionalPropertiesIsAnyType;
+ private boolean hasVars;
public String getBaseName() {
return baseName;
@@ -704,6 +705,16 @@ public void setAdditionalPropertiesIsAnyType(boolean additionalPropertiesIsAnyTy
this.additionalPropertiesIsAnyType = additionalPropertiesIsAnyType;
}
+ @Override
+ public boolean getHasVars() {
+ return this.hasVars;
+ }
+
+ @Override
+ public void setHasVars(boolean hasVars) {
+ this.hasVars = hasVars;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("CodegenProperty{");
@@ -794,6 +805,7 @@ public String toString() {
sb.append(", isXmlWrapped=").append(isXmlWrapped);
sb.append(", isNull=").append(isNull);
sb.append(", getAdditionalPropertiesIsAnyType=").append(getAdditionalPropertiesIsAnyType());
+ sb.append(", getHasVars=").append(getHasVars());
sb.append('}');
return sb.toString();
}
@@ -844,6 +856,7 @@ public boolean equals(Object o) {
isXmlWrapped == that.isXmlWrapped &&
isNull == that.isNull &&
getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() &&
+ getHasVars() == that.getHasVars() &&
Objects.equals(openApiType, that.openApiType) &&
Objects.equals(baseName, that.baseName) &&
Objects.equals(complexType, that.complexType) &&
@@ -905,6 +918,6 @@ public int hashCode() {
items, mostInnerItems, additionalProperties, vars, requiredVars,
vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase,
nameInSnakeCase, enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName,
- xmlNamespace, isXmlWrapped, isNull, getAdditionalPropertiesIsAnyType());
+ xmlNamespace, isXmlWrapped, isNull, additionalPropertiesIsAnyType, hasVars);
}
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java
index 856bb8fc292a..37a21190fc5a 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java
@@ -80,6 +80,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties {
public List requiredVars = new ArrayList();
private boolean hasValidation;
private boolean additionalPropertiesIsAnyType;
+ private boolean hasVars;
@Override
public int hashCode() {
@@ -90,7 +91,7 @@ public int hashCode() {
vars, requiredVars, isNull, hasValidation,
getMaxProperties(), getMinProperties(), uniqueItems, getMaxItems(), getMinItems(), getMaxLength(),
getMinLength(), exclusiveMinimum, exclusiveMaximum, getMinimum(), getMaximum(), getPattern(),
- is1xx, is2xx, is3xx, is4xx, is5xx, getAdditionalPropertiesIsAnyType());
+ is1xx, is2xx, is3xx, is4xx, is5xx, additionalPropertiesIsAnyType, hasVars);
}
@Override
@@ -133,6 +134,7 @@ public boolean equals(Object o) {
is4xx == that.is4xx &&
is5xx == that.is5xx &&
getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() &&
+ getHasVars() == that.getHasVars() &&
Objects.equals(vars, that.vars) &&
Objects.equals(requiredVars, that.requiredVars) &&
Objects.equals(headers, that.headers) &&
@@ -431,7 +433,8 @@ public String toString() {
sb.append(", requiredVars='").append(requiredVars).append('\'');
sb.append(", isNull='").append(isNull);
sb.append(", hasValidation='").append(hasValidation);
- sb.append(", getAdditionalPropertiesIsAnyType=").append(getAdditionalPropertiesIsAnyType());
+ sb.append(", getAdditionalPropertiesIsAnyType=").append(additionalPropertiesIsAnyType);
+ sb.append(", getHasVars=").append(hasVars);
sb.append('}');
return sb.toString();
}
@@ -478,4 +481,14 @@ public boolean getAdditionalPropertiesIsAnyType() {
public void setAdditionalPropertiesIsAnyType(boolean additionalPropertiesIsAnyType) {
this.additionalPropertiesIsAnyType = additionalPropertiesIsAnyType;
}
+
+ @Override
+ public boolean getHasVars() {
+ return this.hasVars;
+ }
+
+ @Override
+ public void setHasVars(boolean hasVars) {
+ this.hasVars = hasVars;
+ }
}
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 e2c86e22bebf..a5fce66d29c0 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
@@ -6141,6 +6141,9 @@ private void addVarsRequiredVarsAdditionalProps(Schema schema, IJsonSchemaValida
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()
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 0dc63f0c1ebb..fa9c8f535976 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
@@ -102,4 +102,8 @@ public interface IJsonSchemaValidationProperties {
boolean getAdditionalPropertiesIsAnyType();
void setAdditionalPropertiesIsAnyType(boolean additionalPropertiesIsAnyType);
+
+ boolean getHasVars();
+
+ void setHasVars(boolean hasVars);
}
\ No newline at end of file
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 c673d995f468..f103f744f0a2 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
@@ -2955,4 +2955,124 @@ public void testVarsAndRequiredVarsPresent() {
assertEquals(cp.isModel, true);
assertEquals(cp.complexType, "objectData");
}
+
+ @Test
+ public void testHasVarsInModel() {
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_7613.yaml");
+ final DefaultCodegen codegen = new DefaultCodegen();
+ codegen.setOpenAPI(openAPI);
+ codegen.setDisallowAdditionalPropertiesIfNotPresent(false);
+
+ Schema sc;
+ CodegenModel cm;
+ List modelNames;
+
+ modelNames = Arrays.asList(
+ "ArrayWithValidationsInItems",
+ "ObjectWithValidationsInAdditionalProperties",
+ "AdditionalPropertiesUnset",
+ "AdditionalPropertiesTrue",
+ "AdditionalPropertiesFalse",
+ "AdditionalPropertiesSchema"
+ );
+ for (String modelName : modelNames) {
+ sc = openAPI.getComponents().getSchemas().get(modelName);
+ cm = codegen.fromModel(modelName, sc);
+ assertEquals(cm.getHasVars(), false);
+ }
+
+ modelNames = Arrays.asList(
+ "ObjectModelWithRefAddPropsInProps",
+ "ObjectModelWithAddPropsInProps",
+ "ObjectWithOptionalAndRequiredProps",
+ "ObjectPropContainsProps"
+ );
+ for (String modelName : modelNames) {
+ sc = openAPI.getComponents().getSchemas().get(modelName);
+ cm = codegen.fromModel(modelName, sc);
+ assertEquals(cm.getHasVars(), true);
+ }
+ }
+
+ @Test
+ public void testHasVarsInProperty() {
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_7613.yaml");
+ final DefaultCodegen codegen = new DefaultCodegen();
+ codegen.setOpenAPI(openAPI);
+ codegen.setDisallowAdditionalPropertiesIfNotPresent(false);
+
+ Schema sc;
+ CodegenModel cm;
+ List modelNames;
+
+ modelNames = Arrays.asList(
+ "ObjectWithValidationsInArrayPropItems",
+ "ObjectModelWithRefAddPropsInProps",
+ "ObjectModelWithAddPropsInProps",
+ "ObjectWithOptionalAndRequiredProps"
+ );
+ for (String modelName : modelNames) {
+ sc = openAPI.getComponents().getSchemas().get(modelName);
+ cm = codegen.fromModel(modelName, sc);
+ assertEquals(cm.vars.get(0).getHasVars(), false);
+ }
+
+ String modelName;
+ modelName = "ArrayWithObjectWithPropsInItems";
+ sc = openAPI.getComponents().getSchemas().get(modelName);
+ cm = codegen.fromModel(modelName, sc);
+ assertEquals(cm.getItems().getHasVars(), true);
+
+ modelName = "ObjectWithObjectWithPropsInAdditionalProperties";
+ sc = openAPI.getComponents().getSchemas().get(modelName);
+ cm = codegen.fromModel(modelName, sc);
+ assertEquals(cm.getAdditionalProperties().getHasVars(), true);
+ }
+
+ @Test
+ public void testHasVarsInParameter() {
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_7613.yaml");
+ final DefaultCodegen codegen = new DefaultCodegen();
+ codegen.setOpenAPI(openAPI);
+ codegen.setDisallowAdditionalPropertiesIfNotPresent(false);
+
+ String path;
+ Operation operation;
+ CodegenOperation co;
+
+ path = "/array_with_validations_in_items/{items}";
+ operation = openAPI.getPaths().get(path).getPost();
+ co = codegen.fromOperation(path, "POST", operation, null);
+ assertEquals(co.pathParams.get(0).getHasVars(), false);
+ assertEquals(co.bodyParam.getHasVars(), false);
+
+ path = "/object_with_optional_and_required_props/{objectData}";
+ operation = openAPI.getPaths().get(path).getPost();
+ co = codegen.fromOperation(path, "POST", operation, null);
+ assertEquals(co.pathParams.get(0).getHasVars(), true);
+ assertEquals(co.bodyParam.getHasVars(), true);
+ }
+
+ @Test
+ public void testHasVarsInResponse() {
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_7613.yaml");
+ final DefaultCodegen codegen = new DefaultCodegen();
+ codegen.setOpenAPI(openAPI);
+ codegen.setDisallowAdditionalPropertiesIfNotPresent(false);
+
+ String path;
+ Operation operation;
+ CodegenOperation co;
+
+ path = "/additional_properties/";
+ operation = openAPI.getPaths().get(path).getPost();
+ co = codegen.fromOperation(path, "POST", operation, null);
+ assertEquals(co.responses.get(0).getHasVars(), false);
+
+ path = "/object_with_optional_and_required_props/{objectData}";
+ operation = openAPI.getPaths().get(path).getPost();
+ co = codegen.fromOperation(path, "POST", operation, null);
+ // does not have vars because the inline schema was extracted into a component ref
+ assertEquals(co.responses.get(0).getHasVars(), false);
+ }
}
diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_7613.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_7613.yaml
index 4060da8ea647..5973adb14d7e 100644
--- a/modules/openapi-generator/src/test/resources/3_0/issue_7613.yaml
+++ b/modules/openapi-generator/src/test/resources/3_0/issue_7613.yaml
@@ -354,4 +354,26 @@ components:
required:
- a
- b
+ ArrayWithObjectWithPropsInItems:
+ type: array
+ items:
+ type: object
+ properties:
+ a:
+ type: string
+ minLength: 1
+ b:
+ type: string
+ minLength: 1
+ ObjectWithObjectWithPropsInAdditionalProperties:
+ type: object
+ additionalProperties:
+ type: object
+ properties:
+ a:
+ type: string
+ minLength: 1
+ b:
+ type: string
+ minLength: 1
securitySchemes: {}
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/python-experimental/.coverage b/samples/openapi3/client/petstore/python-experimental/.coverage
deleted file mode 100644
index 5955fbda978e..000000000000
Binary files a/samples/openapi3/client/petstore/python-experimental/.coverage and /dev/null differ
diff --git a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java
index ae55bb6cd94d..c8a8a1bf671f 100644
--- a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java
+++ b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java
@@ -541,10 +541,10 @@ public interface PathHandlerInterface {
* Response headers: [CodegenProperty{openApiType='integer', baseName='X-Rate-Limit', complexType='null', getter='getxRateLimit', setter='setxRateLimit', description='calls per hour allowed by the user', dataType='Integer', datatypeWithEnum='Integer', dataFormat='int32', name='xRateLimit', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Rate-Limit;', baseType='Integer', containerType='null', title='null', unescapedDescription='calls per hour allowed by the user', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{
"type" : "integer",
"format" : "int32"
-}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isLong=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when toekn expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when toekn expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{
+}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isLong=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when toekn expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when toekn expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{
"type" : "string",
"format" : "date-time"
-}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isLong=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false}]
+}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isLong=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false}]
*
* Produces: [{mediaType=application/xml}, {mediaType=application/json}]
* Returns: {@link String}