Browse Source

Bug 22615: Add /ill_backends endpoint

Signed-off-by: Andrew Isherwood <andrew.isherwood@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
20.05.x
Josef Moravec 3 years ago
committed by Martin Renvoize
parent
commit
def667f7fc
Signed by: martin.renvoize GPG Key ID: 422B469130441A0F
  1. 54
      Koha/REST/V1/Illbackends.pm
  2. 3
      api/v1/swagger/definitions.json
  3. 13
      api/v1/swagger/definitions/ill_backend.json
  4. 6
      api/v1/swagger/definitions/ill_backends.json
  5. 3
      api/v1/swagger/paths.json
  6. 56
      api/v1/swagger/paths/ill_backends.json

54
Koha/REST/V1/Illbackends.pm

@ -0,0 +1,54 @@
package Koha::REST::V1::Illbackends;
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use Modern::Perl;
use Mojo::Base 'Mojolicious::Controller';
use Koha::Illrequest::Config;
use Koha::Illrequests;
=head1 NAME
Koha::REST::V1::Illbackends
=head2 Operations
=head3 list
Return a list of available ILL backends and its capabilities
=cut
sub list {
my $c = shift->openapi->valid_input;
my $config = Koha::Illrequest::Config->new;
my $backends = $config->available_backends;
my @data;
foreach $b ( @$backends ) {
my $backend = Koha::Illrequest->new->load_backend( $b );
push @data, {
ill_backend_id => $b,
capabilities => $backend->capabilities,
};
}
return $c->render( status => 200, openapi => \@data );
}
1;

3
api/v1/swagger/definitions.json

@ -32,6 +32,9 @@
"holds": {
"$ref": "definitions/holds.json"
},
"ill_backends": {
"$ref": "definitions/ill_backends.json"
},
"library": {
"$ref": "definitions/library.json"
},

13
api/v1/swagger/definitions/ill_backend.json

@ -0,0 +1,13 @@
{
"type": "object",
"properties": {
"ill_backend_id": {
"type": "string",
"description": "Internal ILL backend identifier"
},
"capabilities": {
"type": "object",
"description": "List of capabilities"
}
}
}

6
api/v1/swagger/definitions/ill_backends.json

@ -0,0 +1,6 @@
{
"type": "array",
"items": {
"$ref": "ill_backend.json"
}
}

3
api/v1/swagger/paths.json

@ -83,6 +83,9 @@
"/patrons/{patron_id}/password": {
"$ref": "paths/patrons_password.json#/~1patrons~1{patron_id}~1password"
},
"/ill_backends": {
"$ref": "paths/ill_backends.json#/~1ill_backends"
},
"/illrequests": {
"$ref": "paths/illrequests.json#/~1illrequests"
},

56
api/v1/swagger/paths/ill_backends.json

@ -0,0 +1,56 @@
{
"/ill_backends": {
"get": {
"x-mojo-to": "Illbackends#list",
"operationId": "listIllbackends",
"tags": ["illbackends"],
"parameters": [],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "A list of ILL backends",
"schema": {
"$ref": "../definitions.json#/ill_backends"
}
},
"401": {
"description": "Authentication required",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"403": {
"description": "Access forbidden",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"404": {
"description": "ILL backends not found",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"503": {
"description": "Under maintenance",
"schema": {
"$ref": "../definitions.json#/error"
}
}
},
"x-koha-authorization": {
"permissions": {
"ill": "1"
}
}
}
}
}
Loading…
Cancel
Save