Koha/api/v1/swagger/paths/patrons_extended_attributes.json
Tomas Cohen Arazi 4d011bd998 Bug 23666: Add PATCH /patron/:patron_id/extended_attributes/:extended_attribute_id
This patch adds the described route. It is designed to use the
underlying libraries' methods to update an existing attribute.

The tests cover the use cases.

Note: I added handling for two exceptions that can only occur on bad
data (i.e. not by using our codebase). This are:
- Koha::Exceptions::Patron::Attribute::InvalidType
- Koha::Exceptions::Patron::Attribute::NonRepeatable

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/api/v1/patrons_extended_attributes.t
=> SUCCESS: Tests pass!
3. PLay with the route
=> SUCCESS: Expected behavior!
4. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-04-22 14:50:11 +02:00

411 lines
10 KiB
JSON

{
"/patrons/{patron_id}/extended_attributes": {
"get": {
"x-mojo-to": "Patrons::Attributes#list_patron_attributes",
"operationId": "getPatronAttributes",
"tags": [
"patrons",
"extended_attributes"
],
"parameters": [
{
"$ref": "../parameters.json#/patron_id_pp"
},
{
"$ref": "../parameters.json#/match"
},
{
"$ref": "../parameters.json#/order_by"
},
{
"$ref": "../parameters.json#/page"
},
{
"$ref": "../parameters.json#/per_page"
},
{
"$ref": "../parameters.json#/q_param"
},
{
"$ref": "../parameters.json#/q_body"
},
{
"$ref": "../parameters.json#/q_header"
}
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "The patron extended attributes",
"schema": {
"type": "array",
"items": {
"$ref": "../definitions.json#/patron_extended_attribute"
}
}
},
"401": {
"description": "Authentication required",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"403": {
"description": "Access forbidden",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"404": {
"description": "Patron 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": {
"borrowers": "edit_borrowers"
}
}
},
"post": {
"x-mojo-to": "Patrons::Attributes#add",
"operationId": "addPatronAttribute",
"tags": [
"patrons",
"extended_attributes"
],
"parameters": [
{
"$ref": "../parameters.json#/patron_id_pp"
},
{
"name": "body",
"in": "body",
"description": "A JSON representation of the patron extended attribute",
"required": true,
"schema": {
"$ref": "../definitions.json#/patron_extended_attribute"
}
}
],
"produces": [
"application/json"
],
"responses": {
"201": {
"description": "A successfully created patron extended attribute",
"schema": {
"$ref": "../definitions.json#/patron_extended_attribute"
}
},
"400": {
"description": "Bad parameter",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"401": {
"description": "Authentication required",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"403": {
"description": "Access forbidden",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"404": {
"description": "Patron not found",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"409": {
"description": "Conflict in creating resource",
"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": {
"borrowers": "edit_borrowers"
}
}
},
"put": {
"x-mojo-to": "Patrons::Attributes#overwrite",
"operationId": "overwritePatronAttributes",
"tags": [
"patrons",
"extended_attributes"
],
"parameters": [
{
"$ref": "../parameters.json#/patron_id_pp"
},
{
"name": "body",
"in": "body",
"description": "A JSON representation of the patron extended attribute",
"required": true,
"schema": {
"type": "array",
"items": {
"$ref": "../definitions.json#/patron_extended_attribute"
}
}
}
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "The successfully created patron extended attributes",
"schema": {
"type": "array",
"items": {
"$ref": "../definitions.json#/patron_extended_attribute"
}
}
},
"400": {
"description": "Bad parameters",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"401": {
"description": "Authentication required",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"403": {
"description": "Access forbidden",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"404": {
"description": "Patron not found",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"409": {
"description": "Conflict in creating resource",
"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": {
"borrowers": "edit_borrowers"
}
}
}
},
"/patrons/{patron_id}/extended_attributes/{extended_attribute_id}": {
"patch": {
"x-mojo-to": "Patrons::Attributes#update",
"operationId": "updatePatronAttribute",
"tags": [
"patrons",
"extended_attributes"
],
"parameters": [
{
"$ref": "../parameters.json#/patron_id_pp"
},
{
"name": "extended_attribute_id",
"in": "path",
"description": "Internal patron extended attribute identifier",
"type": "integer",
"required": true
},
{
"name": "body",
"in": "body",
"description": "An object containing the updated values for the patron extended attribute",
"required": true,
"schema": {
"type": "object",
"properties": {
"value": {
"description": "Extended attribute value",
"type": "string"
}
}
}
}
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "A successfully updated patron extended attribute",
"schema": {
"$ref": "../definitions.json#/patron_extended_attribute"
}
},
"400": {
"description": "Bad parameter",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"401": {
"description": "Authentication required",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"403": {
"description": "Access forbidden",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"404": {
"description": "Object not found",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"409": {
"description": "Conflict in updating resource",
"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": {
"borrowers": "edit_borrowers"
}
}
},
"delete": {
"x-mojo-to": "Patrons::Attributes#delete",
"operationId": "deletePatronAttribute",
"tags": [
"patrons",
"extended_attributes"
],
"parameters": [
{
"$ref": "../parameters.json#/patron_id_pp"
},
{
"name": "extended_attribute_id",
"in": "path",
"description": "Internal patron extended attribute identifier",
"type": "integer",
"required": true
}
],
"produces": [
"application/json"
],
"responses": {
"204": {
"description": "Extended patron attribute deleted"
},
"401": {
"description": "Authentication required",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"403": {
"description": "Access forbidden",
"schema": {
"$ref": "../definitions.json#/error"
}
},
"404": {
"description": "Patron 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": {
"borrowers": "edit_borrowers"
}
}
}
}
}