Annotation Type Schema
-
@Target({FIELD,METHOD,PARAMETER,TYPE}) @Retention(RUNTIME) @Inherited public @interface Schema
The Schema Object allows the definition of input and output data types. These types can be objects, but also primitives and arrays. This object is an extended subset of the JSON Schema draft specification 2020-12.Defining subschemas
Some of the parameters on this annotation correspond to parts of an OpenAPI document where a subschema is expected, for example
allOf(),contains()andpropertyNames(). Due to limitations in the Java language, we can't use a second@Schemaannotation, so instead we allow a class to be provided. A schema will be generated from that class by introspecting its annotations, methods and fields.In addition, several special values can be used:
Schema.Trueto indicate a booleantrueschema (accepts anything)Schema.Falseto indicate a booleanfalseschema (accepts nothing)Voidto indicate that the schema should not be included at all (this is the default for most parameters)
- See Also:
- OpenAPI Specification Schema Object
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description Class<?>additionalPropertiesProvides a Java class as implementation for additional properties that may be present in instances of this schema.Class<?>[]allOfProvides an array of java class implementations which can be used to describe multiple acceptable schemas.Class<?>[]anyOfProvides an array of java class implementations which can be used to describe multiple acceptable schemas.StringcommentA comment to be included in the schemaStringconstValueRequires that the instance must be a specific value.Class<?>containsA schema which at least one element of an array instance must validate against.StringcontentEncodingThe encoding used to allow binary data to be stored in a string.StringcontentMediaTypeThe media type of the data in a string.Class<?>contentSchemaThe schema that data in a string must validate against.StringdefaultValueProvides a default value.DependentRequired[]dependentRequiredSpecifies that certain properties must be present if other properties are present.DependentSchema[]dependentSchemasSchemas which an instance must validate against if the instance has certain properties.booleandeprecatedSpecifies that a schema is deprecated and SHOULD be transitioned out of usage.StringdescriptionA description of the schema.DiscriminatorMapping[]discriminatorMappingAn array of discriminator mappings.StringdiscriminatorPropertyProvides a discriminator property value.Class<?>elseSchemaA class used to create a schema that an instance must validate against if it does not validate against theifschema.String[]enumerationProvides a list of enum values.StringexampleDeprecated.useexamples()String[]examplesA free-form property to include examples of an instance for this schema.booleanexclusiveMaximumIf true, makes the maximum value exclusive, or a less-than criteria.booleanexclusiveMinimumIf true, makes the minimum value exclusive, or a greater-than criteria.Extension[]extensionsList of extensions to be added to theSchemamodel corresponding to the containing annotation.ExternalDocumentationexternalDocsAdditional external documentation for this schema.StringformatProvides an optional override for the format.booleanhiddenAllows schema to be marked as hidden.Class<?>ifSchemaA class used to create a schema used to control conditional evaluation.Class<?>implementationProvides a java class as implementation for this schema.intmaxContainsSpecifies the maximum number of elements which may validate against thecontains()schema.StringmaximumSets the maximum numeric value for a property.intmaxItemsOnly applicable if type=array.intmaxLengthSets the maximum length of a string value.intmaxPropertiesConstrains the number of arbitrary properties when additionalProperties is defined.intminContainsSpecifies the minimum number of elements which must validate against thecontains()schema.StringminimumSets the minimum numeric value for a property.intminItemsOnly applicable if type=array.intminLengthSets the minimum length of a string value.intminPropertiesConstrains the number of arbitrary properties when additionalProperties is defined.doublemultipleOfConstrains a value such that when divided by the multipleOf, the result must be an integer.StringnameThe name of the schema or property.Class<?>notProvides a java class to be used to disallow matching properties.booleannullableAllows sending a null value for the defined schema.Class<?>[]oneOfProvides an array of java class implementations which can be used to describe multiple acceptable schemas.StringpatternA regular expression that the value must satisfy.PatternProperty[]patternPropertiesApplies subschemas against properties matched by regular expressions.Class<?>[]prefixItemsSchemas which the leading elements of an array instance must validate against.SchemaProperty[]propertiesProvides a list of properties present in this schema.Class<?>propertyNamesA schema which the names of properties of an object instance must validate against.booleanreadOnlyDeclares the property as "read only".StringrefReference value to a Schema definition.booleanrequiredSpecifies whether the annotated item is required or not.String[]requiredPropertiesAllows multiple properties in an object to be marked as required.Class<?>thenSchemaA class used to create a schema that an instance must validate against if it validates against theifschema.StringtitleA title to explain the purpose of the schema.SchemaTypetypeProvides an override for the basic type of the schema.booleanuniqueItemsOnly applicable if type=array.booleanwriteOnlyDeclares the property as "write only".
-
-
-
Element Detail
-
implementation
Class<?> implementation
Provides a java class as implementation for this schema. When provided, additional information in the Schema annotation (except for type information) will augment the java class after introspection.- Returns:
- a class that implements this schema
- Default:
- java.lang.Void.class
-
-
-
not
Class<?> not
Provides a java class to be used to disallow matching properties. Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema.- Returns:
- a class with disallowed properties
- Default:
- java.lang.Void.class
-
-
-
oneOf
Class<?>[] oneOf
Provides an array of java class implementations which can be used to describe multiple acceptable schemas. If more than one match the derived schemas, a validation error will occur.- Returns:
- the list of possible classes for a single match
- Default:
- {}
-
-
-
anyOf
Class<?>[] anyOf
Provides an array of java class implementations which can be used to describe multiple acceptable schemas. If any match, the schema will be considered valid.- Returns:
- the list of possible class matches
- Default:
- {}
-
-
-
allOf
Class<?>[] allOf
Provides an array of java class implementations which can be used to describe multiple acceptable schemas. If all match, the schema will be considered valid.- Returns:
- the list of classes to match
- Default:
- {}
-
-
-
name
String name
The name of the schema or property.The name is REQUIRED when the schema is defined within
Components. The name will be used as the key to add this schema to the 'schemas' map for reuse.- Returns:
- the name of the schema
- Default:
- ""
-
-
-
title
String title
A title to explain the purpose of the schema.- Returns:
- the title of the schema
- Default:
- ""
-
-
-
maximum
String maximum
Sets the maximum numeric value for a property. Value must be a valid number. Ignored if the value is an empty string or not a number.- Returns:
- the maximum value for this schema
- Default:
- ""
-
-
-
minimum
String minimum
Sets the minimum numeric value for a property. Value must be a valid number. Ignored if the value is an empty string or not a number.- Returns:
- the minimum value for this schema
- Default:
- ""
-
-
-
pattern
String pattern
A regular expression that the value must satisfy. Ignored if the value is an empty string.If the instance is a string, the regular expression must match the instance.
- Returns:
- the ECMA-262 regular expression to match against
- Default:
- ""
-
-
-
requiredProperties
String[] requiredProperties
Allows multiple properties in an object to be marked as required.- Returns:
- the list of required schema properties
- Default:
- {}
-
-
-
description
String description
A description of the schema.- Returns:
- this schema's description
- Default:
- ""
-
-
-
format
String format
Provides an optional override for the format.If a consumer is unaware of the meaning of the format, they shall fall back to using the basic type without format. For example, if \"type: integer, format: int128\" were used to designate a very large integer, most consumers will not understand how to handle it, and fall back to simply \"type: integer\"
- Returns:
- this schema's format
- Default:
- ""
-
-
-
ref
String ref
Reference value to a Schema definition.This property provides a reference to an object defined elsewhere.
Unlike
refon most MP OpenAPI annotations, this property is not mutually exclusive with other properties.- Returns:
- a reference to a schema definition
- Default:
- ""
-
-
-
readOnly
boolean readOnly
Declares the property as "read only". This means that it MAY be sent as part of a response but SHOULD NOT be sent as part of the request.If the property is marked as readOnly being true and is in the required list, the required will take effect on the response only. A property MUST NOT be marked as both readOnly and writeOnly being true.
- Returns:
- whether or not this schema is read only
- Default:
- false
-
-
-
writeOnly
boolean writeOnly
Declares the property as "write only". This means that it MAY be sent as part of a request but SHOULD NOT be sent as part of the response.If the property is marked as writeOnly being true and is in the required list, the required will take effect on the request only. A property MUST NOT be marked as both readOnly and writeOnly being true.
- Returns:
- whether or not this schema is write only
- Default:
- false
-
-
-
example
@Deprecated(since="4.0") String example
Deprecated.useexamples()A free-form property to include an example of an instance for this schema.- Returns:
- an example of this schema
- Default:
- ""
-
-
-
examples
String[] examples
A free-form property to include examples of an instance for this schema.Each example SHOULD validate against this schema.
If the schema
type()is STRING, the value will be interpreted as a literal string, otherwise it will be parsed as JSON.- Returns:
- an array of examples of this schema
- Since:
- 4.0
- Default:
- {}
-
-
-
externalDocs
ExternalDocumentation externalDocs
Additional external documentation for this schema.- Returns:
- additional schema documentation
- Default:
- @org.eclipse.microprofile.openapi.annotations.ExternalDocumentation
-
-
-
type
SchemaType type
Provides an override for the basic type of the schema.Value MUST be a string. Multiple types via an array are not supported.
MUST be a valid type per the OpenAPI Specification.- Returns:
- the type of this schema
- Default:
- org.eclipse.microprofile.openapi.annotations.enums.SchemaType.DEFAULT
-
-
-
enumeration
String[] enumeration
Provides a list of enum values. Corresponds to the enum property in the OAS schema and the enumeration property in the schema model.- Returns:
- a list of allowed schema values
- Default:
- {}
-
-
-
defaultValue
String defaultValue
Provides a default value. The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided.Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level.
For example, if type is string, then default can be "foo" but cannot be 1.- Returns:
- the default value of this schema
- Default:
- ""
-
-
-
discriminatorProperty
String discriminatorProperty
Provides a discriminator property value. Adds support for polymorphism.The discriminator is an object name that is used to differentiate between other schemas which may satisfy the payload description.
- Returns:
- the discriminator property
- Default:
- ""
-
-
-
discriminatorMapping
DiscriminatorMapping[] discriminatorMapping
An array of discriminator mappings.- Returns:
- the discriminator mappings for this schema
- Default:
- {}
-
-
-
hidden
boolean hidden
Allows schema to be marked as hidden.- Returns:
- whether or not this schema is hidden
- Default:
- false
-
-
-
maxItems
int maxItems
Only applicable if type=array. Sets the maximum number of items in an array. This integer MUST be greater than, or equal to, 0.An array instance is valid against "maxItems" if its size is less than, or equal to, the value of this keyword.
Ignored if value is Integer.MIN_VALUE.- Returns:
- the maximum number of items in this array
- Default:
- -2147483648
-
-
-
minItems
int minItems
Only applicable if type=array. Sets the minimum number of items in an array. This integer MUST be greater than, or equal to, 0.An array instance is valid against "minItems" if its size is greater than, or equal to, the value of this keyword.
Ignored if value is Integer.MAX_VALUE.- Returns:
- the minimum number of items in this array
- Default:
- 2147483647
-
-
-
uniqueItems
boolean uniqueItems
Only applicable if type=array. Determines if the items in the array SHOULD be unique.If false, the instance validates successfully. If true, the instance validates successfully if all of its elements are unique.
- Returns:
- whether the items in this array are unique
- Default:
- false
-
-
-
properties
SchemaProperty[] properties
Provides a list of properties present in this schema. Use of the properties list does not preclude the annotation scanning runtime from also including other properties found in the scan process. For example, if animplementationis also specified, the final set of properties used by the annotation scanner will include properties from both this list and those found from introspection of the implementation class, if any.In the case where properties are specified here in addition to an
implementation, the attributes given for a property using aSchemaPropertywill override the same attributes scanned (or derived) from the implementation class.Example:
@Schema(properties = { @SchemaProperty(name = "creditCard", example = "4567100043210001"), @SchemaProperty(name = "departureFlight", description = "The departure flight information."), @SchemaProperty(name = "returningFlight") })- Returns:
- a list of defined properties
- Since:
- 2.0
- Default:
- {}
-
-
-
additionalProperties
Class<?> additionalProperties
Provides a Java class as implementation for additional properties that may be present in instances of this schema.If no additional properties are allowed, the value of this property should be set to
False.classwhich will be rendered as booleanfalsein the resulting OpenAPI document.The default value
Void.classwill result in noadditionalPropertiesattribute being generated in the resulting OpenAPI document. The effective value in that case istrueper the OpenAPI specification.Implementations MAY ignore this property if this schema's type is not OBJECT, either explicitly or as derived by the placement of the annotation.
- Returns:
- a class that describes the allowable schema for additional properties not explicitly defined
- Since:
- 3.1
- See Also:
Schema.True,Schema.False
- Default:
- java.lang.Void.class
-
-
-
comment
String comment
A comment to be included in the schemaThis value is set in the
$commentproperty of the schema object- Returns:
- the comment
- Since:
- 4.0
- Default:
- ""
-
-
-
constValue
String constValue
Requires that the instance must be a specific value. No other values are permitted.The value is parsed as JSON if the schema type is anything other than STRING.
- Returns:
- the value which the instance must be equal to, expressed according to the type of the schema
- Since:
- 4.0
- Default:
- ""
-
-
-
ifSchema
Class<?> ifSchema
A class used to create a schema used to control conditional evaluation. If an instance validates against theifschema then it must also validate against thethenschema. Otherwise it must validate against theelseschema.- Returns:
- a class used to create the
ifschema - Since:
- 4.0
- See Also:
thenSchema(),elseSchema()
- Default:
- java.lang.Void.class
-
-
-
thenSchema
Class<?> thenSchema
A class used to create a schema that an instance must validate against if it validates against theifschema.- Returns:
- a class used to create the
thenschema - Since:
- 4.0
- See Also:
ifSchema(),elseSchema()
- Default:
- java.lang.Void.class
-
-
-
elseSchema
Class<?> elseSchema
A class used to create a schema that an instance must validate against if it does not validate against theifschema.- Returns:
- a class used to create the
elseschema - Since:
- 4.0
- See Also:
ifSchema(),thenSchema()
- Default:
- java.lang.Void.class
-
-
-
dependentSchemas
DependentSchema[] dependentSchemas
Schemas which an instance must validate against if the instance has certain properties.For each
DependentSchemalisted, if the instance is an object which has a property namedname()then the instance must validate against the schema created fromschema().- Returns:
- an array of DependentSchema entries
- Since:
- 4.0
- Default:
- {}
-
-
-
contains
Class<?> contains
A schema which at least one element of an array instance must validate against.The class is used to create a schema. If the instance is an array, then at least one element of the array must validate against the schema.
- Returns:
- a class used to create a schema which at least one element of an array instance must validate against
- Since:
- 4.0
- Default:
- java.lang.Void.class
-
-
-
maxContains
int maxContains
Specifies the maximum number of elements which may validate against thecontains()schema.If more than this number of elements of an array instance match the
containsschema, the instance does not validate against this schema.- Returns:
- the maximum number of elements which may validate against the
contains()schema - Since:
- 4.0
- Default:
- 2147483647
-
-
-
minContains
int minContains
Specifies the minimum number of elements which must validate against thecontains()schema.If fewer than this number of elements of an array instance match the
containsschema, the instance does not validate against this schema.- Returns:
- the minimum number of elements which must validate against the
contains()schema - Since:
- 4.0
- Default:
- 0
-
-
-
prefixItems
Class<?>[] prefixItems
Schemas which the leading elements of an array instance must validate against.The array of classes is used to create an array of schemas. If an instance is an array, the first element of the array must validate against the first schema, the second element must validate against the second schema and so on.
- Returns:
- an array of classes used to create an array of schemas used to validate the leading elements of an array instance
- Since:
- 4.0
- Default:
- {}
-
-
-
patternProperties
PatternProperty[] patternProperties
Applies subschemas against properties matched by regular expressions.For each
PatternPropertylisted, for each property whose name matches| regex(), its value must validate against the schema created fromschema().- Returns:
- a mapping from regular expressions to schemas
- Since:
- 4.0
- Default:
- {}
-
-
-
dependentRequired
DependentRequired[] dependentRequired
Specifies that certain properties must be present if other properties are present.For each
DependentRequiredentry in the list, if the instance is an object and has a property namedDependentRequired.name()then it must also have property named for each entry ofDependentRequired.requires()to validate against this schema.- Returns:
- the properties required if certain other properties are present
- Since:
- 4.0
- Default:
- {}
-
-
-
propertyNames
Class<?> propertyNames
A schema which the names of properties of an object instance must validate against.The class is used to create a schema. If the instance is an object, then the name of each property in the instance must validate against the schema.
- Returns:
- a schema that property names must validate against
- Since:
- 4.0
- Default:
- java.lang.Void.class
-
-
-
contentEncoding
String contentEncoding
The encoding used to allow binary data to be stored in a string.If the instance is a string, this property specifies that it contains binary data encoded as text using the specified encoding (e.g. base64).
- Returns:
- the encoding
- Since:
- 4.0
- Default:
- ""
-
-
-
contentMediaType
String contentMediaType
The media type of the data in a string.If the instance is a string, this property specifies the media type of the data it contains. If
contentEncoding()is also set, it specifies the media type of the decoded string.- Returns:
- the media type of the data in a string
- Since:
- 4.0
- Default:
- ""
-
-
-
contentSchema
Class<?> contentSchema
The schema that data in a string must validate against.The class is used to create a schema. If the instance is a string and
contentMediaType()is set, the data must validate against the schema when interpreted as the given media type.- Returns:
- a class used to create a schema used to validate the data in a string
- Since:
- 4.0
- Default:
- java.lang.Void.class
-
-