use strictures 2;
package JSON::Schema::Modern::Vocabulary::OpenAPI;
# vim: set ts=8 sts=2 sw=2 tw=100 et :
# ABSTRACT: Implementation of the JSON Schema OpenAPI vocabulary
our $VERSION = '0.107';
u
'smartmatch';
no feature 'switch';
use JSON::Schema::Modern::Utilities qw(assert_keyword_type annotate_self E is_type jsonp);
use namespace::clean;
with 'JSON::Schema::Modern::Vocabulary';
sub voca
return $self->eval_subschema_at_uri($data, $schema,
{ %$state, keyword => $state->{keyword}.jsonp('', 'mapping', $discriminator_value) },
Mojo::URL->new($mapping =~ /^#/ ? $mapping : '#/co
use strictures 2;
package JSON::Schema::Modern::Document::OpenAPI;
# vim: set ts=8 sts=2 sw=2 tw=100 et :
# ABSTRACT: One OpenAPI v3.1 or v3.2 document
# KEYWORDS: JSON Schema data validation request
" >= 5.041009, feature => 'smartmatch';
no feature 'switch';
use JSON::Schema::Modern::Utilities qw(E canonical_uri jsonp is_equal json_pointer_type assert_keyword_type assert_uri_reference);
use Open
ace::clean;
extends 'JSON::Schema::Modern::Document';
our @CARP_NOT = qw(Sereal Sereal::Decoder JSON::Schema::Modern::Document);
has '+schema' => (
isa => HashRef,
);
# json pointer => entity na
requests and responses against an OpenAPI v3.1 or v3.2 document
# KEYWORDS: validation evaluation JSON Schema OpenAPI v3.1 v3.2 Swagger HTTP request response
our $VERSION = '0.107';
use 5.020;
use u
at 'indexed';
use Feature::Compat::Try;
use Encode 2.89 ();
use JSON::Schema::Modern;
use JSON::Schema::Modern::Utilities qw(jsonp unjsonp canonical_uri E abort is_equal is_elements_unique true false)
;
use OpenAPI::Modern::Utilities qw(add_vocab_and_default_schemas);
use JSON::Schema::Modern::Document::OpenAPI;
use MooX::TypeTiny 0.002002;
use Types::Standard qw(InstanceOf Bool);
use Mojo::Util qw
uild time via 'update-schemas'
# the main OpenAPI document schema, with permissive (unvalidated) JSON Schemas
use constant DEFAULT_METASCHEMA => {
3.1 => 'https://spec.openapis.org/oas/3.1/schema/2
ema/2025-09-17',
};
# metaschema for JSON Schemas contained within OpenAPI documents:
# standard JSON Schema (presently draft2020-12) + OpenAPI vocabulary
use constant DEFAULT_DIALECT => {
3.1 => '
penapis.org/oas/3.2/dialect/2025-09-17',
};
# OpenAPI document schema that forces the use of the JSON Schema dialect (no $schema overrides
# permitted)
use constant DEFAULT_BASE_METASCHEMA => {
3.1