The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

JSON::API::Error - JSON API-style error objects

SYNOPSIS

  use JSON::API::Error;
  use Mojo::JSON qw/encode_json/;

  # A JSON API error representing bad submission data
  my $err = JSON::API::Error->new({
      source => {pointer => '/forename'},
      status => '400',
      title  => 'Field required',
  });

  # Field required
  say $err->title;
  # /forename: Field required
  say "$err";

  # {
  #   "source": {
  #     "pointer": "/forename"
  #   },
  #   "status": "400",
  #   "title": "Field required"
  # }
  say encode_json $err;
  say encode_json $err->TO_JSON;

  # A JSON API error representing a missing resource
  my $err = JSON::API::Error->new({
      status => '404',
      title  => 'Not Found',
  });

  # {
  #   "status": "404",
  #   "title": "Not Found"
  # }
  say encode_json $err;
  say encode_json $err->TO_JSON;

DESCRIPTION

JSON::API::Error provides a JSON API error object. It is intended to provide a consistent error interface that can be digested by front and backend software.

The front end will receive an ARRAY of these objects when there is an error. It should contain enough information to be able to add custom errors to specific form elements.

ATTRIBUTES

JSON::API::Error implements the following attributes.

code

An application-specific error code, expressed as a string value.

detail

A human-readable explanation specific to this occurrence of the problem. Like title, this field's value can be localized.

id

A unique identifier for this particular occurrence of the problem.

A links object containing the following members:

about: a link that leads to further details about this particular occurrence of the problem.

meta

    my $err = JSON::API::Error->new(
        {
            meta => {
                length => 5,
                detail => "Field length is 5, should be at least 30"
            },
            source => {pointer => "/forename"},
            status => '400',
            title  => "Field length",
        }
    );

A meta object containing non-standard meta-information about the error. Can be used to include more detail about the error.

source

An object containing references to the source of the error, optionally including any of the following members:

pointer: a JSON Pointer [RFC6901] to the associated entity in the request document [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute].

parameter: a string indicating which URI query parameter caused the error.

status

The HTTP status code applicable to this problem, expressed as a string value.

title

A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.

METHODS

JSON::API::Error implements the following methods.

TO_JSON

Returns the object instance as a HASH reference, suitable for encoding to JSON.

OPERATORS

JSON::API::Error overloads the following operators.

bool

  my $bool = !!$err;

Always true.

stringify

  my $str = "$err";

Alias for to_string.

AUTHOR

Paul Williams <kwakwa@cpan.org>

COPYRIGHT

Copyright 2018- Paul Williams

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

https://metacpan.org/pod/Mojolicious::Plugin::OpenAPI, http://jsonapi.org/, http://jsonapi.org/format/#errors.