package com.fasterxml.jackson.databind.jsonschema;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

import com.fasterxml.jackson.annotation.JacksonAnnotation;

Annotation that can be used to define JSON Schema definition for the annotated class.

Note that annotation is often not needed: for example, regular Jackson beans that Jackson can introspect can be used without annotations, to produce JSON schema definition.

Author:Ryan Heaton, Tatu Saloranta
/** * Annotation that can be used to define JSON Schema definition for * the annotated class. *<p> * Note that annotation is often not needed: for example, regular * Jackson beans that Jackson can introspect can be used without * annotations, to produce JSON schema definition. * * @author Ryan Heaton * @author Tatu Saloranta */
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @JacksonAnnotation public @interface JsonSerializableSchema {
Marker value used to indicate that property has "no value"; needed because annotations cannot have null as default value.
/** * Marker value used to indicate that property has "no value"; * needed because annotations cannot have null as default * value. */
public final static String NO_VALUE = "##irrelevant";
Property that can be used to indicate id of the type when generating JSON Schema; empty String indicates that no id is defined.
/** * Property that can be used to indicate id of the type when * generating JSON Schema; empty String indicates that no id * is defined. */
public String id() default "";
The schema type for this JsonSerializable instance. Possible values: "string", "number", "boolean", "object", "array", "null", "any"
Returns:The schema type for this JsonSerializable instance.
/** * The schema type for this JsonSerializable instance. * Possible values: "string", "number", "boolean", "object", "array", "null", "any" * * @return The schema type for this JsonSerializable instance. */
public String schemaType() default "any";
If the schema type is "object", JSON definition of properties of the object as a String.
Returns:The node representing the schema properties, or "##irrelevant" if irrelevant.
Deprecated:(since 2.1) -- support will be dropped in future, since JSON-as-String is fundamentally bad way for customizing anything. No direct replacements offered.
/** * If the schema type is "object", JSON definition of properties of the object as * a String. * * @return The node representing the schema properties, or "##irrelevant" if irrelevant. * * @deprecated (since 2.1) -- support will be dropped in future, since JSON-as-String is * fundamentally bad way for customizing anything. No direct replacements offered. */
@Deprecated public String schemaObjectPropertiesDefinition() default NO_VALUE;
If the schema type if "array", JSON definition of the schema for item types contained.
Returns:The schema for the items in the array, or "##irrelevant" if irrelevant.
Deprecated:(since 2.1) -- support will be dropped in future, since JSON-as-String is fundamentally bad way for customizing anything. No direct replacements offered.
/** * If the schema type if "array", JSON definition of the schema for item types contained. * * @return The schema for the items in the array, or "##irrelevant" if irrelevant. * * @deprecated (since 2.1) -- support will be dropped in future, since JSON-as-String is * fundamentally bad way for customizing anything. No direct replacements offered. */
@Deprecated public String schemaItemDefinition() default NO_VALUE; }