diff --git a/lib/MusicBrainz/Server/Test/WS.pm b/lib/MusicBrainz/Server/Test/WS.pm index aa32643d94a..33c4278b53e 100644 --- a/lib/MusicBrainz/Server/Test/WS.pm +++ b/lib/MusicBrainz/Server/Test/WS.pm @@ -21,10 +21,12 @@ our @EXPORT_OK = qw( Readonly our $FORBIDDEN_JSON_RESPONSE => { error => 'You are not authorized to access this resource.', + help => 'For usage, please see: https://musicbrainz.org/development/mmd', }; Readonly our $UNAUTHORIZED_JSON_RESPONSE => { error => 'Your credentials could not be verified. Either you supplied the wrong credentials (e.g., bad password), or your client doesn\'t understand how to supply the credentials required.', + help => 'For usage, please see: https://musicbrainz.org/development/mmd', }; Readonly our $FORBIDDEN_XML_RESPONSE => <<'EOXML'; diff --git a/lib/MusicBrainz/Server/WebService/JSONSerializer.pm b/lib/MusicBrainz/Server/WebService/JSONSerializer.pm index 47a50700f79..cabeaecd014 100644 --- a/lib/MusicBrainz/Server/WebService/JSONSerializer.pm +++ b/lib/MusicBrainz/Server/WebService/JSONSerializer.pm @@ -129,7 +129,10 @@ sub autocomplete_editor { sub output_error { my ($self, $err) = @_; - return encode_json({ error => $err }); + return encode_json({ + error => $err, + help => 'For usage, please see: https://musicbrainz.org/development/mmd', + }); } sub output_success { diff --git a/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/BrowseReleases.pm b/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/BrowseReleases.pm index 8b0fcad4844..566db549f46 100644 --- a/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/BrowseReleases.pm +++ b/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/BrowseReleases.pm @@ -21,7 +21,10 @@ test 'errors' => sub { $mech->get('/ws/2/release?recording=7b1f6e95-b523-43b6-a048-810ea5d463a8'); is($mech->status, 404, 'browse releases via non-existent recording'); - is_json($mech->content, encode_json({ error => "Not Found" })); + is_json($mech->content, encode_json({ + error => "Not Found", + help => 'For usage, please see: https://musicbrainz.org/development/mmd', + })); }; test 'browse releases via artist (paging)' => sub { diff --git a/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/LookupArtist.pm b/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/LookupArtist.pm index 1c492af65a7..c5f6614a6ab 100644 --- a/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/LookupArtist.pm +++ b/t/lib/t/MusicBrainz/Server/Controller/WS/2/JSON/LookupArtist.pm @@ -22,12 +22,16 @@ test 'errors' => sub { is($mech->status, 400); is_json($mech->content, encode_json({ - error => "coffee is not a valid inc parameter for the artist resource." + error => "coffee is not a valid inc parameter for the artist resource.", + help => 'For usage, please see: https://musicbrainz.org/development/mmd', })); $mech->get('/ws/2/artist/00000000-1111-2222-3333-444444444444'); is($mech->status, 404); - is_json($mech->content, encode_json({ error => "Not Found" })); + is_json($mech->content, encode_json({ + error => "Not Found", + help => 'For usage, please see: https://musicbrainz.org/development/mmd', + })); }; test 'basic artist lookup' => sub {