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

JSON::Schema::Modern::Annotation3pm

Contains a single annotation from a json schema evaluation

Usage

  use JSON::Schema::Modern;
  my $js = JSON::Schema::Modern->new;
  my $result = $js->evaluate($data, $schema);
  my @annotations = $result->annotations;
  my $value = $annotations[0]->annotation;
  my $instance_location = $annotations[0]->instance_location;
  my $annotations_encoded = encode_json(\@annotations);

Version

version 0.611

Overview

An instance of this class holds one annotation from evaluating a JSON Schema with JSON::Schema::Modern.

Attributes

keyword

The keyword that produced the annotation.

instance_location

The path in the instance where the annotation was produced; encoded as per the JSON Pointer specification (RFC 6901 <https://datatracker.ietf.org/doc/html/rfc6901>).

keyword_location

The schema path taken during evaluation to arrive at the annotation; encoded as per the JSON Pointer specification (RFC 6901 <https://datatracker.ietf.org/doc/html/rfc6901>).

absolute_keyword_location

The canonical URI or URI reference of the location in the schema where the error occurred; not defined, if there is no base URI for the schema and no $ref was followed. Note that this is not actually fragmentless URI in most cases, as the indicated error will occur at a path below the position where the most recent identifier had been declared in the schema. Further, if the schema never declared an absolute base URI (containing a scheme), this URI won't be absolute either.

unknown

A boolean flag, indicating whether the keyword is a known vocabulary keyword or unknown.

annotation

The actual annotation value (which may or may not be a string).

depth

An integer which indicates how many subschemas deep this annotation was generated from. Can be used to construct a tree-like structure of annotations.

Methods

To_json

Returns a data structure suitable for serialization. Corresponds to one output unit as specified in <https://json-schema.org/draft/2020-12/json-schema-core#section-12.3> and <https://json-schema.org/draft/2020-12/output/schema>, except that "instanceLocation" and "keywordLocation" are JSON pointers, not URI fragments, even in draft2019-09. (See the "strict_basic" "output_format" in JSON::Schema::Modern, only available in that version, if the distinction is important to you.)

dump

Returns a JSON string representing the error object, according to the specification <https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.10>.

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.