JSON::Schema::Modern::Vocabulary(3pm)

JSON::Schema::Modern::Vocabulary3pm

Base role for json schema vocabulary classes

Usage

  package MyApp::Vocabulary::Awesome;
  use Moo;
  with 'JSON::Schema::Modern::Vocabulary';

Version

version 0.611

Overview

This package is the role which all all vocabulary classes for JSON::Schema::Modern must compose, describing the basic structure expected of a vocabulary class.

Attributes

Methods

vocabulary

Returns the canonical URI(s) describing the vocabulary for each draft specification version, as described in JSON Schema Core Meta-specification, section 8.1.2 <https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.1.2>. Must be implemented by the composing class.

evaluation_order

Returns a positive integer, used as a sort key for determining the evaluation order of this vocabulary. If not overridden in a custom vocabulary class, its evaluation order will be after all built-in vocabularies. You probably don't need to define this.

keywords

Returns the list of keywords defined by the vocabulary. Must be implemented by the composing class.

traverse

Traverses a subschema. Callers are expected to establish a new $state scope.

traverse_subschema

Recursively traverses the schema at the current keyword, as in the "not" keyword.

traverse_array_schemas

Recursively traverses the list of subschemas at the current keyword, as in the "allOf" keyword.

traverse_object_schemas

Recursively traverses the (subschema) values of the object at the current keyword, as in the $defs keyword.

traverse_property_schema

Recursively traverses the subschema under one property of the object at the current keyword.

eval

Evaluates a subschema. Callers are expected to establish a new $state scope.

eval_subschema_at_uri

Resolves a URI to a subschema, then evaluates that subschema (essentially the $ref keyword).

Support

Bugs may be submitted through <https://github.com/karenetheridge/JSON-Schema-Modern/issues>.

I am also usually active on irc, as 'ether' at "irc.perl.org" and "irc.libera.chat".

You can also find me on the JSON Schema Slack server <https://json-schema.slack.com> and OpenAPI Slack server <https://open-api.slack.com>, which are also great resources for finding help.

Author

Karen Etheridge <[email protected]>

From libjson-schema-modern-perl 0.611-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.