Backplane.JsonSchema

JSON Schema Draft 2020-12 and Draft 7 AST compiler and validator for Backplane.

Features

Installation

Add :backplane_json_schema to your dependencies:

def deps do
  [
    {:backplane_json_schema, "~> 1.10"}
  ]
end

Usage

schema = %{
  "type" => "object",
  "properties" => %{
    "name" => %{"type" => "string"},
    "age" => %{"type" => "integer", "minimum" => 0}
  },
  "required" => ["name"]
}

# Compile schema
{:ok, compiled} = Backplane.JsonSchema.compile(schema)

# Validate payload
:ok = Backplane.JsonSchema.validate(compiled, %{"name" => "Alice", "age" => 30})

# Invalid payload returns errors
{:error, errors} = Backplane.JsonSchema.validate(compiled, %{"age" => -5})
formatted = Backplane.JsonSchema.format_error(hd(errors))

License

Apache-2.0