https://github.com/davishmcclurg/json_schemer
JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI 3.0, and OpenAPI 3.1.
https://github.com/davishmcclurg/json_schemer
Keywords
json-schema json-validation ruby
Keywords from Contributors
rubygems rspec marshalling activerecord sinatra sidekiq jobs background-jobs coverage coverage-library
Last synced: about 23 hours ago
JSON representation
Repository metadata
JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI 3.0, and OpenAPI 3.1.
- Host: GitHub
- URL: https://github.com/davishmcclurg/json_schemer
- Owner: davishmcclurg
- License: mit
- Created: 2018-01-23T08:31:51.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2025-12-09T06:16:26.000Z (3 months ago)
- Last Synced: 2026-02-24T01:47:14.743Z (8 days ago)
- Topics: json-schema, json-validation, ruby
- Language: Ruby
- Homepage:
- Size: 1.16 MB
- Stars: 467
- Watchers: 10
- Forks: 66
- Open Issues: 12
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
README.md
JSONSchemer
JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI 3.0, and OpenAPI 3.1.
Installation
Add this line to your application's Gemfile:
gem 'json_schemer'
And then execute:
$ bundle
Or install it yourself as:
$ gem install json_schemer
Usage
require 'json_schemer'
schema = {
'type' => 'object',
'properties' => {
'abc' => {
'type' => 'integer',
'minimum' => 11
}
}
}
schemer = JSONSchemer.schema(schema)
# true/false validation
schemer.valid?({ 'abc' => 11 })
# => true
schemer.valid?({ 'abc' => 10 })
# => false
# error validation (`validate` returns an enumerator)
schemer.validate({ 'abc' => 10 }).to_a
# => [{"data"=>10,
# "data_pointer"=>"/abc",
# "schema"=>{"type"=>"integer", "minimum"=>11},
# "schema_pointer"=>"/properties/abc",
# "root_schema"=>{"type"=>"object", "properties"=>{"abc"=>{"type"=>"integer", "minimum"=>11}}},
# "type"=>"minimum",
# "error"=>"number at `/abc` is less than: 11"}]
# default property values
data = {}
JSONSchemer.schema(
{
'properties' => {
'foo' => {
'default' => 'bar'
}
}
},
insert_property_defaults: true
).valid?(data)
data
# => {"foo"=>"bar"}
# schema files
require 'pathname'
schema = Pathname.new('/path/to/schema.json')
schemer = JSONSchemer.schema(schema)
# schema json string
schema = '{ "type": "integer" }'
schemer = JSONSchemer.schema(schema)
# schema validation
JSONSchemer.valid_schema?({ '$id' => 'valid' })
# => true
JSONSchemer.validate_schema({ '$id' => '#invalid' }).to_a
# => [{"data"=>"#invalid",
# "data_pointer"=>"/$id",
# "schema"=>{"$ref"=>"#/$defs/uriReferenceString", "$comment"=>"Non-empty fragments not allowed.", "pattern"=>"^[^#]*#?$"},
# "schema_pointer"=>"/properties/$id",
# "root_schema"=>{...meta schema},
# "type"=>"pattern",
# "error"=>"string at `/$id` does not match pattern: ^[^#]*#?$"}]
# subschemas
schema = {
'type' => 'integer',
'$defs' => {
'foo' => {
'type' => 'string'
}
}
}
schemer = JSONSchemer.schema(schema)
schemer.ref('#/$defs/foo').validate(1).to_a
# => [{"data"=>1,
# "data_pointer"=>"",
# "schema"=>{"type"=>"string"},
# "schema_pointer"=>"/$defs/foo",
# "root_schema"=>{"type"=>"integer", "$defs"=>{"foo"=>{"type"=>"string"}}},
# "type"=>"string",
# "error"=>"value at root is not a string"}]
# schema bundling (https://json-schema.org/draft/2020-12/json-schema-core.html#section-9.3)
schema = {
'$id' => 'http://example.com/schema',
'allOf' => [
{ '$ref' => 'schema/one' },
{ '$ref' => 'schema/two' }
]
}
refs = {
URI('http://example.com/schema/one') => {
'type' => 'integer'
},
URI('http://example.com/schema/two') => {
'minimum' => 11
}
}
schemer = JSONSchemer.schema(schema, :ref_resolver => refs.to_proc)
schemer.bundle
# => {"$id"=>"http://example.com/schema",
# "allOf"=>[{"$ref"=>"schema/one"}, {"$ref"=>"schema/two"}],
# "$schema"=>"https://json-schema.org/draft/2020-12/schema",
# "$defs"=>
# {"http://example.com/schema/one"=>{"type"=>"integer", "$id"=>"http://example.com/schema/one", "$schema"=>"https://json-schema.org/draft/2020-12/schema"},
# "http://example.com/schema/two"=>{"minimum"=>11, "$id"=>"http://example.com/schema/two", "$schema"=>"https://json-schema.org/draft/2020-12/schema"}}}
Options
JSONSchemer.schema(
schema,
# meta schema to use for vocabularies (keyword behavior) and schema validation
# String/JSONSchemer::Schema
# 'https://json-schema.org/draft/2020-12/schema': JSONSchemer.draft202012
# 'https://json-schema.org/draft/2019-09/schema': JSONSchemer.draft201909
# 'http://json-schema.org/draft-07/schema#': JSONSchemer.draft7
# 'http://json-schema.org/draft-06/schema#': JSONSchemer.draft6
# 'http://json-schema.org/draft-04/schema#': JSONSchemer.draft4
# 'http://json-schema.org/schema#': JSONSchemer.draft4
# 'https://spec.openapis.org/oas/3.1/dialect/base': JSONSchemer.openapi31
# 'json-schemer://openapi30/schema': JSONSchemer.openapi30
# default: JSONSchemer.draft202012
meta_schema: 'https://json-schema.org/draft/2020-12/schema',
# validate `format` (https://json-schema.org/draft/2020-12/json-schema-validation.html#section-7)
# true/false
# default: true
format: true,
# custom formats
formats: {
'int32' => proc do |instance, _format|
instance.is_a?(Integer) && instance.bit_length <= 32
end,
# disable specific format
'email' => false
},
# custom content encodings
# only `base64` is available by default
content_encodings: {
# return [success, annotation] tuple
'urlsafe_base64' => proc do |instance|
[true, Base64.urlsafe_decode64(instance)]
rescue
[false, nil]
end
},
# custom content media types
# only `application/json` is available by default
content_media_types: {
# return [success, annotation] tuple
'text/csv' => proc do |instance|
[true, CSV.parse(instance)]
rescue
[false, nil]
end
},
# insert default property values during validation
# string keys by default (use `:symbol` to insert symbol keys)
# true/false/:symbol
# default: false
insert_property_defaults: true,
# modify properties during validation. You can pass one Proc or a list of Procs to modify data.
# Proc/[Proc]
# default: nil
before_property_validation: proc do |data, property, property_schema, _parent|
data[property] ||= 42
end,
# modify properties after validation. You can pass one Proc or a list of Procs to modify data.
# Proc/[Proc]
# default: nil
after_property_validation: proc do |data, property, property_schema, _parent|
data[property] = Date.iso8601(data[property]) if property_schema.is_a?(Hash) && property_schema['format'] == 'date'
end,
# resolve external references
# 'net/http'/proc/lambda/respond_to?(:call)
# 'net/http': proc { |uri| JSON.parse(Net::HTTP.get(uri)) }
# default: proc { |uri| raise UnknownRef, uri.to_s }
ref_resolver: 'net/http',
# use different method to match regexes
# 'ruby'/'ecma'/proc/lambda/respond_to?(:call)
# 'ruby': proc { |pattern| Regexp.new(pattern) }
# default: 'ruby'
regexp_resolver: proc do |pattern|
RE2::Regexp.new(pattern)
end,
# output formatting (https://json-schema.org/draft/2020-12/json-schema-core.html#section-12)
# 'classic'/'flag'/'basic'/'detailed'/'verbose'
# default: 'classic'
output_format: 'basic',
# validate `readOnly`/`writeOnly` keywords (https://spec.openapis.org/oas/v3.0.3#fixed-fields-19)
# 'read'/'write'/nil
# default: nil
access_mode: 'read'
)
Global Configuration
Configuration options can be set globally by modifying JSONSchemer.configuration. Global options are applied to any new schemas at creation time (global configuration changes are not reflected in existing schemas). They can be overridden with the regular keyword arguments described above.
# configuration block
JSONSchemer.configure do |config|
config.regexp_resolver = 'ecma'
end
# configuration accessors
JSONSchemer.configuration.insert_property_defaults = true
Custom Error Messages
Error messages can be customized using the x-error keyword and/or I18n translations. x-error takes precedence if both are defined.
x-error Keyword
# override all errors for a schema
schemer = JSONSchemer.schema({
'type' => 'string',
'x-error' => 'custom error for schema and all keywords'
})
schemer.validate(1).first
# => {"data"=>1,
# "data_pointer"=>"",
# "schema"=>{"type"=>"string", "x-error"=>"custom error for schema and all keywords"},
# "schema_pointer"=>"",
# "root_schema"=>{"type"=>"string", "x-error"=>"custom error for schema and all keywords"},
# "type"=>"string",
# "error"=>"custom error for schema and all keywords",
# "x-error"=>true}
schemer.validate(1, :output_format => 'basic')
# => {"valid"=>false,
# "keywordLocation"=>"",
# "absoluteKeywordLocation"=>"json-schemer://schema#",
# "instanceLocation"=>"",
# "error"=>"custom error for schema and all keywords",
# "x-error"=>true,
# "errors"=>#<Enumerator: ...>}
# keyword-specific errors
schemer = JSONSchemer.schema({
'type' => 'string',
'minLength' => 10,
'x-error' => {
'type' => 'custom error for `type` keyword',
# special `^` keyword for schema-level error
'^' => 'custom error for schema',
# same behavior as when `x-error` is a string
'*' => 'fallback error for schema and all keywords'
}
})
schemer.validate(1).map { _1.fetch('error') }
# => ["custom error for `type` keyword"]
schemer.validate('1').map { _1.fetch('error') }
# => ["custom error for schema and all keywords"]
schemer.validate(1, :output_format => 'basic').fetch('error')
# => "custom error for schema"
# variable interpolation (instance/instanceLocation/formattedInstanceLocation/keywordValue/keywordLocation/absoluteKeywordLocation/details)
schemer = JSONSchemer.schema({
'$id' => 'https://example.com/schema',
'properties' => {
'abc' => {
'type' => 'object',
'required' => ['xyz'],
'x-error' => <<~ERROR
instance: %{instance}
instance location: %{instanceLocation}
formatted instance location: %{formattedInstanceLocation}
keyword value: %{keywordValue}
keyword location: %{keywordLocation}
absolute keyword location: %{absoluteKeywordLocation}
details: %{details}
details__missing_keys: %{details__missing_keys}
ERROR
}
}
})
puts schemer.validate({ 'abc' => {} }).first.fetch('error')
# instance: {}
# instance location: /abc
# formatted instance location: `/abc`
# keyword value: ["xyz"]
# keyword location: /properties/abc/required
# absolute keyword location: https://example.com/schema#/properties/abc/required
# details: {"missing_keys" => ["xyz"]}
# details__missing_keys: ["xyz"]
I18n
When the I18n gem is loaded, custom error messages are looked up under the json_schemer key. It may be necessary to restart your application after adding the root key because the existence check is cached for performance reasons.
Translation keys are looked up in this order:
$LOCALE.json_schemer.errors.$ABSOLUTE_KEYWORD_LOCATION$LOCALE.json_schemer.errors.$SCHEMA_ID.$KEYWORD_LOCATION$LOCALE.json_schemer.errors.$KEYWORD_LOCATION$LOCALE.json_schemer.errors.$SCHEMA_ID.$KEYWORD$LOCALE.json_schemer.errors.$SCHEMA_ID.*$LOCALE.json_schemer.errors.$META_SCHEMA_ID.$KEYWORD$LOCALE.json_schemer.errors.$META_SCHEMA_ID.*$LOCALE.json_schemer.errors.$KEYWORD$LOCALE.json_schemer.errors.*
Example translations file:
en:
json_schemer:
errors:
# variable interpolation (instance/instanceLocation/formattedInstanceLocation/keywordValue/keywordLocation/absoluteKeywordLocation/details)
'https://example.com/schema#/properties/abc/required': |
custom error for absolute keyword location
instance: %{instance}
instance location: %{instanceLocation}
formatted instance location: %{formattedInstanceLocation}
keyword value: %{keywordValue}
keyword location: %{keywordLocation}
absolute keyword location: %{absoluteKeywordLocation}
details: %{details}
details__missing_keys: %{details__missing_keys}
'https://example.com/schema':
'#/properties/abc/required': custom error for keyword location, nested under schema $id
'required': custom error for `required` keyword, nested under schema $id
'^': custom error for schema, nested under schema $id
'*': fallback error for schema and all keywords, nested under schema $id
'#/properties/abc/required': custom error for keyword location
'http://json-schema.org/draft-07/schema#':
'required': custom error for `required` keyword, nested under meta-schema $id ($schema)
'^': custom error for schema, nested under meta-schema $id
'*': fallback error for schema and all keywords, nested under meta-schema $id ($schema)
'required': custom error for `required` keyword
'^': custom error for schema
'*': fallback error for schema and all keywords
And output:
require 'i18n'
I18n.locale = :en # $LOCALE=en
schemer = JSONSchemer.schema({
'$id' => 'https://example.com/schema', # $SCHEMA_ID=https://example.com/schema
'$schema' => 'http://json-schema.org/draft-07/schema#', # $META_SCHEMA_ID=http://json-schema.org/draft-07/schema#
'properties' => {
'abc' => {
'required' => ['xyz'] # $KEYWORD=required
} # $KEYWORD_LOCATION=#/properties/abc/required
} # $ABSOLUTE_KEYWORD_LOCATION=https://example.com/schema#/properties/abc/required
})
schemer.validate({ 'abc' => {} }).first
# => {"data" => {},
# "data_pointer" => "/abc",
# "schema" => {"required" => ["xyz"]},
# "schema_pointer" => "/properties/abc",
# "root_schema" => {"$id" => "https://example.com/schema", "$schema" => "http://json-schema.org/draft-07/schema#", "properties" => {"abc" => {"required" => ["xyz"]}}},
# "type" => "required",
# "error" =>
# "custom error for absolute keyword location\ninstance: {}\ninstance location: /abc\nformatted instance location: `/abc`\nkeyword value: [\"xyz\"]\nkeyword location: /properties/abc/required\nabsolute keyword location: https://example.com/schema#/properties/abc/required\ndetails: {\"missing_keys\" => [\"xyz\"]}\ndetails__missing_keys: [\"xyz\"]\n",
# "i18n" => true,
# "details" => {"missing_keys" => ["xyz"]}}
puts schemer.validate({ 'abc' => {} }).first.fetch('error')
# custom error for absolute keyword location
# instance: {}
# instance location: /abc
# formatted instance location: `/abc`
# keyword value: ["xyz"]
# keyword location: /properties/abc/required
# absolute keyword location: https://example.com/schema#/properties/abc/required
# details: {"missing_keys" => ["xyz"]}
# details__missing_keys: ["xyz"]
In the example above, custom error messsages are looked up using the following keys (in order until one is found):
en.json_schemer.errors.'https://example.com/schema#/properties/abc/required'en.json_schemer.errors.'https://example.com/schema'.'#/properties/abc/required'en.json_schemer.errors.'#/properties/abc/required'en.json_schemer.errors.'https://example.com/schema'.requireden.json_schemer.errors.'https://example.com/schema'.*en.json_schemer.errors.'http://json-schema.org/draft-07/schema#'.requireden.json_schemer.errors.'http://json-schema.org/draft-07/schema#'.*en.json_schemer.errors.requireden.json_schemer.errors.*
OpenAPI
document = JSONSchemer.openapi({
'openapi' => '3.1.0',
'info' => {
'title' => 'example'
},
'components' => {
'schemas' => {
'example' => {
'type' => 'integer'
}
}
}
})
# document validation using meta schema
document.valid?
# => false
document.validate.to_a
# => [{"data"=>{"title"=>"example"},
# "data_pointer"=>"/info",
# "schema"=>{...info schema},
# "schema_pointer"=>"/$defs/info",
# "root_schema"=>{...meta schema},
# "type"=>"required",
# "details"=>{"missing_keys"=>["version"]}},
# ...]
# data validation using schema by name (in `components/schemas`)
document.schema('example').valid?(1)
# => true
document.schema('example').valid?('one')
# => false
# data validation using schema by ref
document.ref('#/components/schemas/example').valid?(1)
# => true
document.ref('#/components/schemas/example').valid?('one')
# => false
CLI
The json_schemer executable takes a JSON schema file as the first argument followed by one or more JSON data files to validate. If there are any validation errors, it outputs them and returns an error code.
Validation errors are output as single-line JSON objects. The --errors option can be used to limit the number of errors returned or prevent output entirely (and fail fast).
The schema or data can also be read from stdin using -.
% json_schemer --help
Usage:
json_schemer [options] <schema> <data>...
json_schemer [options] <schema> -
json_schemer [options] - <data>...
json_schemer -h | --help
json_schemer --version
Options:
-e, --errors MAX Maximum number of errors to output
Use "0" to validate with no output
-h, --help Show help
-v, --version Show version
Development
After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
Build Status
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/davishmcclurg/json_schemer.
License
The gem is available as open source under the terms of the MIT License.
Owner metadata
- Name: David Harsha
- Login: davishmcclurg
- Email:
- Kind: user
- Description:
- Website:
- Location: San Francisco, CA, USA
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/869489?v=4
- Repositories: 34
- Last ynced at: 2025-03-25T06:33:28.878Z
- Profile URL: https://github.com/davishmcclurg
GitHub Events
Total
- Delete event: 5
- Pull request event: 15
- Fork event: 3
- Issues event: 26
- Watch event: 41
- Issue comment event: 63
- Push event: 20
- Pull request review event: 1
- Create event: 6
Last Year
- Delete event: 1
- Pull request event: 1
- Issues event: 10
- Watch event: 25
- Issue comment event: 14
- Push event: 3
- Create event: 1
Committers metadata
Last synced: 3 days ago
Total Commits: 404
Total Committers: 28
Avg Commits per committer: 14.429
Development Distribution Score (DDS): 0.29
Commits in past year: 15
Committers in past year: 2
Avg Commits per committer in past year: 7.5
Development Distribution Score (DDS) in past year: 0.067
| Name | Commits | |
|---|---|---|
| David Harsha | d****g@g****m | 287 |
| David Harsha | d****a@e****o | 39 |
| Andreas Haller | a****r@i****e | 12 |
| Jbern16 | j****6@g****m | 9 |
| Michael Oberegger | m****r@a****o | 7 |
| Alan (Maciej) Paruszewski | 2****i | 6 |
| Igor Victor | g****a@y****u | 5 |
| Omkar Moghe | t****e@g****m | 4 |
| Stephen Prater | s****r@s****m | 4 |
| Clive Crous | c****s@x****m | 3 |
| Les Hill | l****l@g****m | 3 |
| Andrew Konchin | a****n@g****m | 2 |
| Jacob Kjeldahl | j****b@k****t | 2 |
| Ryan Ong | r****g@p****m | 2 |
| Simon Williams | s****n@s****m | 2 |
| David Harsha | d****a@s****m | 2 |
| Konstantin Goryachev | k****v@s****u | 2 |
| Nuno Namorado | n****o@r****m | 2 |
| Sanne Brinkhorst | s****t@s****u | 2 |
| dependabot[bot] | 4****] | 1 |
| Sergii Demianchuk | s****n@s****m | 1 |
| Martin Vidner | m****n@v****t | 1 |
| Luiz Felipe G. Pereira | l****p@g****m | 1 |
| Kryštof Korb | k****f@k****z | 1 |
| Georgeo Rocco | g****o@g****m | 1 |
| Dana Sherson | r****t@d****h | 1 |
| Christian Semmler | m****l@c****m | 1 |
| Bo Anderson | m****l@b****e | 1 |
Committer domains:
- boanderson.me: 1
- csemmler.com: 1
- dana.sh: 1
- korb.cz: 1
- vidner.net: 1
- softserveinc.com: 1
- sig.eu: 1
- runtime-revolution.com: 1
- samokat.ru: 1
- swiftype.com: 1
- simonista.com: 1
- plated.com: 1
- kjeldahl.it: 1
- xneelo.com: 1
- shopify.com: 1
- yandex.ru: 1
- affinity.co: 1
- invision.de: 1
- elastic.co: 1
Issue and Pull Request metadata
Last synced: 5 days ago
Total issues: 109
Total pull requests: 105
Average time to close issues: 5 months
Average time to close pull requests: about 1 month
Total issue authors: 81
Total pull request authors: 34
Average comments per issue: 3.0
Average comments per pull request: 1.31
Merged pull request: 83
Bot issues: 0
Bot pull requests: 1
Past year issues: 12
Past year pull requests: 4
Past year average time to close issues: 4 months
Past year average time to close pull requests: about 2 months
Past year issue authors: 8
Past year pull request authors: 1
Past year average comments per issue: 0.67
Past year average comments per pull request: 0.25
Past year merged pull request: 3
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- ekzobrain (9)
- davishmcclurg (6)
- ahx (5)
- moberegger (3)
- emiltin (3)
- eapache-opslevel (3)
- jcoyne (2)
- pboling (2)
- natebrunette (2)
- skryukov (2)
- Jamie5 (2)
- SuperQ (1)
- rquant (1)
- phil-6 (1)
- exterm (1)
Top Pull Request Authors
- davishmcclurg (57)
- ahx (4)
- clive-devops (3)
- omkarmoghe (2)
- gogainda (2)
- kjeldahl (2)
- stephenprater (2)
- natebrunette (2)
- kevin-glare (2)
- leshill (2)
- bilby91 (2)
- Jbern16 (2)
- moberegger (2)
- Manborough (1)
- gciltaru (1)
Top Issue Labels
Top Pull Request Labels
- dependencies (1)
Package metadata
- Total packages: 11
-
Total downloads:
- rubygems: 131,374,929 total
- Total docker downloads: 957,206,054
- Total dependent packages: 45 (may contain duplicates)
- Total dependent repositories: 1,358 (may contain duplicates)
- Total versions: 155
- Total maintainers: 1
gem.coop: json_schemer
JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI 3.0, and OpenAPI 3.1.
- Homepage: https://github.com/davishmcclurg/json_schemer
- Documentation: http://www.rubydoc.info/gems/json_schemer/
- Licenses: MIT
- Latest release: 2.5.0 (published 3 months ago)
- Last Synced: 2026-02-27T07:00:48.477Z (5 days ago)
- Versions: 49
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 65,666,029 Total
- Docker Downloads: 478,603,027
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 0.148%
- Downloads: 0.443%
- Maintainers (1)
rubygems.org: json_schemer
JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI 3.0, and OpenAPI 3.1.
- Homepage: https://github.com/davishmcclurg/json_schemer
- Documentation: http://www.rubydoc.info/gems/json_schemer/
- Licenses: MIT
- Latest release: 2.5.0 (published 3 months ago)
- Last Synced: 2026-02-27T21:30:38.849Z (4 days ago)
- Versions: 49
- Dependent Packages: 45
- Dependent Repositories: 1,358
- Downloads: 65,708,900 Total
- Docker Downloads: 478,603,027
-
Rankings:
- Docker downloads count: 0.27%
- Downloads: 0.502%
- Dependent packages count: 0.619%
- Dependent repos count: 0.837%
- Average: 1.439%
- Stargazers count: 2.96%
- Forks count: 3.445%
- Maintainers (1)
proxy.golang.org: github.com/davishmcclurg/json_schemer
- Homepage:
- Documentation: https://pkg.go.dev/github.com/davishmcclurg/json_schemer#section-documentation
- Licenses: mit
- Latest release: v2.5.0+incompatible (published 3 months ago)
- Last Synced: 2026-02-25T22:01:30.953Z (6 days ago)
- Versions: 49
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 6.48%
- Average: 6.698%
- Dependent repos count: 6.917%
ubuntu-22.04: ruby-json-schemer
- Homepage: https://github.com/davishmcclurg/json_schemer
- Licenses:
- Latest release: 0.2.18-2 (published 18 days ago)
- Last Synced: 2026-02-13T13:19:27.903Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-23.10: ruby-json-schemer
- Homepage: https://github.com/davishmcclurg/json_schemer
- Licenses: mit
- Latest release: 0.2.18-2 (published 18 days ago)
- Last Synced: 2026-02-13T18:24:13.739Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-23.04: ruby-json-schemer
- Homepage: https://github.com/davishmcclurg/json_schemer
- Licenses:
- Latest release: 0.2.18-2 (published 21 days ago)
- Last Synced: 2026-02-11T06:42:18.467Z (21 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-11: ruby-json-schemer
- Homepage: https://github.com/davishmcclurg/json_schemer
- Documentation: https://packages.debian.org/bullseye/ruby-json-schemer
- Licenses:
- Latest release: 0.2.13-2 (published 21 days ago)
- Last Synced: 2026-02-13T08:21:44.149Z (19 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-12: ruby-json-schemer
- Homepage: https://github.com/davishmcclurg/json_schemer
- Documentation: https://packages.debian.org/bookworm/ruby-json-schemer
- Licenses:
- Latest release: 0.2.18-2 (published 19 days ago)
- Last Synced: 2026-02-12T23:33:49.390Z (19 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
debian-13: ruby-json-schemer
- Homepage: https://github.com/davishmcclurg/json_schemer
- Documentation: https://packages.debian.org/trixie/ruby-json-schemer
- Licenses:
- Latest release: 0.2.18-2 (published 19 days ago)
- Last Synced: 2026-02-13T13:17:03.094Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
Dependencies
- ajv ^6.0.0-rc.1 development
- json-schema-test ^2.0.0 development
- mocha ^3.2.0 development
- ecma-re-validator 0.3.0
- hana 1.3.7
- json_schemer 0.2.21
- minitest 5.15.0
- rake 13.0.6
- regexp_parser 2.3.1
- uri_template 0.7.0
- bundler ~> 2.0 development
- minitest ~> 5.0 development
- rake ~> 13.0 development
- ecma-re-validator ~> 0.3
- hana ~> 1.3
- regexp_parser ~> 2.0
- uri_template ~> 0.7
- actions/checkout v2 composite
- ruby/setup-ruby v1 composite
Score: 30.312047790447405