Bug 22615: Add endpoint for getting one ill backend
authorJosef Moravec <josef.moravec@gmail.com>
Wed, 22 Jan 2020 14:21:33 +0000 (14:21 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 5 Mar 2020 13:03:40 +0000 (13:03 +0000)
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>

Koha/REST/V1/Illbackends.pm
api/v1/swagger/definitions.json
api/v1/swagger/paths.json
api/v1/swagger/paths/ill_backends.json

index 01cdd9e..15807e9 100644 (file)
@@ -51,4 +51,32 @@ sub list {
     return $c->render( status => 200, openapi => \@data );
 }
 
+=head3 get
+
+Get one backend
+
+=cut
+
+sub get {
+    my $c = shift->openapi->valid_input;
+
+    my $backend_id = $c->validation->param('ill_backend_id');
+
+    return try {
+        my $backend = Koha::Illrequest->new->load_backend( $backend_id );
+        return $c->render(
+            status => 200,
+            openapi => {
+                ill_backend_id => $backend_id,
+                capabilities => $backend->capabilities
+            }
+        );
+    } catch {
+        return $c->render(
+            status => 404,
+            openapi => { error => "ILL backend does not exist" }
+        );
+    };
+}
+
 1;
index 2676538..4b21d32 100644 (file)
@@ -35,6 +35,9 @@
   "ill_backends": {
     "$ref": "definitions/ill_backends.json"
   },
+  "ill_backend": {
+    "$ref": "definitions/ill_backend.json"
+  },
   "library": {
     "$ref": "definitions/library.json"
   },
index c4a16f8..0631ecb 100644 (file)
@@ -86,6 +86,9 @@
   "/ill_backends": {
     "$ref": "paths/ill_backends.json#/~1ill_backends"
   },
+  "/ill_backends/{ill_backend_id}": {
+    "$ref": "paths/ill_backends.json#/~1ill_backends~1{ill_backend_id}"
+  },
   "/illrequests": {
     "$ref": "paths/illrequests.json#/~1illrequests"
   },
index a14c3d6..ca895dd 100644 (file)
                 }
             }
         }
+    },
+    "/ill_backends/{ill_backend_id}": {
+        "get": {
+            "x-mojo-to": "Illbackends#get",
+            "operationId": "getIllbackends",
+            "tags": ["illbackends"],
+            "parameters": [
+                {
+                    "name": "ill_backend_id",
+                    "in": "path",
+                    "description": "ILL backend id/name",
+                    "required": true,
+                    "type": "string"
+                }
+            ],
+            "produces": [
+                "application/json"
+            ],
+            "responses": {
+                "200": {
+                    "description": "An ILL backends",
+                    "schema": {
+                        "$ref": "../definitions.json#/ill_backend"
+                    }
+                },
+                "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"
+                }
+            }
+        }
     }
 }