From c12e68e3d0cef805940aaec0fdc6decab4a4dcb3 Mon Sep 17 00:00:00 2001 From: Pedro Amorim Date: Tue, 11 Feb 2025 11:42:24 -0100 Subject: [PATCH] Bug 39091: Add cash registers list REST API endpoint --- Koha/REST/V1/CashRegisters/Registers.pm | 46 ++++++++++++++++++++ api/v1/swagger/paths/cash_registers.yaml | 53 ++++++++++++++++++++++++ api/v1/swagger/swagger.yaml | 2 + 3 files changed, 101 insertions(+) create mode 100644 Koha/REST/V1/CashRegisters/Registers.pm diff --git a/Koha/REST/V1/CashRegisters/Registers.pm b/Koha/REST/V1/CashRegisters/Registers.pm new file mode 100644 index 00000000000..9ab3f10e172 --- /dev/null +++ b/Koha/REST/V1/CashRegisters/Registers.pm @@ -0,0 +1,46 @@ +package Koha::REST::V1::CashRegisters::Registers; + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use Mojo::Base 'Mojolicious::Controller'; + +use Koha::Cash::Registers; + +use Try::Tiny qw( catch try ); + +=head1 API + +=head2 Methods + +=head3 list + +=cut + +sub list { + my $c = shift->openapi->valid_input or return; + + return try { + my $cash_registers = $c->objects->search( Koha::Cash::Registers->new ); + return $c->render( status => 200, openapi => $cash_registers ); + } catch { + $c->unhandled_exception($_); + }; + +} + +1; diff --git a/api/v1/swagger/paths/cash_registers.yaml b/api/v1/swagger/paths/cash_registers.yaml index 4fb4dff012c..e1d12731b4c 100644 --- a/api/v1/swagger/paths/cash_registers.yaml +++ b/api/v1/swagger/paths/cash_registers.yaml @@ -1,4 +1,57 @@ --- +/cash_registers: + get: + x-mojo-to: CashRegisters::Registers#list + operationId: listCashRegisters + tags: + - cash_registers + summary: List cash registers + produces: + - application/json + parameters: + - description: Case insensitive search on cash register cash_register_id + in: query + name: cash_register_id + required: false + type: string + collectionFormat: csv + - $ref: "../swagger.yaml#/parameters/match" + - $ref: "../swagger.yaml#/parameters/order_by" + - $ref: "../swagger.yaml#/parameters/page" + - $ref: "../swagger.yaml#/parameters/per_page" + - $ref: "../swagger.yaml#/parameters/q_param" + - $ref: "../swagger.yaml#/parameters/q_body" + responses: + 200: + description: A list of cash registers + schema: + items: + $ref: "../swagger.yaml#/definitions/cash_register" + type: array + "400": + description: | + Bad request. Possible `error_code` attribute values: + + * `invalid_query` + schema: + $ref: "../swagger.yaml#/definitions/error" + 403: + description: Access forbidden + schema: + $ref: "../swagger.yaml#/definitions/error" + 500: + description: |- + Internal server error. Possible `error_code` attribute values: + * `internal_server_error` + schema: + $ref: "../swagger.yaml#/definitions/error" + 503: + description: Under maintenance + schema: + $ref: "../swagger.yaml#/definitions/error" + x-koha-authorization: + permissions: + parameters: manage_cash_registers "/cash_registers/{cash_register_id}/cashups": get: x-mojo-to: CashRegisters::Cashups#list diff --git a/api/v1/swagger/swagger.yaml b/api/v1/swagger/swagger.yaml index 4b80592e38a..00cc5ec0b9d 100644 --- a/api/v1/swagger/swagger.yaml +++ b/api/v1/swagger/swagger.yaml @@ -285,6 +285,8 @@ paths: $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}" "/biblios/{biblio_id}/merge": $ref: "./paths/biblios_merge.yaml#/~1biblios~1{biblio_id}~1merge" + /cash_registers: + $ref: "./paths/cash_registers.yaml#/~1cash_registers" "/cash_registers/{cash_register_id}/cashups": $ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups" "/cashups/{cashup_id}": -- 2.39.5