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 <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.