Tomas Cohen Arazi
4d011bd998
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>
411 lines
10 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|