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
   <http://jsonapi.org/format/#error-objects>. 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.

links

   A links object <http://jsonapi.org/format/#document-links> 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 <[email protected]>

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.