json/blueprint/schema
Types
Represents a complete JSON Schema document
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))), )
Core schema definition that can be used recursively
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
Represents the allowed basic JSON Schema types
pub type SchemaType {
Null
BooleanType
ObjectType
ArrayType
NumberType
StringType
IntegerType
Multiple(List(SchemaType))
}
Constructors
-
Null -
BooleanType -
ObjectType -
ArrayType -
NumberType -
StringType -
IntegerType -
Multiple(List(SchemaType))
Common string formats defined in the spec
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
Helper function to create a new schema with default values
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
Helper to create a number constraint
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
Helper to create a string constraint
pub fn type_constraint(type_: SchemaType) -> SchemaDefinition
Helper to create a basic type constraint