Transforms Ecto schema modules into JSON Schema structures.
Ostara (1901) by Johannes Gehrts
Note: Ostara is under active development and does not yet support all features of Ecto or the full JSON Schema specification. Contributions are welcome!
Given the following schema module:
defmodule Product do
@moduledoc "A product from Acme's catalog"
use Ecto.Schema
@primary_key false
embedded_schema do
field :product_name, :string
field :price, :float
end
def changeset(data, params) do
data
|> cast(params, [:product_name, :price])
|> validate_required([:product_name])
|> validate_number(:price, greater_than: 0)
end
end
Ostara will produce the following JSON data:
%{
"$schema" => "https://json-schema.org/draft/2020-12/schema",
"$id" => "product",
"title" => "Product",
"type" => "object",
"description" => "A product from Acme's catalog",
"properties" => %{
"product_name" => %{
"type" => "string"
},
"price" => %{
"type" => "number",
"exclusiveMinimum" => 0
}
},
"required" => ["product_name"]
}
Ostara is available in Hex and can be installed by adding ostara
to your list of dependencies in mix.exs
:
def deps do
[
{:ostara, "~> 0.4.0"}
]
end
Ostara source code is released under Apache License 2.0. See LICENSE for more information.