json/blueprint/schema
JSON Schema documents for the 1.x json/blueprint.Decoder.
Schema and SchemaDefinition describe the schemas that 1.x decoders
produce, including $ref and $defs for recursive types, and to_json
renders a document whose $schema is json_schema_version, the Draft-07
URI. json/blueprint.generate_json_schema calls it. Codecs from
json/blueprint/codec use their own codec.Schema and render Draft
2020-12 instead.
Types
A legacy schema definition and optional document annotations.
pub type Schema {
Schema(
schema: SchemaDefinition,
vocabulary: option.Option(List(String)),
id: option.Option(String),
comment: option.Option(String),
defs: option.Option(List(#(String, SchemaDefinition))),
)
}
Constructors
-
Schema( schema: SchemaDefinition, vocabulary: option.Option(List(String)), id: option.Option(String), comment: option.Option(String), defs: option.Option(List(#(String, SchemaDefinition))), )
A legacy schema description; nested definitions may contain references.
pub type SchemaDefinition {
Type(type_: SchemaType)
Enum(values: List(json.Json), type_: option.Option(SchemaType))
Const(value: json.Json)
Nullable(schema: SchemaDefinition)
Optional(schema: SchemaDefinition)
Number(
minimum: option.Option(Float),
maximum: option.Option(Float),
exclusive_minimum: option.Option(Float),
exclusive_maximum: option.Option(Float),
multiple_of: option.Option(Float),
)
String(
min_length: option.Option(Int),
max_length: option.Option(Int),
pattern: option.Option(String),
format: option.Option(StringFormat),
)
Array(items: option.Option(SchemaDefinition))
DetailedArray(
items: option.Option(SchemaDefinition),
prefix_items: option.Option(List(SchemaDefinition)),
min_items: option.Option(Int),
max_items: option.Option(Int),
unique_items: option.Option(Bool),
contains: option.Option(SchemaDefinition),
min_contains: option.Option(Int),
max_contains: option.Option(Int),
)
Object(
properties: List(#(String, SchemaDefinition)),
additional_properties: option.Option(Bool),
required: option.Option(List(String)),
)
DetailedObject(
properties: option.Option(List(#(String, SchemaDefinition))),
pattern_properties: option.Option(
List(#(String, SchemaDefinition)),
),
additional_properties: option.Option(SchemaDefinition),
required: option.Option(List(String)),
property_names: option.Option(SchemaDefinition),
min_properties: option.Option(Int),
max_properties: option.Option(Int),
)
AllOf(schemas: List(SchemaDefinition))
AnyOf(schemas: List(SchemaDefinition))
OneOf(schemas: List(SchemaDefinition))
Not(schema: SchemaDefinition)
Ref(ref: String)
TrueValue
FalseValue
}
Constructors
-
Type(type_: SchemaType) -
Enum(values: List(json.Json), type_: option.Option(SchemaType)) -
Const(value: json.Json) -
Nullable(schema: SchemaDefinition) -
Optional(schema: SchemaDefinition) -
Number( minimum: option.Option(Float), maximum: option.Option(Float), exclusive_minimum: option.Option(Float), exclusive_maximum: option.Option(Float), multiple_of: option.Option(Float), ) -
String( min_length: option.Option(Int), max_length: option.Option(Int), pattern: option.Option(String), format: option.Option(StringFormat), ) -
Array(items: option.Option(SchemaDefinition)) -
DetailedArray( items: option.Option(SchemaDefinition), prefix_items: option.Option(List(SchemaDefinition)), min_items: option.Option(Int), max_items: option.Option(Int), unique_items: option.Option(Bool), contains: option.Option(SchemaDefinition), min_contains: option.Option(Int), max_contains: option.Option(Int), ) -
Object( properties: List(#(String, SchemaDefinition)), additional_properties: option.Option(Bool), required: option.Option(List(String)), ) -
DetailedObject( properties: option.Option(List(#(String, SchemaDefinition))), pattern_properties: option.Option( List(#(String, SchemaDefinition)), ), additional_properties: option.Option(SchemaDefinition), required: option.Option(List(String)), property_names: option.Option(SchemaDefinition), min_properties: option.Option(Int), max_properties: option.Option(Int), ) -
AllOf(schemas: List(SchemaDefinition)) -
AnyOf(schemas: List(SchemaDefinition)) -
OneOf(schemas: List(SchemaDefinition)) -
Not(schema: SchemaDefinition) -
Ref(ref: String) -
TrueValue -
FalseValue
JSON types used by the legacy renderer.
pub type SchemaType {
Null
BooleanType
ObjectType
ArrayType
NumberType
StringType
IntegerType
Multiple(List(SchemaType))
}
Constructors
-
Null -
BooleanType -
ObjectType -
ArrayType -
NumberType -
StringType -
IntegerType -
Multiple(List(SchemaType))
String format labels emitted by the legacy renderer.
pub type StringFormat {
DateTime
Date
Time
Duration
Email
IdnEmail
Hostname
IdnHostname
Ipv4
Ipv6
Uri
UriReference
Iri
IriReference
UriTemplate
JsonPointer
RelativeJsonPointer
Regex
}
Constructors
-
DateTime -
Date -
Time -
Duration -
Email -
IdnEmail -
Hostname -
IdnHostname -
Ipv4 -
Ipv6 -
Uri -
UriReference -
Iri -
IriReference -
UriTemplate -
JsonPointer -
RelativeJsonPointer -
Regex
Values
pub fn hash_schema_definition(def: SchemaDefinition) -> String
pub const json_schema_version: String
pub fn map_ref(
def: SchemaDefinition,
f: fn(String) -> String,
) -> SchemaDefinition
pub fn new_schema(
definition: SchemaDefinition,
references: option.Option(List(#(String, SchemaDefinition))),
) -> Schema
Build a schema document with optional named definitions.
pub fn number_constraint(
minimum minimum: option.Option(Float),
maximum maximum: option.Option(Float),
exclusive_minimum exclusive_minimum: option.Option(Float),
exclusive_maximum exclusive_maximum: option.Option(Float),
multiple_of multiple_of: option.Option(Float),
) -> SchemaDefinition
Describe optional bounds and a multiple constraint for numbers.
pub fn string_constraint(
min_length min_length: option.Option(Int),
max_length max_length: option.Option(Int),
pattern pattern: option.Option(String),
format format: option.Option(StringFormat),
) -> SchemaDefinition
Describe optional string length, pattern, and format constraints.
pub fn type_constraint(type_: SchemaType) -> SchemaDefinition
Describe a JSON type.