[Koha-devel] Restful API question

Tomas Cohen Arazi tomascohen at gmail.com
Mon May 20 13:27:44 CEST 2019


The most probable problem is the OpenAPI spec is wrong, and then the plugin
API is skipped altogether.

If possible, share the openapi.json file in your plugin

El lun., 20 de mayo de 2019 08:18, Stephen Graham <s.graham4 at herts.ac.uk>
escribió:

> Hi all – I know it’s Kohacon this week so a lot of people will be busy
> there, but just in case ……… (also sorry for the length of the email!):
>
>
>
> I testing creating a custom API endpoint using the Koha plugin system.
> I’ve been using the code in the Kitchen sink plugin as a template, and it
> seems to be working well apart from my lack of Swagger/OpenAPI knowledge –
> I think it’s this I struggling with. I have three files:
>
>
>
> koha-dev/var/lib/plugins/Koha/Plugin/Uk/Ac/Herts/Notifications.pm
>
>
> koha-dev/var/lib/plugins/Koha/Plugin/Uk/Ac/Herts/Notifications/NotificationController.pm
>
> koha-dev/var/lib/plugins/Koha/Plugin/Uk/Ac/Herts/Notifications/openapi.json
>
>
>
> The work is done in NotificationController.pm where I have a DBI call to
> get the following fields:
>
>
>
> Borrower.userid
>
> Message_queue.message_id
>
> Message_queue.subject
>
> Message_queue.content
>
>
>
> I fetch the data, and convert into JSON (encode_json is a method from
> Mojo::JSON) like:
>
>
>
> my $data = $sth->fetchall_arrayref({}); # return both fieldnames and values
>
> my $json = encode_json($data);
>
>
>
> if I then do (i.e. use text):
>
>
>
> return $c->render( status => 200, text => $json)
>
>
>
> it works fine. If I call
> https://herttest-staff.koha-ptfs.co.uk/api/v1/contrib/UH/notifications I
> get json like:
>
>
>
> [ {
>
>                “body”: “blah blah”,
>
>                “messageid”: “1234567”,
>
>                “subject”: “Important…”,
>
>                “userid”:  99999999”
>
> } {
>
>                Etc etc
>
> }]
>
>
>
> So in Perl terms it’s an array of hashes. Which is what I want. However,
> if I try and use the openapi way that all the current “official” Koha
> endpoints use e.g.
>
>
>
> return $c->render( status => 200, openapi => { notices => $json } );
>
>
>
> it just doesn’t work. I have tried to map the field names with the
> appropriate types in openapi.json. I’ve tried object type with properties
> e.g.
>
>
>
> "responses": {
>
>         "200": {
>
>           "description": "A list of pending notices",
>
>           "schema": {
>
>                 "type": "object",
>
>                 "properties": {
>
>                 "userid": {
>
>                         "type": "string",
>
>                         "description": "Unique User ID"
>
>                 }, etc
>
>
>
> , and I’ve tried array type with items:
>
>
>
> "responses": {
>
>         "200": {
>
>           "description": "A list of pending notices",
>
>           "schema": {
>
>                 "type": "array",
>
>                 "items": {
>
>                 "userid": {
>
>                         "type": "string",
>
>                         "description": "Unique User ID"
>
>                 }, etc
>
>
>
> But I get a page not found error. When I pass my $json variable to the
> render method using openapi how do I get it to work? I’m happy to use the
> text way, but I want to understand where I’m going wrong. Any ideas, hints,
> tips would be most welcome!
>
>
>
> Cheers, Stephen
>
>
>
> --------------------------------------
>
> Stephen Graham
>
> Library Technology Consultant
>
> Content and Collections Team
>
> Library and Computing Services
>
> University of Hertfordshire
>
> Tel: 01707 286111
>
> Ext: 77751
>
> Email: s.graham4 at herts.ac.uk
>
>
> _______________________________________________
> Koha-devel mailing list
> Koha-devel at lists.koha-community.org
> http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
> website : http://www.koha-community.org/
> git : http://git.koha-community.org/
> bugs : http://bugs.koha-community.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.koha-community.org/pipermail/koha-devel/attachments/20190520/b9b5fa40/attachment-0001.html>


More information about the Koha-devel mailing list