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

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

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 to_json(schema: Schema) -> json.Json

Convert a Schema to JSON value

pub fn to_json_string(schema: Schema) -> String

Convert a Schema to JSON string

pub fn type_constraint(type_: SchemaType) -> SchemaDefinition

Helper to create a basic type constraint

Search Document