---
name: "JSON::Validator::Schema::OpenAPIv3"
section: "3pm"
platform: "linux"
package: "libjson-validator-perl"
version: "5.15+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/JSON::Validator::Schema::OpenAPIv3"
---

# JSON::Validator::Schema::OpenAPIv3(3pm)

OpenAPI version 3

## NAME

JSON::Validator::Schema::OpenAPIv3 - OpenAPI version 3

## SYNOPSIS

See "SYNOPSIS" in JSON::Validator::Schema::OpenAPIv2.

## DESCRIPTION

This class represents \<https://spec.openapis.org/oas/3.0/schema/2019-04-02\>.

## ATTRIBUTES

### errors

```
  my $array_ref = $schema->errors;
```

See "errors" in JSON::Validator::Schema.

### moniker

```
  $str    = $schema->moniker;
  $schema = $schema->moniker("openapiv3");
```

Used to get/set the moniker for the given schema. Default value is "openapiv3".

### specification

```
  my $str    = $schema->specification;
  my $schema = $schema->specification($str);
```

Defaults to "\<https://spec.openapis.org/oas/3.0/schema/2019-04-02\>".

## METHODS

### add\_default\_response

```
  $schema = $schema->add_default_response(\%params);
```

See "add\_default\_response" in JSON::Validator::Schema::OpenAPIv2 for details.

### base\_url

```
  $url = $schema->base_url;
  $schema = $schema->base_url($url);
```

Can get or set the default URL for this schema. `$url` can be either a Mojo::URL object or a plain string.

This method will read or write "/servers/0/url" in "data".

### coerce

```
  my $schema   = $schema->coerce({booleans => 1, numbers => 1, strings => 1});
  my $hash_ref = $schema->coerce;
```

Coercion is enabled by default, since headers, path parts, query parameters, ... are in most cases strings.

### new

```
  $schema = JSON::Validator::Schema::OpenAPIv2->new(\%attrs);
  $schema = JSON::Validator::Schema::OpenAPIv2->new;
```

Same as "new" in JSON::Validator::Schema, but will also build L/coerce\>.

### parameters\_for\_request

```
  $parameters = $schema->parameters_for_request([$method, $path]);
```

Finds all the request parameters defined in the schema, including inherited parameters. Returns `"undef"` if the `$path` and `$method` cannot be found.

Example return value:

```
  [
    {in => "query", name => "q"},
    {in => "body", name => "body", accepts => ["application/json"]},
  ]
```

The return value MUST not be mutated.

### parameters\_for\_response

```
  $array_ref = $schema->parameters_for_response([$method, $path, $status]);
```

Finds the response parameters defined in the schema. Returns `"undef"` if the `$path`, `$method` and `$status` cannot be found. Will default to the "default" response definition if `$status` could not be found and "default" exists.

Example return value:

```
  [
    {in => "header", name => "X-Foo"},
    {in => "body", name => "body", accepts => ["application/json"]},
  ]
```

The return value MUST not be mutated.

### routes

```
  $collection = $schema->routes;
```

Shares the same interface as "routes" in JSON::Validator::Schema::OpenAPIv2.

### validate\_request

```
  @errors = $schema->validate_request([$method, $path], \%req);
```

Shares the same interface as "validate\_request" in JSON::Validator::Schema::OpenAPIv2.

### validate\_response

```
  @errors = $schema->validate_response([$method, $path], \%req);
```

Shares the same interface as "validate\_response" in JSON::Validator::Schema::OpenAPIv2.

## SEE ALSO

JSON::Validator::Schema, JSON::Validator::Schema::OpenAPIv2 and and JSON::Validator.
