From d0568d261815269a7cf22ee8cf818ee9e2213c6c Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 4 Mar 2021 06:45:47 -0300 Subject: [PATCH] Bug 27855: Add 'extended_attributes' embedding to the spec This patch just adds: - The optional 'extended_attribute' attribute to the patron object OpenAPI definition. It consists of an array of extended_attribute objects. - Add the x-koha-embed: [ 'extended_attributes' ] definition on the GET routes for patrons, allowing immedite availability of the 'extended_attributes' embedding feature. To test: 1. Apply this patchset 2. Restart Plack 3. Have some known patron_id/borrowernumber that has some extended attributes ('Patron attributes' on the UI). 4. Enable Basic authentication 5. Assuming the known patron_id is 1, point your favourite REST tool to http://kohadev-intra.myDNSname.org:8081/api/v1/patrons/1 e.g.: if your user/pass is koha/koha curl --location --request GET 'http://kohadev-intra.myDNSname.org:8081/api/v1/patrons/1' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic a29oYTprb2hh' => SUCCESS: You get the patron object correctly, no extended_attributes 6. Repeat 5, adding the x-koha-embed header like this: curl --location --request GET 'http://kohadev-intra.myDNSname.org:8081/api/v1/patrons/1' \ --header 'Content-Type: application/json' \ --header 'x-koha-embed: extended_attributes' \ --header 'Authorization: Basic a29oYTprb2hh' => SUCCESS: You get the patron, with the extended attributes inside! 7. Sign off :-D Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize --- api/v1/swagger/definitions/patron.json | 7 +++++++ api/v1/swagger/paths/patrons.json | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/api/v1/swagger/definitions/patron.json b/api/v1/swagger/definitions/patron.json index 60488f5a4b..2b4c9ceea2 100644 --- a/api/v1/swagger/definitions/patron.json +++ b/api/v1/swagger/definitions/patron.json @@ -281,6 +281,13 @@ "type": "boolean", "readOnly": true, "description": "If the patron has been anonymized" + }, + "extended_attributes": { + "type": "array", + "description": "patron's extended attributes", + "items": { + "$ref": "extended_attribute.json" + } } }, "additionalProperties": false, diff --git a/api/v1/swagger/paths/patrons.json b/api/v1/swagger/paths/patrons.json index 3e4e7739a1..23d143b918 100644 --- a/api/v1/swagger/paths/patrons.json +++ b/api/v1/swagger/paths/patrons.json @@ -451,7 +451,10 @@ "permissions": { "borrowers": "1" } - } + }, + "x-koha-embed": [ + "extended_attributes" + ] }, "post": { "x-mojo-to": "Patrons#add", @@ -580,7 +583,10 @@ "permissions": { "borrowers": "edit_borrowers" } - } + }, + "x-koha-embed": [ + "extended_attributes" + ] }, "put": { "x-mojo-to": "Patrons#update", -- 2.20.1