{"id":32172721,"url":"https://github.com/gridpoint-com/ostara","last_synced_at":"2026-02-21T12:01:28.149Z","repository":{"id":145473947,"uuid":"614994941","full_name":"gridpoint-com/ostara","owner":"gridpoint-com","description":"🐇 Transform Ecto schemas into JSON Schemas","archived":false,"fork":false,"pushed_at":"2024-10-21T19:16:13.000Z","size":69,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-10-21T18:44:37.922Z","etag":null,"topics":["ecto","elixir","json-schema"],"latest_commit_sha":null,"homepage":"https://hex.pm/packages/ostara","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gridpoint-com.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-03-16T18:27:59.000Z","updated_at":"2025-07-24T05:42:30.000Z","dependencies_parsed_at":"2024-01-31T19:11:14.430Z","dependency_job_id":null,"html_url":"https://github.com/gridpoint-com/ostara","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/gridpoint-com/ostara","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridpoint-com%2Fostara","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridpoint-com%2Fostara/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridpoint-com%2Fostara/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridpoint-com%2Fostara/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridpoint-com","download_url":"https://codeload.github.com/gridpoint-com/ostara/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridpoint-com%2Fostara/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29680147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T11:29:27.227Z","status":"ssl_error","status_checked_at":"2026-02-21T11:29:20.292Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecto","elixir","json-schema"],"created_at":"2025-10-21T18:42:44.767Z","updated_at":"2026-02-21T12:01:28.144Z","avatar_url":"https://github.com/gridpoint-com.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ostara\n\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)][Contributor Covenant]\n\nTransforms [Ecto] schema modules into [JSON Schema] structures.\n\n\u003cimg alt=\"Ostara by Johannes Gehrts\" width=\"300\" src=\"https://user-images.githubusercontent.com/423798/225761092-d57dda99-528b-40f1-b3d3-88615321afe3.jpg\"\u003e\n\n[Ostara _(1901) by Johannes Gehrts_][art]\n\n**Note:** Ostara is under active development and does not yet support all features of Ecto or the full JSON Schema specification. Contributions are welcome!\n\n## Example\n\nGiven the following schema module:\n\n```elixir\ndefmodule Product do\n  @moduledoc \"A product from Acme's catalog\"\n  use Ecto.Schema\n\n  @primary_key false\n\n  embedded_schema do\n    field :product_name, :string\n    field :price, :float\n  end\n\n  def changeset(data, params) do\n    data\n    |\u003e cast(params, [:product_name, :price])\n    |\u003e validate_required([:product_name])\n    |\u003e validate_number(:price, greater_than: 0)\n  end\nend\n```\n\nOstara will produce the following JSON data:\n\n```elixir\n%{\n  \"$schema\" =\u003e \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\" =\u003e \"product\",\n  \"title\" =\u003e \"Product\",\n  \"type\" =\u003e \"object\",\n  \"description\" =\u003e \"A product from Acme's catalog\",\n  \"properties\" =\u003e %{\n    \"product_name\" =\u003e %{\n      \"type\" =\u003e \"string\"\n    },\n    \"price\" =\u003e %{\n      \"type\" =\u003e \"number\",\n      \"exclusiveMinimum\" =\u003e 0\n    }\n  },\n  \"required\" =\u003e [\"product_name\"]\n}\n```\n\n## Installation\n\nOstara is [available in Hex] and can be installed by adding `ostara` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:ostara, \"~\u003e 0.4.0\"}\n  ]\nend\n```\n\n## License\n\nOstara source code is released under Apache License 2.0. See\n[LICENSE][LICENSE] for more information.\n\n[Contributor Covenant]: https://github.com/gridpoint-com/ostara/blob/main/CODE_OF_CONDUCT.md\n[Ecto]: https://hexdocs.pm/ecto/Ecto.html\n[JSON Schema]: https://json-schema.org/\n[LICENSE]: https://github.com/gridpoint-com/ostara/blob/main/LICENSE\n[art]: https://commons.wikimedia.org/wiki/File:Ostara_by_Johannes_Gehrts.jpg\n[available in Hex]: https://hex.pm/ostara\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgridpoint-com%2Fostara","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgridpoint-com%2Fostara","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgridpoint-com%2Fostara/lists"}