From 176450e5429487f4ec375e7a1b07f31bf7380a23 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 8 Mar 2022 12:57:57 -0300 Subject: [PATCH] Bug 30194: Add spec bundle pipeline This patch introduces a gulp task for bundling the spec. --- Koha/REST/V1.pm | 2 +- api/v1/swagger/swagger_bundle.yaml | 8899 ++++++++++++++++++++++++++++ gulpfile.js | 11 + package.json | 2 + yarn.lock | 226 +- 5 files changed, 9135 insertions(+), 5 deletions(-) create mode 100644 api/v1/swagger/swagger_bundle.yaml diff --git a/Koha/REST/V1.pm b/Koha/REST/V1.pm index e64bf13cbf..976c94dc4b 100644 --- a/Koha/REST/V1.pm +++ b/Koha/REST/V1.pm @@ -69,7 +69,7 @@ sub startup { $self->secrets([$secret_passphrase]); } - my $spec_file = $self->home->rel_file("api/v1/swagger/swagger.json"); + my $spec_file = $self->home->rel_file("api/v1/swagger/swagger_bundled.yaml"); push @{$self->routes->namespaces}, 'Koha::Plugin'; diff --git a/api/v1/swagger/swagger_bundle.yaml b/api/v1/swagger/swagger_bundle.yaml new file mode 100644 index 0000000000..ce5141fdb5 --- /dev/null +++ b/api/v1/swagger/swagger_bundle.yaml @@ -0,0 +1,8899 @@ +swagger: '2.0' +basePath: /api/v1 +paths: + /oauth/token: + post: + x-mojo-to: OAuth#token + operationId: tokenOAuth + tags: + - oauth + summary: Get access token + produces: + - application/json + parameters: + - name: grant_type + in: formData + description: grant type (client_credentials) + required: true + type: string + - name: client_id + in: formData + description: client id + type: string + - name: client_secret + in: formData + description: client secret + type: string + responses: + '200': + description: OK + schema: + type: object + properties: + access_token: + type: string + token_type: + type: string + expires_in: + type: integer + additionalProperties: false + '400': + description: Bad Request + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + /acquisitions/orders: + get: + x-mojo-to: 'Acquisitions::Orders#list' + operationId: listOrders + tags: + - orders + summary: List orders + produces: + - application/json + parameters: + - name: biblio_id + in: query + description: Identifier for a linked bibliographic record + required: false + type: integer + - name: basket_id + in: query + description: Identifier for a linked acquisition basket + required: false + type: integer + - name: fund_id + in: query + description: Identifier for the fund the order goes against + required: false + type: integer + - name: status + in: query + description: 'Current status for the order. Can be ''new'', ''ordered'', ''partial'', ''complete'' or ''cancelled''' + required: false + type: string + - name: only_active + in: query + description: If only active orders should be listed + required: false + type: boolean + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of orders + schema: + type: array + items: + $ref: '#/definitions/order' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Order not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: + - order_manage + - order_manage_all + x-koha-embed: + - basket + - basket.basket_group + - basket.creator + - biblio + - biblio.active_orders+count + - biblio.holds+count + - biblio.items+count + - biblio.suggestions.suggester + - fund + - current_item_level_holds+count + - invoice + - items + - subscription + post: + x-mojo-to: 'Acquisitions::Orders#add' + operationId: addOrder + tags: + - orders + summary: Add order + parameters: + - name: body + in: body + description: A JSON object representing an order + required: true + schema: + $ref: '#/definitions/order' + produces: + - application/json + responses: + '201': + description: Order added + schema: + $ref: '#/definitions/order' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating the resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: order_manage + '/acquisitions/orders/{order_id}': + get: + x-mojo-to: 'Acquisitions::Orders#get' + operationId: getOrder + tags: + - orders + summary: Get order + parameters: + - $ref: '#/parameters/order_id_pp' + produces: + - application/json + responses: + '200': + description: An order + schema: + $ref: '#/definitions/order' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Order not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: order_manage + x-koha-embed: + - basket + - basket.basket_group + - basket.creator + - biblio + - biblio.active_orders+count + - biblio.holds+count + - biblio.items+count + - biblio.suggestions.suggester + - fund + - current_item_level_holds+count + - invoice + - items + - subscription + put: + x-mojo-to: 'Acquisitions::Orders#update' + operationId: updateOrder + tags: + - orders + summary: Update order + parameters: + - $ref: '#/parameters/order_id_pp' + - name: body + in: body + description: A JSON object representing an order + required: true + schema: + $ref: '#/definitions/order' + produces: + - application/json + responses: + '200': + description: An order + schema: + $ref: '#/definitions/order' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Order not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: order_manage + delete: + x-mojo-to: 'Acquisitions::Orders#delete' + operationId: deleteOrder + tags: + - orders + summary: Delete order + parameters: + - $ref: '#/parameters/order_id_pp' + produces: + - application/json + responses: + '204': + description: Order deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Order not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: order_manage + /acquisitions/vendors: + get: + x-mojo-to: 'Acquisitions::Vendors#list' + operationId: listVendors + tags: + - vendors + summary: List vendors + produces: + - application/json + parameters: + - name: name + in: query + description: Case insensitive search on vendor name + required: false + type: string + - name: accountnumber + in: query + description: Case insensitive search on vendor's account number + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of vendors + schema: + type: array + items: + $ref: '#/definitions/vendor' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Vendor not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: vendors_manage + post: + x-mojo-to: 'Acquisitions::Vendors#add' + operationId: addVendor + tags: + - vendors + summary: Add vendor + parameters: + - name: body + in: body + description: A JSON object representing a vendor + required: true + schema: + $ref: '#/definitions/vendor' + produces: + - application/json + responses: + '201': + description: Vendor added + schema: + $ref: '#/definitions/vendor' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Vendor not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: vendors_manage + '/acquisitions/vendors/{vendor_id}': + get: + x-mojo-to: 'Acquisitions::Vendors#get' + operationId: getVendor + tags: + - vendors + summary: Get vendor + parameters: + - $ref: '#/parameters/vendor_id_pp' + produces: + - application/json + responses: + '200': + description: A vendor + schema: + $ref: '#/definitions/vendor' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Vendor not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: vendors_manage + put: + x-mojo-to: 'Acquisitions::Vendors#update' + operationId: updateVendor + tags: + - vendors + summary: Update vendor + parameters: + - $ref: '#/parameters/vendor_id_pp' + - name: body + in: body + description: A JSON object representing a vendor + required: true + schema: + $ref: '#/definitions/vendor' + produces: + - application/json + responses: + '200': + description: A vendor + schema: + $ref: '#/definitions/vendor' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Vendor not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: vendors_manage + delete: + x-mojo-to: 'Acquisitions::Vendors#delete' + operationId: deleteVendor + tags: + - vendors + summary: Delete vendor + parameters: + - $ref: '#/parameters/vendor_id_pp' + produces: + - application/json + responses: + '204': + description: Vendor deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Vendor not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: vendors_manage + /acquisitions/funds: + get: + x-mojo-to: 'Acquisitions::Funds#list' + operationId: listFunds + tags: + - funds + summary: List funds + produces: + - application/json + parameters: + - name: name + in: query + description: Case insensitive search on fund name + required: false + type: string + - name: fund_owner_id + in: query + description: Display only the funds that belongs to the given patron ID + required: false + type: integer + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of funds + schema: + type: array + items: + $ref: '#/definitions/fund' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Fund not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + acquisition: budget_manage_all + '/article_requests/{article_request_id}': + delete: + x-mojo-to: ArticleRequests#cancel + operationId: cancelArticleRequest + tags: + - article_requests + summary: Cancel article requests + parameters: + - name: article_request_id + in: path + description: Article request identifier + required: true + type: integer + - name: cancellation_reason + in: query + description: Article request cancellation reason + required: false + type: string + - name: notes + in: query + description: Article request custom cancellation reason + required: false + type: string + produces: + - application/json + responses: + '204': + description: Article request canceled + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + '/biblios/{biblio_id}': + get: + x-mojo-to: Biblios#get + operationId: getBiblio + tags: + - biblios + summary: Get biblio + parameters: + - $ref: '#/parameters/biblio_id_pp' + produces: + - application/json + - application/marcxml+xml + - application/marc-in-json + - application/marc + - text/plain + responses: + '200': + description: A biblio + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '406': + description: Not acceptable + schema: + type: array + description: Accepted content-types + items: + type: string + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + delete: + x-mojo-to: Biblios#delete + operationId: deleteBiblio + tags: + - biblios + summary: Delete biblio + parameters: + - $ref: '#/parameters/biblio_id_pp' + produces: + - application/json + responses: + '204': + description: Biblio deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '409': + description: Unable to perform action on biblio + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: edit_catalogue + '/biblios/{biblio_id}/checkouts': + get: + x-mojo-to: Biblios#get_checkouts + operationId: listBiblioCheckouts + tags: + - checkouts + summary: List checkouts for a biblio + parameters: + - $ref: '#/parameters/biblio_id_pp' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + - name: checked_in + in: query + description: 'By default, current checkouts are returned, when this is true then checked in checkouts are returned as result.' + type: boolean + produces: + - application/json + responses: + '200': + description: A list of checkouts + schema: + $ref: '#/definitions/checkouts' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + x-koha-embed: + - issuer + - item + - patron + - library + '/biblios/{biblio_id}/items': + get: + x-mojo-to: Biblios#get_items + operationId: getBiblioItems + tags: + - biblios + summary: Get items for a biblio + parameters: + - $ref: '#/parameters/biblio_id_pp' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: A list of the items attached to the record + schema: + type: array + items: + $ref: '#/definitions/item' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '406': + description: Not acceptable + schema: + type: array + description: Accepted content-types + items: + type: string + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + '/biblios/{biblio_id}/pickup_locations': + get: + x-mojo-to: Biblios#pickup_locations + operationId: getBiblioPickupLocations + tags: + - biblios + summary: Get valid pickup locations for a biblio + parameters: + - $ref: '#/parameters/biblio_id_pp' + - name: patron_id + in: query + description: Internal patron identifier + required: true + type: integer + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: Biblio pickup locations + schema: + type: array + items: + $ref: '#/definitions/library' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: place_holds + '/cash_registers/{cash_register_id}/cashups': + get: + x-mojo-to: 'CashRegisters::Cashups#list' + operationId: listCashups + tags: + - cashups + summary: List cashups for the cash register + produces: + - application/json + parameters: + - $ref: '#/parameters/cash_register_id_pp' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: Cashups performed on this register + schema: + type: array + items: + $ref: '#/definitions/cashup' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Register not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + cash_management: cashup + x-koha-embed: + - manager + '/cashups/{cashup_id}': + get: + x-mojo-to: 'CashRegisters::Cashups#get' + operationId: getCashup + tags: + - cashups + summary: Get cashup + parameters: + - $ref: '#/parameters/cashup_id_pp' + produces: + - application/json + responses: + '200': + description: A cashup + schema: + $ref: '#/definitions/cashup' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + cash_management: cashup + x-koha-embed: + - summary + /checkouts: + get: + x-mojo-to: Checkouts#list + operationId: listCheckouts + tags: + - checkouts + summary: List checkouts + parameters: + - $ref: '#/parameters/patron_id_qp' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + - name: checked_in + in: query + description: 'By default, current checkouts are returned, when this is true then checked in checkouts are returned as result.' + type: boolean + produces: + - application/json + responses: + '200': + description: A list of checkouts + schema: + $ref: '#/definitions/checkouts' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + x-koha-embed: + - issuer + '/checkouts/{checkout_id}': + get: + x-mojo-to: Checkouts#get + operationId: getCheckout + tags: + - checkouts + summary: Get checkout + parameters: + - $ref: '#/parameters/checkout_id_pp' + produces: + - application/json + responses: + '200': + description: Updated borrower's checkout + schema: + $ref: '#/definitions/checkout' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Checkout not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + x-koha-embed: + - issuer + '/checkouts/{checkout_id}/renewal': + post: + x-mojo-to: Checkouts#renew + operationId: renewCheckout + tags: + - checkouts + summary: Renew a checkout + parameters: + - $ref: '#/parameters/checkout_id_pp' + - $ref: '#/parameters/seen_pp' + produces: + - application/json + responses: + '201': + description: Updated borrower's checkout + schema: + $ref: '#/definitions/checkout' + '403': + description: Cannot renew checkout + schema: + $ref: '#/definitions/error' + '404': + description: Checkout not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + /circulation-rules/kinds: + get: + x-mojo-to: CirculationRules#get_kinds + operationId: getCirculationRuleKinds + tags: + - circulation_rules + summary: Get circulation rules kinds + produces: + - application/json + responses: + '200': + description: A map of rule kind information + schema: + type: object + additionalProperties: + $ref: '#/definitions/circ-rule-kind' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + /cities: + get: + x-mojo-to: Cities#list + operationId: listCities + tags: + - cities + summary: List cities + produces: + - application/json + parameters: + - name: name + in: query + description: Case insensative search on city name + required: false + type: string + - name: state + in: query + description: Case insensative search on city state + required: false + type: string + - name: country + in: query + description: Case insensative search on city country + required: false + type: string + - name: postal_code + in: query + description: Case Insensative search on city postal code + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of cities + schema: + type: array + items: + $ref: '#/definitions/city' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + post: + x-mojo-to: Cities#add + operationId: addCity + tags: + - cities + summary: Add city + parameters: + - name: body + in: body + description: A JSON object containing informations about the new hold + required: true + schema: + $ref: '#/definitions/city' + produces: + - application/json + responses: + '201': + description: City added + schema: + $ref: '#/definitions/city' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_cities + '/cities/{city_id}': + get: + x-mojo-to: Cities#get + operationId: getCity + tags: + - cities + summary: Get city + parameters: + - $ref: '#/parameters/city_id_pp' + produces: + - application/json + responses: + '200': + description: A city + schema: + $ref: '#/definitions/city' + '404': + description: City not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + put: + x-mojo-to: Cities#update + operationId: updateCity + tags: + - cities + summary: Update city + parameters: + - $ref: '#/parameters/city_id_pp' + - name: body + in: body + description: A city object + required: true + schema: + $ref: '#/definitions/city' + produces: + - application/json + responses: + '200': + description: A city + schema: + $ref: '#/definitions/city' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: City not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_cities + delete: + x-mojo-to: Cities#delete + operationId: deleteCity + tags: + - cities + summary: Delete city + parameters: + - $ref: '#/parameters/city_id_pp' + produces: + - application/json + responses: + '204': + description: City deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: City not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_cities + '/clubs/{club_id}/holds': + post: + x-mojo-to: 'Clubs::Holds#add' + operationId: addClubHold + tags: + - clubs + summary: Add a club hold + parameters: + - $ref: '#/parameters/club_id_pp' + - name: body + in: body + description: A JSON object containing informations about the new hold + required: true + schema: + type: object + properties: + biblio_id: + description: Internal biblio identifier + type: + - integer + - 'null' + item_id: + description: Internal item identifier + type: + - integer + - 'null' + pickup_library_id: + description: Internal library identifier for the pickup library + type: string + expiration_date: + description: Hold end date + type: + - string + - 'null' + format: date + notes: + description: Notes related to this hold + type: + - string + - 'null' + item_type: + description: Limit hold on one itemtype (ignored for item-level holds) + type: + - string + - 'null' + default_patron_home: + description: 'For each patron, set pickup location to patron''s home library if possible' + type: integer + required: + - pickup_library_id + additionalProperties: false + consumes: + - application/json + produces: + - application/json + responses: + '201': + description: Created club hold + schema: + type: object + properties: + club_hold_id: + type: integer + description: Internal club hold identifier + club_id: + type: integer + description: Internal club identifier + biblio_id: + type: integer + description: Internal biblio identifier + item_id: + type: + - string + - 'null' + description: Internal item identifier + date_created: + type: string + format: date-time + description: Date and time the hold was created + additionalProperties: false + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Club not found + schema: + $ref: '#/definitions/error' + '409': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + /config/smtp_servers: + get: + x-mojo-to: 'Config::SMTP::Servers#list' + operationId: listSMTPServers + tags: + - smtp_servers + summary: List SMTP servers + produces: + - application/json + parameters: + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of SMTP servers + schema: + type: array + items: + $ref: '#/definitions/smtp_server' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_smtp_servers + post: + x-mojo-to: 'Config::SMTP::Servers#add' + operationId: addSMTPServer + tags: + - smtp_servers + summary: Add SMTP server + parameters: + - name: body + in: body + description: A JSON object representing a new SMTP server configuration + required: true + schema: + $ref: '#/definitions/smtp_server' + produces: + - application/json + responses: + '201': + description: An SMTP server object + schema: + $ref: '#/definitions/smtp_server' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_smtp_servers + '/config/smtp_servers/{smtp_server_id}': + get: + x-mojo-to: 'Config::SMTP::Servers#get' + operationId: getSMTPServer + tags: + - smtp_servers + summary: Get SMTP server + parameters: + - $ref: '#/parameters/smtp_server_id_pp' + produces: + - application/json + responses: + '200': + description: An SMTP server object + schema: + $ref: '#/definitions/smtp_server' + '404': + description: Object not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict updating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_smtp_servers + put: + x-mojo-to: 'Config::SMTP::Servers#update' + operationId: updateSMTPServer + tags: + - smtp_servers + summary: Update SMTP server + parameters: + - $ref: '#/parameters/smtp_server_id_pp' + - name: body + in: body + description: An SMTP server object + required: true + schema: + $ref: '#/definitions/smtp_server' + produces: + - application/json + responses: + '200': + description: An SMTP server object + schema: + $ref: '#/definitions/smtp_server' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Object not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_smtp_servers + delete: + x-mojo-to: 'Config::SMTP::Servers#delete' + operationId: deleteSMTPServer + tags: + - smtp_servers + summary: Delete SMTP server + parameters: + - $ref: '#/parameters/smtp_server_id_pp' + produces: + - application/json + responses: + '204': + description: SMTP server deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Object not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_smtp_servers + /holds: + get: + x-mojo-to: Holds#list + operationId: listHolds + tags: + - holds + summary: List holds + parameters: + - name: hold_id + in: query + description: Internal hold identifier + type: integer + - name: patron_id + in: query + description: Internal patron identifier + type: integer + - name: hold_date + in: query + description: Hold + type: string + format: date + - name: biblio_id + in: query + description: Internal biblio identifier + type: integer + - name: pickup_library_id + in: query + description: Internal library identifier for the pickup library + type: string + - name: cancellation_date + in: query + description: The date the hold was cancelled + type: string + format: date + - name: notes + in: query + description: Notes related to this hold + type: string + - name: priority + in: query + description: Where in the queue the patron sits + type: integer + - name: status + in: query + description: Found status + type: string + - name: timestamp + in: query + description: Time of latest update + type: string + - name: item_id + in: query + description: Internal item identifier + type: integer + - name: waiting_date + in: query + description: Date the item was marked as waiting for the patron + type: string + - name: expiration_date + in: query + description: Date the hold expires + type: string + - name: lowest_priority + in: query + description: Lowest priority + type: boolean + - name: suspended + in: query + description: Suspended + type: boolean + - name: suspended_until + in: query + description: Suspended until + type: string + - name: non_priority + in: query + description: Non priority hold + type: boolean + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: A list of holds + schema: + $ref: '#/definitions/holds' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Borrower not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + post: + x-mojo-to: Holds#add + operationId: addHold + tags: + - holds + summary: Place hold + parameters: + - name: body + in: body + description: A JSON object containing informations about the new hold + required: true + schema: + type: object + properties: + patron_id: + description: Internal patron identifier + type: integer + biblio_id: + description: Internal biblio identifier + type: + - integer + - 'null' + hold_date: + description: The date the hold was placed + type: + - string + - 'null' + format: date + item_id: + description: Internal item identifier + type: + - integer + - 'null' + pickup_library_id: + description: Internal library identifier for the pickup library + type: string + expiration_date: + description: Hold end date + type: + - string + - 'null' + format: date + notes: + description: Notes related to this hold + type: + - string + - 'null' + item_type: + description: Limit hold on one itemtype (ignored for item-level holds) + type: + - string + - 'null' + non_priority: + description: Set this hold as non priority + type: + - boolean + - 'null' + required: + - patron_id + - pickup_library_id + additionalProperties: false + - name: x-koha-override + description: 'Comma-separated list of overrides (valid values: any)' + in: header + type: string + required: false + consumes: + - application/json + produces: + - application/json + responses: + '201': + description: Created hold + schema: + $ref: '#/definitions/hold' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Borrower not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + '/holds/{hold_id}': + patch: + x-mojo-to: Holds#edit + operationId: editHold + tags: + - holds + summary: Update hold + parameters: + - $ref: '#/parameters/hold_id_pp' + - name: body + in: body + description: A JSON object containing fields to modify + required: true + schema: + type: object + properties: + priority: + description: Position in waiting queue + type: integer + minimum: 1 + pickup_library_id: + description: Internal library identifier for the pickup library + type: string + suspended_until: + description: Date until which the hold has been suspended + type: string + format: date-time + additionalProperties: false + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: Updated hold + schema: + $ref: '#/definitions/hold' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + put: + x-mojo-to: Holds#edit + operationId: overwriteHold + tags: + - holds + summary: Update hold + description: 'This route is being deprecated and will be removed in future releases. Please migrate your project to use PATCH /holds/{hold_id} instead.' + parameters: + - $ref: '#/parameters/hold_id_pp' + - name: body + in: body + description: A JSON object containing fields to modify + required: true + schema: + type: object + properties: + priority: + description: Position in waiting queue + type: integer + minimum: 1 + pickup_library_id: + description: Internal library identifier for the pickup library + type: string + suspended_until: + description: Date until which the hold has been suspended + type: string + format: date-time + additionalProperties: false + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: Updated hold + schema: + $ref: '#/definitions/hold' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + delete: + x-mojo-to: Holds#delete + operationId: deleteHold + tags: + - holds + summary: Cancel hold + parameters: + - $ref: '#/parameters/hold_id_pp' + produces: + - application/json + responses: + '204': + description: Hold deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + '/holds/{hold_id}/priority': + put: + x-mojo-to: Holds#update_priority + operationId: updateHoldPriority + tags: + - holds + summary: Update priority for the hold + parameters: + - $ref: '#/parameters/hold_id_pp' + - name: body + in: body + description: An integer representing the new priority to be set for the hold + required: true + schema: + type: integer + produces: + - application/json + responses: + '200': + description: The new priority value for the hold + schema: + type: integer + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '409': + description: Unable to perform action on biblio + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: modify_holds_priority + '/holds/{hold_id}/suspension': + post: + x-mojo-to: Holds#suspend + operationId: suspendHold + tags: + - holds + summary: Suspend the hold + parameters: + - $ref: '#/parameters/hold_id_pp' + - name: body + in: body + description: A JSON object containing fields to modify + required: false + schema: + type: object + properties: + end_date: + description: Date the hold suspension expires + type: string + format: date + additionalProperties: false + consumes: + - application/json + produces: + - application/json + responses: + '201': + description: Hold suspended + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + delete: + x-mojo-to: Holds#resume + operationId: resumeHold + tags: + - holds + summary: Resume hold + parameters: + - $ref: '#/parameters/hold_id_pp' + consumes: + - application/json + produces: + - application/json + responses: + '204': + description: Hold resumed + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: '1' + '/holds/{hold_id}/pickup_locations': + get: + x-mojo-to: Holds#pickup_locations + operationId: getHoldPickupLocations + tags: + - holds + summary: Get valid pickup locations for hold + parameters: + - name: x-koha-override + description: 'Comma-separated list of overrides (valid values: any)' + in: header + type: string + required: false + - $ref: '#/parameters/hold_id_pp' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: Hold pickup location + schema: + type: array + items: + $ref: '#/definitions/library' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold pickup location list not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: place_holds + '/holds/{hold_id}/pickup_location': + put: + x-mojo-to: Holds#update_pickup_location + operationId: updateHoldPickupLocation + tags: + - holds + summary: Update pickup location for the hold + description: Set a new pickup location for the hold + parameters: + - $ref: '#/parameters/hold_id_pp' + - name: body + in: body + description: Pickup location + required: true + schema: + type: object + properties: + pickup_library_id: + type: string + description: Internal identifier for the pickup library + additionalProperties: false + produces: + - application/json + responses: + '200': + description: The new pickup location value for the hold + schema: + type: object + properties: + pickup_library_id: + type: string + description: Internal identifier for the pickup library + additionalProperties: false + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '409': + description: Unable to perform action on hold + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: place_holds + /items: + get: + x-mojo-to: Items#list + operationId: listItems + tags: + - items + summary: List items + parameters: + - name: external_id + in: query + description: Search on the item's barcode + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: A list of item + schema: + type: array + items: + $ref: '#/definitions/item' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + '/items/{item_id}': + get: + x-mojo-to: Items#get + operationId: getItem + tags: + - items + summary: Get item + parameters: + - $ref: '#/parameters/item_id_pp' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: An item + schema: + $ref: '#/definitions/item' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '404': + description: Item not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + '/items/{item_id}/pickup_locations': + get: + x-mojo-to: Items#pickup_locations + operationId: getItemPickupLocations + summary: Get valid pickup locations for an item + tags: + - items + parameters: + - $ref: '#/parameters/item_id_pp' + - name: patron_id + in: query + description: Internal patron identifier + required: true + type: integer + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: Item pickup locations + schema: + type: array + items: + $ref: '#/definitions/library' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + reserveforothers: place_holds + /libraries: + get: + x-mojo-to: Libraries#list + operationId: listLibraries + tags: + - libraries + summary: List libraries + parameters: + - name: name + in: query + description: Case insensitive 'starts-with' search on name + required: false + type: string + - name: address1 + in: query + description: Case insensitive 'starts-with' search on address1 + required: false + type: string + - name: address2 + in: query + description: Case insensitive 'starts-with' search on address2 + required: false + type: string + - name: address3 + in: query + description: Case insensitive 'starts-with' search on address3 + required: false + type: string + - name: postal_code + in: query + description: Case insensitive 'starts-with' search on postal code + required: false + type: string + - name: city + in: query + description: Case insensitive 'starts-with' search on city + required: false + type: string + - name: state + in: query + description: Case insensitive 'starts-with' search on state + required: false + type: string + - name: country + in: query + description: Case insensitive 'starts_with' search on country + required: false + type: string + - name: phone + in: query + description: Case insensitive 'starts_with' search on phone number + required: false + type: string + - name: fax + in: query + description: Case insensitive 'starts_with' search on fax number + required: false + type: string + - name: email + in: query + description: Case insensitive 'starts_with' search on email address + required: false + type: string + - name: reply_to_email + in: query + description: Case insensitive 'starts_with' search on Reply-To email address + required: false + type: string + - name: return_path_email + in: query + description: Case insensitive 'starts_with' search on Return-Path email address + required: false + type: string + - name: url + in: query + description: Case insensitive 'starts_with' search on website URL + required: false + type: string + - name: ip + in: query + description: Case insensitive 'starts_with' search on IP address + required: false + type: string + - name: notes + in: query + description: Case insensitive 'starts_with' search on notes + required: false + type: string + - name: opac_info + in: query + description: Case insensitive 'starts-with' search on OPAC info + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: A list of libraries + schema: + type: array + items: + $ref: '#/definitions/library' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + x-koha-embed: + - smtp_server + post: + x-mojo-to: Libraries#add + operationId: addLibrary + tags: + - libraries + summary: Add library + parameters: + - name: body + in: body + description: A JSON object containing informations about the new library + required: true + schema: + $ref: '#/definitions/library' + produces: + - application/json + responses: + '201': + description: Library added + schema: + $ref: '#/definitions/library' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_libraries + '/libraries/{library_id}': + get: + x-mojo-to: Libraries#get + operationId: getLibrary + tags: + - libraries + summary: Get library + parameters: + - $ref: '#/parameters/library_id_pp' + produces: + - application/json + responses: + '200': + description: A library + schema: + $ref: '#/definitions/library' + '404': + description: Library not found + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + x-koha-embed: + - smtp_server + put: + x-mojo-to: Libraries#update + operationId: updateLibrary + tags: + - libraries + summary: Update library + parameters: + - $ref: '#/parameters/library_id_pp' + - name: body + in: body + description: A JSON object containing information on the library + required: true + schema: + $ref: '#/definitions/library' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: A library + schema: + $ref: '#/definitions/library' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Library not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_libraries + delete: + x-mojo-to: Libraries#delete + operationId: deleteLibrary + tags: + - libraries + summary: Delete library + parameters: + - $ref: '#/parameters/library_id_pp' + produces: + - application/json + responses: + '204': + description: Library deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Library not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_libraries + /transfer_limits: + get: + x-mojo-to: TransferLimits#list + operationId: listTransferLimits + description: This resource returns a list of existing transfer limits. + summary: List transfer limits + tags: + - transfer + parameters: + - name: to_library_id + in: query + description: Search on to_library_id + required: false + type: string + - name: from_library_id + in: query + description: Search on from_library_id + required: false + type: string + - name: item_type + in: query + description: Search on item_type + required: false + type: string + - name: collection_code + in: query + description: Search on collection_code + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: A list of transfer limits + schema: + type: array + items: + $ref: '#/definitions/transfer_limit' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_transfers + post: + x-mojo-to: TransferLimits#add + operationId: addTransferLimit + description: This resource accepts a new transfer limit and creates it if it does not already exist. + tags: + - transfer + summary: Add a transfer limit + parameters: + - name: body + in: body + description: A JSON object containing information about a new transfer limit + required: true + schema: + $ref: '#/definitions/transfer_limit' + produces: + - application/json + responses: + '201': + description: Transfer limit added + schema: + $ref: '#/definitions/transfer_limit' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_transfers + '/transfer_limits/{limit_id}': + delete: + x-mojo-to: TransferLimits#delete + operationId: deleteTransferLimit + description: This resource deletes a transfer limit for the given limit id + tags: + - transfer + summary: Delete transfer limit + parameters: + - $ref: '#/parameters/transfer_limit_id_pp' + produces: + - application/json + responses: + '204': + description: Transfer limit deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Library not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_transfers + /transfer_limits/batch: + post: + x-mojo-to: TransferLimits#batch_add + operationId: batchAddTransferLimits + description: | + + This resource batch creates new transfer limits based on the given data. + For example, if the paramters `to_library_id: 'BranchA'` and `item_type: 'BOOK'` are passed in new transfer limits for `BOOK`s will be created, with one transfer limit each for all the branches defined in Koha. Given 4 branches, 3 limits would be created: + * to_library_id: 'BranchA', from_library_id: 'BranchB', item_type: 'BOOK' * to_library_id: 'BranchA', from_library_id: 'BranchC', item_type: 'BOOK' * to_library_id: 'BranchA', from_library_id: 'BranchD', item_type: 'BOOK' + + The body of the query would look like + ``` + { + 'to_library_id': 'BranchA', + 'item_type': 'BOOK' + + } + ``` + As another example, imagine we have an itemtype that is never supposed to be transferred to another library. If we call that itemtype `LOCAL_ONLY` we would need to just pass `item_type: 'LOCAL_ONLY'`, which would create transfer limits for all libraries, meaning those items would never be allowed to transfer to another library. The body of the query would look like + ``` + { + 'item_type': 'LOCAL_ONLY' + } + ``` + tags: + - transfer + summary: Batch add transfer limits + parameters: + - name: body + in: body + description: A JSON object containing information about new transfer limits. + required: true + schema: + type: object + properties: + to_library_id: + type: string + description: Internal library id for which library the item is going to + from_library_id: + type: string + description: Internal library id for which library the item is coming from + item_type: + type: + - string + - 'null' + description: Itemtype defining the type for this limi + collection_code: + type: + - string + - 'null' + description: Authorized value for the collection code associated with this limit + additionalProperties: false + produces: + - application/json + responses: + '201': + description: A list of transfer limits + schema: + type: array + items: + $ref: '#/definitions/transfer_limit' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_transfers + delete: + x-mojo-to: TransferLimits#batch_delete + operationId: batchDeleteTransferLimits + description: 'This endpoint works just like [the POST version](#op-post-transfer_limits-batch), except it deletes transfer in batch rather than creating them.' + tags: + - transfer + summary: Batch delete transfer limits + parameters: + - name: body + in: body + description: A JSON object containing information about new transfer limits. + required: true + schema: + type: object + properties: + to_library_id: + type: string + description: Internal library id for which library the item is going to + from_library_id: + type: string + description: Internal library id for which library the item is coming from + item_type: + type: + - string + - 'null' + description: Itemtype defining the type for this limi + collection_code: + type: + - string + - 'null' + description: Authorized value for the collection code associated with this limit + additionalProperties: false + produces: + - application/json + responses: + '204': + description: Transfer limits deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Library not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + parameters: manage_transfers + '/checkouts/{checkout_id}/allows_renewal': + get: + x-mojo-to: Checkouts#allows_renewal + operationId: allows_renewalCheckout + tags: + - checkouts + summary: Get renewability for a checkout + parameters: + - $ref: '#/parameters/checkout_id_pp' + produces: + - application/json + responses: + '200': + description: Checkout renewability information + schema: + $ref: '#/definitions/allows_renewal' + '403': + description: Forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Checkout not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + /advanced_editor/macros: + get: + x-mojo-to: AdvancedEditorMacro#list + operationId: listMacro + tags: + - macros + summary: List advanced editor macros + produces: + - application/json + parameters: + - name: name + in: query + description: Case insensative search on macro name + required: false + type: string + - name: macro_text + in: query + description: Case insensative search on macro text + required: false + type: string + - name: patron_id + in: query + description: Search on internal patron_id + required: false + type: string + - name: shared + in: query + description: Search on shared macros + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of macros + schema: + type: array + items: + $ref: '#/definitions/advancededitormacro' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: advanced_editor + post: + x-mojo-to: AdvancedEditorMacro#add + operationId: addAdvancedEditorMacro + tags: + - macros + summary: Add advanced editor macros + parameters: + - name: body + in: body + description: A JSON object containing informations about the new macro + required: true + schema: + $ref: '#/definitions/advancededitormacro' + produces: + - application/json + responses: + '201': + description: Macro added + schema: + $ref: '#/definitions/advancededitormacro' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: advanced_editor + '/advanced_editor/macros/{advancededitormacro_id}': + get: + x-mojo-to: AdvancedEditorMacro#get + operationId: getAdvancedEditorMacro + tags: + - macros + summary: Get advanced editor macro + parameters: + - $ref: '#/parameters/advancededitormacro_id_pp' + produces: + - application/json + responses: + '200': + description: A macro + schema: + $ref: '#/definitions/advancededitormacro' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: AdvancedEditorMacro not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: advanced_editor + put: + x-mojo-to: AdvancedEditorMacro#update + operationId: updateAdvancedEditorMacro + tags: + - macros + summary: Update advanced editor macro + parameters: + - $ref: '#/parameters/advancededitormacro_id_pp' + - name: body + in: body + description: An advanced editor macro object + required: true + schema: + $ref: '#/definitions/advancededitormacro' + produces: + - application/json + responses: + '200': + description: An advanced editor macro + schema: + $ref: '#/definitions/advancededitormacro' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Macro not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: advanced_editor + delete: + x-mojo-to: AdvancedEditorMacro#delete + operationId: deleteAdvancedEditorMacro + tags: + - macros + summary: Delete advanced editor macro + parameters: + - $ref: '#/parameters/advancededitormacro_id_pp' + produces: + - application/json + responses: + '204': + description: Advanced editor macro deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Macro not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: advanced_editor + /advanced_editor/macros/shared: + post: + x-mojo-to: AdvancedEditorMacro#add_shared + operationId: addsharedAdvancedEditorMacro + tags: + - macros + summary: Add shared advanced editor macros + parameters: + - name: body + in: body + description: A JSON object containing informations about the new macro + required: true + schema: + $ref: '#/definitions/advancededitormacro' + produces: + - application/json + responses: + '201': + description: Macro added + schema: + $ref: '#/definitions/advancededitormacro' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: + advanced_editor: 1 + create_shared_macros: 1 + '/advanced_editor/macros/shared/{advancededitormacro_id}': + get: + x-mojo-to: AdvancedEditorMacro#get_shared + operationId: getsharedAdvancedEditorMacro + tags: + - macros + summary: Get shared advanced editor macro + parameters: + - $ref: '#/parameters/advancededitormacro_id_pp' + produces: + - application/json + responses: + '200': + description: A macro + schema: + $ref: '#/definitions/advancededitormacro' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: AdvancedEditorMacro not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: advanced_editor + put: + x-mojo-to: AdvancedEditorMacro#update_shared + operationId: updatesharedAdvancedEditorMacro + tags: + - macros + summary: Update shared advanced editor macro + parameters: + - $ref: '#/parameters/advancededitormacro_id_pp' + - name: body + in: body + description: An advanced editor macro object + required: true + schema: + $ref: '#/definitions/advancededitormacro' + produces: + - application/json + responses: + '200': + description: An advanced editor macro + schema: + $ref: '#/definitions/advancededitormacro' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Macro not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: + advanced_editor: 1 + create_shared_macros: 1 + delete: + x-mojo-to: AdvancedEditorMacro#delete_shared + operationId: deletesharedAdvancedEditorMacro + tags: + - macros + summary: Delete shared advanced editor macro + parameters: + - $ref: '#/parameters/advancededitormacro_id_pp' + produces: + - application/json + responses: + '204': + description: Advanced editor macro deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Macro not found + schema: + $ref: '#/definitions/error' + '500': + description: Internal error + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + editcatalogue: + advanced_editor: 1 + delete_shared_macros: 1 + /patrons: + get: + x-mojo-to: Patrons#list + operationId: listPatrons + tags: + - patrons + summary: List patrons + produces: + - application/json + parameters: + - name: patron_id + in: query + description: Search on patron_id + required: false + type: string + - name: cardnumber + in: query + description: Case insensitive search on cardnumber + required: false + type: string + - name: surname + in: query + description: Case insensitive search on surname + required: false + type: string + - name: firstname + in: query + description: Case insensitive search on firstname + required: false + type: string + - name: title + in: query + description: Case insensitive search on title + required: false + type: string + - name: other_name + in: query + description: Case insensitive search on othernames + required: false + type: string + - name: initials + in: query + description: Case insensitive search on initials + required: false + type: string + - name: street_number + in: query + description: Case insensitive search on streetnumber + required: false + type: string + - name: street_type + in: query + description: Case insensitive search on streettype + required: false + type: string + - name: address + in: query + description: Case insensitive search on address + required: false + type: string + - name: address2 + in: query + description: Case insensitive search on address2 + required: false + type: string + - name: city + in: query + description: Case insensitive search on city + required: false + type: string + - name: state + in: query + description: Case insensitive search on state + required: false + type: string + - name: postal_code + in: query + description: Case insensitive search on zipcode + required: false + type: string + - name: country + in: query + description: Case insensitive search on country + required: false + type: string + - name: email + in: query + description: Case insensitive search on email + required: false + type: string + - name: phone + in: query + description: Case insensitive search on phone + required: false + type: string + - name: mobile + in: query + description: Case insensitive search on mobile + required: false + type: string + - name: fax + in: query + description: Case insensitive search on fax + required: false + type: string + - name: secondary_email + in: query + description: Case insensitive search on secondary_email + required: false + type: string + - name: secondary_phone + in: query + description: Case insensitive search on secondary_phone + required: false + type: string + - name: altaddress_street_number + in: query + description: Case insensitive search on altaddress_street_number + required: false + type: string + - name: altaddress_street_type + in: query + description: Case insensitive search on altaddress_street_type + required: false + type: string + - name: altaddress_address + in: query + description: Case insensitive search on altaddress_address + required: false + type: string + - name: altaddress_address2 + in: query + description: Case insensitive search on altaddress_address2 + required: false + type: string + - name: altaddress_city + in: query + description: Case insensitive search on altaddress_city + required: false + type: string + - name: altaddress_state + in: query + description: Case insensitive search on altaddress_state + required: false + type: string + - name: altaddress_postal_code + in: query + description: Case insensitive search on altaddress_postal_code + required: false + type: string + - name: altaddress_country + in: query + description: Case insensitive search on altaddress_country + required: false + type: string + - name: altaddress_email + in: query + description: Case insensitive search on altaddress_email + required: false + type: string + - name: altaddress_phone + in: query + description: Case insensitive search on altaddress_phone + required: false + type: string + - name: date_of_birth + in: query + description: Case insensitive search on date_of_birth + required: false + type: string + - name: library_id + in: query + description: Case insensitive search on library_id + required: false + type: string + - name: category_id + in: query + description: Case insensitive search on category_id + required: false + type: string + - name: date_enrolled + in: query + description: Case insensitive search on date_enrolled + required: false + type: string + - name: expiry_date + in: query + description: Case insensitive search on expiry_date + required: false + type: string + - name: incorrect_address + in: query + description: Search on incorrect_address + required: false + type: boolean + - name: patron_card_lost + in: query + description: Search on patron_card_lost + required: false + type: boolean + - name: restricted + in: query + description: Filter search by restricted + required: false + type: boolean + - name: guarantor_id + in: query + description: Search on guarantor_id + required: false + type: string + - name: staff_notes + in: query + description: Case insensitive search on staff_notes + required: false + type: string + - name: relationship_type + in: query + description: Case insensitive search on relationship_type + required: false + type: string + - name: gender + in: query + description: Case insensitive search on gender + required: false + type: string + - name: userid + in: query + description: Case insensitive search on userid + required: false + type: string + - name: opac_notes + in: query + description: Case insensitive search on opac_notes + required: false + type: string + - name: altaddress_notes + in: query + description: Case insensitive search on altaddress_notes + required: false + type: string + - name: statistics_1 + in: query + description: Case insensitive search on statistics_1 + required: false + type: string + - name: statistics_2 + in: query + description: Case insensitive search on statistics_2 + required: false + type: string + - name: autorenew_checkouts + in: query + description: Search on autorenew_checkouts + required: false + type: boolean + - name: altcontact_firstname + in: query + description: Case insensitive search on altcontact_firstname + required: false + type: string + - name: altcontact_surname + in: query + description: Case insensitive search on altcontact_surname + required: false + type: string + - name: altcontact_address + in: query + description: Case insensitive search on altcontact_address + required: false + type: string + - name: altcontact_address2 + in: query + description: Case insensitive search on altcontact_address2 + required: false + type: string + - name: altcontact_city + in: query + description: Case insensitive search on altcontact_city + required: false + type: string + - name: altcontact_state + in: query + description: Case insensitive search on altcontact_state + required: false + type: string + - name: altcontact_postal_code + in: query + description: Case insensitive search on altcontact_postal_code + required: false + type: string + - name: altcontact_country + in: query + description: Case insensitive search on altcontact_country + required: false + type: string + - name: altcontact_phone + in: query + description: Case insensitive search on altcontact_phone + required: false + type: string + - name: sms_number + in: query + description: Case insensitive search on sms_number + required: false + type: string + - name: sms_provider_id + in: query + description: Case insensitive search on sms_provider_id + required: false + type: string + - name: privacy + in: query + description: Search on privacy + required: false + type: string + - name: privacy_guarantor_checkouts + in: query + description: Search on privacy_guarantor_checkouts + required: false + type: string + - name: check_previous_checkout + in: query + description: Case insensitive search on check_previous_checkout + required: false + type: string + - name: updated_on + in: query + description: Search on updated_on + required: false + type: string + - name: last_seen + in: query + description: Case insensitive search on last_seen + required: false + type: string + - name: lang + in: query + description: Case insensitive search on lang + required: false + type: string + - name: login_attempts + in: query + description: Search on login_attempts + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of patrons + schema: + type: array + items: + $ref: '#/definitions/patron' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: '1' + x-koha-embed: + - extended_attributes + post: + x-mojo-to: Patrons#add + operationId: addPatron + tags: + - patrons + summary: Add patron + parameters: + - name: body + in: body + description: A JSON object containing information about the new patron + required: true + schema: + $ref: '#/definitions/patron' + consumes: + - application/json + produces: + - application/json + responses: + '201': + description: A successfully created patron + schema: + items: + $ref: '#/definitions/patron' + '400': + description: Bad parameter + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Resource not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + '/patrons/{patron_id}': + get: + x-mojo-to: Patrons#get + operationId: getPatron + tags: + - patrons + summary: Get patron + parameters: + - $ref: '#/parameters/patron_id_pp' + produces: + - application/json + responses: + '200': + description: A patron + schema: + $ref: '#/definitions/patron' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + x-koha-embed: + - extended_attributes + put: + x-mojo-to: Patrons#update + operationId: updatePatron + tags: + - patrons + summary: Update patron + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A JSON object containing new information about existing patron + required: true + schema: + $ref: '#/definitions/patron' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: A successfully updated patron + schema: + items: + $ref: '#/definitions/patron' + '400': + description: Bad parameter + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Resource not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in updating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: '1' + delete: + x-mojo-to: Patrons#delete + operationId: deletePatron + tags: + - patrons + summary: Delete patron + parameters: + - $ref: '#/parameters/patron_id_pp' + produces: + - application/json + responses: + '204': + description: Patron deleted + '400': + description: Patron deletion failed + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '409': + description: | + Conflict. Possible `error_code` attribute values: + + * `has_checkouts`: The patron has pending checkouts + * `has_debt`: The patron has pending debts + * `has_guarantees`: The patron has guarantees + * `is_anonymous_patron`: The system-wide anonymous patron cannot be deleted + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: delete_borrowers + '/patrons/{patron_id}/account': + get: + x-mojo-to: 'Patrons::Account#get' + operationId: getPatronAccount + tags: + - patrons + summary: Get account information for a patron + parameters: + - $ref: '#/parameters/patron_id_pp' + produces: + - application/json + responses: + '200': + description: Patron's account balance + schema: + $ref: '#/definitions/patron_balance' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + updatecharges: remaining_permissions + '/patrons/{patron_id}/account/credits': + post: + x-mojo-to: 'Patrons::Account#add_credit' + operationId: addPatronCredit + tags: + - patrons + summary: Add credit to a patron's account + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A JSON object containing credit information + required: true + schema: + $ref: '#/definitions/patron_account_credit' + produces: + - application/json + responses: + '201': + description: Credit added + schema: + $ref: '#/definitions/account_line' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + updatecharges: remaining_permissions + '/patrons/{patron_id}/extended_attributes': + get: + x-mojo-to: 'Patrons::Attributes#list_patron_attributes' + operationId: getPatronAttributes + tags: + - patrons + summary: List extended attributes for a patron + parameters: + - $ref: '#/parameters/patron_id_pp' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: The patron extended attributes + schema: + type: array + items: + $ref: '#/definitions/patron_extended_attribute' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + post: + x-mojo-to: 'Patrons::Attributes#add' + operationId: addPatronAttribute + tags: + - patrons + summary: Add extended attribute for a patron + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A JSON representation of the patron extended attribute + required: true + schema: + $ref: '#/definitions/patron_extended_attribute' + produces: + - application/json + responses: + '201': + description: A successfully created patron extended attribute + schema: + $ref: '#/definitions/patron_extended_attribute' + '400': + description: Bad parameter + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + put: + x-mojo-to: 'Patrons::Attributes#overwrite' + operationId: overwritePatronAttributes + tags: + - patrons + summary: Overwrite extended attributes for a patron + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A JSON representation of the patron extended attribute + required: true + schema: + type: array + items: + $ref: '#/definitions/patron_extended_attribute' + produces: + - application/json + responses: + '200': + description: The successfully created patron extended attributes + schema: + type: array + items: + $ref: '#/definitions/patron_extended_attribute' + '400': + description: Bad parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in creating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/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 + summary: Update extended attribute + parameters: + - $ref: '#/parameters/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 + additionalProperties: false + produces: + - application/json + responses: + '200': + description: A successfully updated patron extended attribute + schema: + $ref: '#/definitions/patron_extended_attribute' + '400': + description: Bad parameter + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Object not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict in updating resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + delete: + x-mojo-to: 'Patrons::Attributes#delete' + operationId: deletePatronAttribute + tags: + - patrons + summary: Delete extended attribute + parameters: + - $ref: '#/parameters/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/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + '/patrons/{patron_id}/holds': + get: + x-mojo-to: 'Patrons::Holds#list' + operationId: getPatronHolds + tags: + - holds + summary: List holds for a patron + parameters: + - $ref: '#/parameters/patron_id_pp' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: The patron holds + schema: + type: array + items: + $ref: '#/definitions/hold' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: edit_borrowers + '/patrons/{patron_id}/password': + post: + x-mojo-to: 'Patrons::Password#set' + operationId: setPatronPassword + tags: + - patrons + summary: Set password for a patron + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A JSON object containing password information + schema: + type: object + properties: + password: + description: New password (plain text) + type: string + password_2: + description: Repeated new password (plain text) + type: string + required: + - password + - password_2 + additionalProperties: false + produces: + - application/json + responses: + '200': + description: Password changed + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + borrowers: '1' + /ill_backends: + get: + x-mojo-to: Illbackends#list + operationId: listIllbackends + tags: + - illbackends + summary: List ILL backends + parameters: [] + produces: + - application/json + responses: + '200': + description: A list of ILL backends + schema: + $ref: '#/definitions/ill_backends' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: ILL backends not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + ill: '1' + '/ill_backends/{ill_backend_id}': + get: + x-mojo-to: Illbackends#get + operationId: getIllbackends + tags: + - illbackends + summary: Get ILL backend + 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/ill_backend' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: ILL backends not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + ill: '1' + /illrequests: + get: + x-mojo-to: Illrequests#list + operationId: listIllrequests + tags: + - illrequests + summary: List ILL requests + parameters: + - name: embed + in: query + description: Additional objects that should be embedded in the response + required: false + type: array + collectionFormat: csv + items: + type: string + enum: + - patron + - library + - capabilities + - metadata + - requested_partners + - comments + - status_alias + - name: backend + in: query + description: The name of a ILL backend + required: false + type: string + - name: orderid + in: query + description: The order ID of a request + required: false + type: string + - name: biblionumber + in: query + description: Internal biblio identifier + required: false + type: integer + - name: borrowernumber + in: query + description: Internal patron identifier + required: false + type: integer + - name: completed + in: query + description: The date the request was considered completed + required: false + type: string + - name: completed_formatted + in: query + description: The date the request was considered complete formatted + required: false + type: string + - name: status + in: query + description: A full status string e.g. REQREV + required: false + type: string + - name: cost + in: query + description: The quoted cost of the request + required: false + type: number + - name: price_paid + in: query + description: The final cost of the request + required: false + type: number + - name: medium + in: query + description: The medium of the requested item + required: false + type: string + - name: updated + in: query + description: The last updated date of the request + required: false + type: string + - name: updated_formatted + in: query + description: The last updated date of the request formatted + required: false + type: string + - name: placed + in: query + description: The date the request was placed + required: false + type: string + - name: placed_formatted + in: query + description: The date the request was placed formatted + required: false + type: string + - name: branchcode + in: query + description: Library ID + required: false + type: string + produces: + - application/json + responses: + '200': + description: A list of ILL requests + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: ILL requests not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + ill: '1' + /import_batch_profiles: + get: + x-mojo-to: ImportBatchProfiles#list + operationId: listImportBatchProfiles + tags: + - batch_import_profiles + summary: List batch import profiles + parameters: + - name: name + in: query + description: Search on profile's name + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: A list of import batch profiles + schema: + $ref: '#/definitions/import_batch_profiles' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: stage_marc_import + post: + x-mojo-to: ImportBatchProfiles#add + operationId: addImportBatchProfiles + tags: + - batch_import_profiles + summary: Add batch import profile + parameters: + - name: body + in: body + description: A JSON object containing a import batch profile + required: true + schema: + type: object + properties: + name: + description: name of this profile + type: string + matcher_id: + description: the id of the match rule used (matchpoints.matcher_id) + type: + - integer + - 'null' + template_id: + description: the id of the marc modification template + type: + - integer + - 'null' + overlay_action: + description: how to handle duplicate records + type: + - string + - 'null' + nomatch_action: + description: how to handle records where no match is found + type: + - string + - 'null' + item_action: + description: what to do with item records + type: + - string + - 'null' + parse_items: + description: should items be parsed + type: + - boolean + - 'null' + record_type: + description: type of record in the batch + type: + - string + - 'null' + encoding: + description: file encoding + type: + - string + - 'null' + format: + description: marc format + type: + - string + - 'null' + comments: + description: any comments added when the file was uploaded + type: + - string + - 'null' + additionalProperties: false + consumes: + - application/json + produces: + - application/json + responses: + '201': + description: Created Profile + schema: + $ref: '#/definitions/import_batch_profile' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Borrower not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: stage_marc_import + '/import_batch_profiles/{import_batch_profile_id}': + put: + x-mojo-to: ImportBatchProfiles#edit + operationId: editImportBatchProfiles + tags: + - batch_import_profiles + summary: Update batch import profile + parameters: + - $ref: '#/parameters/import_batch_profile_id_pp' + - name: body + in: body + description: A JSON object containing a import batch profile + required: true + schema: + type: object + properties: + name: + description: name of this profile + type: string + matcher_id: + description: the id of the match rule used (matchpoints.matcher_id) + type: + - integer + - 'null' + template_id: + description: the id of the marc modification template + type: + - integer + - 'null' + overlay_action: + description: how to handle duplicate records + type: + - string + - 'null' + nomatch_action: + description: how to handle records where no match is found + type: + - string + - 'null' + item_action: + description: what to do with item records + type: + - string + - 'null' + parse_items: + description: should items be parsed + type: + - boolean + - 'null' + record_type: + description: type of record in the batch + type: + - string + - 'null' + encoding: + description: file encoding + type: + - string + - 'null' + format: + description: marc format + type: + - string + - 'null' + comments: + description: any comments added when the file was uploaded + type: + - string + - 'null' + additionalProperties: false + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: Updated profile + schema: + $ref: '#/definitions/import_batch_profile' + '400': + description: Missing or wrong parameters + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Borrower not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: stage_marc_import + delete: + x-mojo-to: ImportBatchProfiles#delete + operationId: deleteImportBatchProfiles + tags: + - batch_import_profiles + summary: Delete batch import profile + parameters: + - $ref: '#/parameters/import_batch_profile_id_pp' + produces: + - application/json + responses: + '204': + description: Profile deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Hold not allowed + schema: + $ref: '#/definitions/error' + '404': + description: Hold not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: stage_marc_import + '/rotas/{rota_id}/stages/{stage_id}/position': + put: + x-mojo-to: Stage#move + operationId: moveStage + summary: Update stage + tags: + - rotas + parameters: + - name: rota_id + in: path + required: true + description: A rotas ID + type: integer + - name: stage_id + in: path + required: true + description: A stages ID + type: integer + - name: position + in: body + required: true + description: A stages position in the rota + schema: + type: integer + produces: + - application/json + responses: + '200': + description: OK + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Position not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + stockrotation: '1' + '/public/biblios/{biblio_id}': + get: + x-mojo-to: Biblios#get_public + operationId: getBiblioPublic + tags: + - biblios + summary: Get biblio (public) + parameters: + - $ref: '#/parameters/biblio_id_pp' + produces: + - application/marcxml+xml + - application/marc-in-json + - application/marc + - text/plain + responses: + '200': + description: A biblio + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '406': + description: Not acceptable + schema: + type: array + description: Accepted content-types + items: + type: string + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + '/public/biblios/{biblio_id}/items': + get: + x-mojo-to: Biblios#get_items_public + operationId: getBiblioItemsPublic + tags: + - biblios + - items + parameters: + - $ref: '#/parameters/biblio_id_pp' + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + consumes: + - application/json + produces: + - application/json + responses: + '200': + description: A list of the items attached to the record + schema: + type: array + items: + $ref: '#/definitions/item' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Biblio not found + schema: + $ref: '#/definitions/error' + '406': + description: Not acceptable + schema: + type: array + description: Accepted content-types + items: + type: string + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + /public/libraries: + get: + x-mojo-to: Libraries#list + operationId: listLibrariesPublic + tags: + - libraries + summary: List libraries + parameters: + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: A list of libraries + schema: + type: array + items: + $ref: '#/definitions/library' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + '/public/libraries/{library_id}': + get: + x-mojo-to: Libraries#get + operationId: getLibraryPublic + tags: + - libraries + summary: Get library (public) + parameters: + - $ref: '#/parameters/library_id_pp' + produces: + - application/json + responses: + '200': + description: A library + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Library not found + schema: + $ref: '#/definitions/error' + '406': + description: Not acceptable + schema: + type: array + description: Accepted content-types + items: + type: string + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + '/public/patrons/{patron_id}/article_requests/{article_request_id}': + delete: + x-mojo-to: ArticleRequests#patron_cancel + operationId: publicCancelPatronArticleRequest + tags: + - article_requests + summary: Cancel patron's article requests + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: article_request_id + in: path + description: Article request identifier + required: true + type: integer + - name: cancellation_reason + in: query + description: Article request cancellation reason + required: false + type: string + - name: notes + in: query + description: Article request custom cancellation reason + required: false + type: string + produces: + - application/json + responses: + '204': + description: Patron's article request canceled + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + allow-owner: true + '/public/patrons/{patron_id}/password': + post: + x-mojo-to: 'Patrons::Password#set_public' + operationId: setPatronPasswordPublic + tags: + - patrons + summary: Set password for a patron (public) + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A JSON object containing password information + schema: + type: object + properties: + password: + description: New password (plain text) + type: string + password_repeated: + description: Repeated new password (plain text) + type: string + old_password: + description: Patron's original password + type: string + required: + - password + - password_repeated + - old_password + additionalProperties: false + produces: + - application/json + responses: + '200': + description: Password changed + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + allow-owner: true + '/public/patrons/{patron_id}/guarantors/can_see_charges': + put: + x-mojo-to: Patrons#guarantors_can_see_charges + operationId: setPatronGuarantorsCanSeeCharges + tags: + - patrons + summary: Set if guarantors can see charges (public) + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A boolean representing if guarantors should be able to see the patron's charges + required: true + schema: + type: object + properties: + allowed: + type: boolean + additionalProperties: false + produces: + - application/json + responses: + '200': + description: Charges view policy for guarantors changed + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + allow-owner: true + '/public/patrons/{patron_id}/guarantors/can_see_checkouts': + put: + x-mojo-to: Patrons#guarantors_can_see_checkouts + operationId: setPatronGuarantorsCanSeeCheckouts + tags: + - patrons + summary: Set if guarantors can see checkouts + parameters: + - $ref: '#/parameters/patron_id_pp' + - name: body + in: body + description: A boolean representing if guarantors should be able to see the patron's checkouts + required: true + schema: + type: object + properties: + allowed: + type: boolean + additionalProperties: false + produces: + - application/json + responses: + '200': + description: Check-out view policy for guarantors changed + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Patron not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + allow-owner: true + /quotes: + get: + x-mojo-to: Quotes#list + operationId: listQuotes + tags: + - quotes + summary: List quotes + produces: + - application/json + parameters: + - name: quote_id + in: query + description: Case insensitive search on quote id + required: false + type: string + - name: source + in: query + description: Case insensitive search on source + required: false + type: string + - name: text + in: query + description: Case insensitive search on text + required: false + type: string + - name: displayed_on + in: query + description: Case Insensative search on last displayed date + required: false + type: string + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + responses: + '200': + description: A list of quotes + schema: + type: array + items: + $ref: '#/definitions/quote' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + post: + x-mojo-to: Quotes#add + operationId: addQuote + tags: + - quotes + summary: Add quote + parameters: + - name: body + in: body + description: A JSON object containing informations about the new quote + required: true + schema: + $ref: '#/definitions/quote' + produces: + - application/json + responses: + '201': + description: Quote added + schema: + $ref: '#/definitions/quote' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: edit_quotes + '/quotes/{quote_id}': + get: + x-mojo-to: Quotes#get + operationId: getQuote + tags: + - quotes + summary: Get quote + parameters: + - $ref: '#/parameters/quote_id_pp' + produces: + - application/json + responses: + '200': + description: A Quote + schema: + $ref: '#/definitions/quote' + '404': + description: Quote not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + catalogue: '1' + put: + x-mojo-to: Quotes#update + operationId: updateQuote + tags: + - quotes + summary: Update quote + parameters: + - $ref: '#/parameters/quote_id_pp' + - name: body + in: body + description: a quote object + required: true + schema: + $ref: '#/definitions/quote' + produces: + - application/json + responses: + '200': + description: A quote + schema: + $ref: '#/definitions/quote' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Quote not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: edit_quotes + delete: + x-mojo-to: Quotes#delete + operationId: deleteQuote + tags: + - quotes + summary: Delete quote + parameters: + - $ref: '#/parameters/quote_id_pp' + produces: + - application/json + responses: + '204': + description: Quote deleted + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Quote not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + tools: edit_quotes + /return_claims: + post: + x-mojo-to: ReturnClaims#claim_returned + operationId: claimReturned + summary: Add a return claim + tags: + - return_claims + parameters: + - name: body + in: body + description: A JSON object containing fields to modify + required: true + schema: + type: object + properties: + item_id: + description: Internal item id to claim as returned + type: integer + notes: + description: Notes about this return claim + type: string + created_by: + description: User id for the librarian submitting this claim + type: string + charge_lost_fee: + description: Charge a lost fee if true and Koha is set to allow a choice. Ignored otherwise. + type: boolean + additionalProperties: false + produces: + - application/json + responses: + '201': + description: Created claim + schema: + $ref: '#/definitions/return_claim' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Checkout not found + schema: + $ref: '#/definitions/error' + '409': + description: Conflict creating the resource + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + '/return_claims/{claim_id}/notes': + put: + x-mojo-to: ReturnClaims#update_notes + operationId: updateClaimNotes + summary: Update notes + tags: + - return_claims + parameters: + - name: claim_id + in: path + required: true + description: Unique identifier for the claim whose notes are to be updated + type: integer + - name: body + in: body + description: A JSON object containing fields to modify + required: true + schema: + type: object + properties: + notes: + description: Notes about this return claim + type: string + updated_by: + description: Interal identifier for the librarian updating the claim notes + type: string + additionalProperties: false + produces: + - application/json + responses: + '200': + description: Claim notes updated + schema: + $ref: '#/definitions/return_claim' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Claim not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + '/return_claims/{claim_id}/resolve': + put: + x-mojo-to: ReturnClaims#resolve_claim + operationId: updateClaimResolve + summary: Resolve claim + tags: + - return_claims + parameters: + - name: claim_id + in: path + required: true + description: Unique identifier for the claim to be resolved + type: integer + - name: body + in: body + description: A JSON object containing fields to modify + required: true + schema: + type: object + properties: + resolution: + description: The RETURN_CLAIM_RESOLUTION code to be used to resolve the calim + type: string + resolved_by: + description: User id for the librarian resolving the claim + type: string + new_lost_status: + description: New lost status to set to the item + type: string + additionalProperties: false + produces: + - application/json + responses: + '200': + description: Claim resolved + schema: + $ref: '#/definitions/return_claim' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Claim not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + '/return_claims/{claim_id}': + delete: + x-mojo-to: ReturnClaims#delete_claim + operationId: deletedClaim + summary: Delete claim + tags: + - return_claims + parameters: + - name: claim_id + in: path + required: true + description: Unique identifier for the claim to be deleted + type: integer + produces: + - application/json + responses: + '204': + description: Claim deleted + schema: + $ref: '#/definitions/return_claim' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Claim not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + circulate: circulate_remaining_permissions + /suggestions: + get: + x-mojo-to: Suggestions#list + operationId: listSuggestions + description: This resource returns a list of purchase suggestions + summary: List purchase suggestions + tags: + - suggestions + parameters: + - $ref: '#/parameters/match' + - $ref: '#/parameters/order_by' + - $ref: '#/parameters/page' + - $ref: '#/parameters/per_page' + - $ref: '#/parameters/q_param' + - $ref: '#/parameters/q_body' + - $ref: '#/parameters/q_header' + produces: + - application/json + responses: + '200': + description: A list of suggestions + schema: + type: array + items: + $ref: '#/definitions/suggestion' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + suggestions: suggestions_manage + post: + x-mojo-to: Suggestions#add + operationId: addSuggestions + description: This resource accepts a new purchase suggestion and creates it + summary: Add a purchase suggestion + tags: + - suggestions + parameters: + - name: body + in: body + description: A JSON object containing informations about the new suggestion + required: true + schema: + $ref: '#/definitions/suggestion' + produces: + - application/json + responses: + '201': + description: Suggestion added + schema: + $ref: '#/definitions/suggestion' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + suggestions: suggestions_manage + '/suggestions/{suggestion_id}': + get: + x-mojo-to: Suggestions#get + operationId: getSuggestion + description: This resource gives access to a specific purchase suggestion + summary: Get purchase suggestion + tags: + - suggestions + parameters: + - $ref: '#/parameters/suggestion_id_pp' + produces: + - application/json + responses: + '200': + description: A suggestion + schema: + $ref: '#/definitions/suggestion' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Suggestion not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + suggestions: suggestions_manage + put: + x-mojo-to: Suggestions#update + operationId: updateSuggestion + description: This resource allows updating an existing purchase suggestion + summary: Update purchase suggestion + tags: + - suggestions + parameters: + - $ref: '#/parameters/suggestion_id_pp' + - name: body + in: body + description: A JSON object containing informations about the new hold + required: true + schema: + $ref: '#/definitions/suggestion' + produces: + - application/json + responses: + '200': + description: A suggestion + schema: + $ref: '#/definitions/suggestion' + '400': + description: Bad request + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Suggestion not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + suggestions: suggestions_manage + delete: + x-mojo-to: Suggestions#delete + operationId: deleteSuggestion + description: This resource deletes an existing purchase suggestion + summary: Delete purchase suggestion + tags: + - suggestions + parameters: + - $ref: '#/parameters/suggestion_id_pp' + produces: + - application/json + responses: + '204': + description: Suggestion deleted + schema: + type: string + '401': + description: Authentication required + schema: + $ref: '#/definitions/error' + '403': + description: Access forbidden + schema: + $ref: '#/definitions/error' + '404': + description: Suggestion not found + schema: + $ref: '#/definitions/error' + '500': + description: | + Internal server error. Possible `error_code` attribute values: + + * `internal_server_error` + schema: + $ref: '#/definitions/error' + '503': + description: Under maintenance + schema: + $ref: '#/definitions/error' + x-koha-authorization: + permissions: + suggestions: suggestions_manage +definitions: + account_line: + type: object + properties: + account_line_id: + type: integer + description: Internal account line identifier + checkout_id: + type: + - integer + - 'null' + description: Internal identifier for the checkout the account line is related to + patron_id: + type: integer + description: Internal identifier for the patron the account line belongs to + item_id: + type: + - integer + - 'null' + description: Internal identifier for the item the account line is related to + date: + type: string + format: date-time + description: Date the account line was created + amount: + type: number + description: Account line amount + description: + type: + - string + - 'null' + description: Account line description + account_type: + type: + - string + - 'null' + description: Account line type + debit_type: + type: + - string + - 'null' + description: Account line debit type + credit_type: + type: + - string + - 'null' + description: Account line credit type + payment_type: + type: + - string + - 'null' + description: Payment type + amount_outstanding: + type: number + description: Outstanding amount + last_increment: + type: + - number + - 'null' + description: The amount the line was increased last time + timestamp: + type: string + format: date-time + description: Timestamp for the latest line update + internal_note: + type: + - string + - 'null' + description: Internal note + user_id: + type: + - integer + - 'null' + description: Internal patron identifier for the staff member that introduced the account line + library_id: + type: + - string + - 'null' + description: Internal identifier for the library in which the transaction took place + interface: + type: + - string + - 'null' + description: 'Interface in which the account line was generated (values can be: api, cron, commandline, intranet, opac and sip)' + status: + type: + - string + - 'null' + description: The credit/debit status + cash_register_id: + type: + - integer + - 'null' + description: Internal identifier for the cash register used for the payment (if any) + additionalProperties: false + advancededitormacro: + type: object + properties: + macro_id: + $ref: '#/x-primitives/advancededitormacro_id' + name: + description: macro name + type: string + macro_text: + description: macro text + type: + - string + - 'null' + patron_id: + description: borrower number + type: + - integer + - 'null' + shared: + description: is macro shared + type: + - boolean + - 'null' + additionalProperties: false + required: + - name + - macro_text + - patron_id + - shared + allows_renewal: + type: object + properties: + allows_renewal: + type: boolean + description: 'Renewability status; true = renewable, false = not renewable' + max_renewals: + type: integer + description: Maximum number of possible renewals + current_renewals: + type: integer + description: Current used renewals + unseen_renewals: + type: integer + description: Number of consecutive times the item was renewed without being seen + error: + type: + - string + - 'null' + description: Description on false allows_renewal. + additionalProperties: false + basket: + type: object + properties: + basket_id: + type: integer + description: Internal identifier for the basket + name: + type: string + description: Basket name + internal_note: + type: + - string + - 'null' + description: Internal note + vendor_note: + type: + - string + - 'null' + description: Vendor note + contract_id: + type: integer + description: Internal identifier of the linked contract + creation_date: + type: + - string + - 'null' + format: date + description: The date the basket was created + close_date: + type: + - string + - 'null' + format: date + description: The date the basket was closed + vendor_id: + type: integer + description: Internal identifier for the vendor + authorised_by: + type: + - integer + - 'null' + description: Internal patron identifier of the basket creator + basket_group_id: + type: + - integer + - 'null' + description: links this basket to its group (aqbasketgroups.id) + delivery_library: + type: + - string + - 'null' + description: basket delivery place + billing_library: + type: + - string + - 'null' + description: basket billing place + library_id: + type: + - integer + - 'null' + description: Library the basket belongs to + standing: + type: boolean + description: If the orders in this basket are standing + create_items: + type: string + enum: + - ordering + - receiving + - cataloguing + description: 'When items should be created for orders in this basket (Options: ''ordering'', ''receiving'', ''cataloguing''. Null means system wide config)' + additionalProperties: false + cashup: + type: object + properties: + cashup_id: + type: integer + description: Internal cashup identifier + cash_register_id: + type: integer + description: Internal identifier for the register the cashup belongs to + manager_id: + type: integer + description: Internal identifier for the manager the cashup was performed by + manager: + type: + - object + - 'null' + description: The object representing the manager the cashup was performed by + amount: + type: number + description: Account line amount + timestamp: + type: string + format: date-time + description: Timestamp for the latest line update + summary: + type: object + description: A summary of the cashup action + additionalProperties: false + checkout: + type: object + properties: + checkout_id: + type: integer + description: internally assigned checkout identifier + patron_id: + $ref: '#/x-primitives/patron_id' + item_id: + type: integer + description: internal identifier of checked out item + due_date: + type: string + format: date-time + description: Due date + library_id: + type: + - string + - 'null' + description: code of the library the item was checked out + issuer_id: + type: + - integer + - 'null' + description: internally assigned for the user that processed the checkout + checkin_date: + type: + - string + - 'null' + format: date-time + description: Date the item was returned + last_renewed_date: + type: + - string + - 'null' + format: date-time + description: Date the item was last renewed + renewals: + type: + - integer + - 'null' + description: Number of renewals + unseen_renewals: + type: + - integer + - 'null' + description: Number of consecutive unseen renewals + auto_renew: + type: boolean + description: Auto renewal + auto_renew_error: + type: + - string + - 'null' + description: Auto renewal error + timestamp: + type: string + description: Last update time + checkout_date: + type: string + format: date-time + description: Date the item was issued + onsite_checkout: + type: boolean + description: On site checkout + note: + type: + - string + - 'null' + description: Issue note text + note_date: + type: + - string + - 'null' + format: date + description: Datetime of the issue note + note_seen: + type: + - boolean + - 'null' + description: has the note been seen already + issuer: + type: + - object + - 'null' + description: The object representing the checkout issuer + item: + type: + - object + - 'null' + description: The object representing the checked out item + library: + type: + - object + - 'null' + description: The object representing the checkout library + patron: + type: + - object + - 'null' + description: The object representing the checkout patron + additionalProperties: false + checkouts: + type: array + items: + $ref: '#/definitions/checkout' + additionalProperties: false + circ-rule-kind: + type: object + properties: + scope: + description: levels that this rule kind can be set for + type: array + items: + type: string + enum: + - branchcode + - categorycode + - itemtype + additionalProperties: false + required: + - scope + city: + type: object + properties: + city_id: + $ref: '#/x-primitives/city_id' + name: + description: city name + type: string + state: + description: city state + type: + - string + - 'null' + postal_code: + description: city postal code + type: + - string + - 'null' + country: + description: city country + type: + - string + - 'null' + additionalProperties: false + required: + - name + - state + - postal_code + - country + error: + type: object + properties: + error: + description: Error message + type: string + error_code: + description: Error code + type: string + additionalProperties: true + fund: + type: object + properties: + fund_id: + $ref: '#/x-primitives/fund_id' + code: + type: + - string + - 'null' + description: Code assigned to the fund by the user + name: + type: + - string + - 'null' + description: Name assigned to the fund by the user + library_id: + type: + - string + - 'null' + description: Internal identifier for the library that this fund belongs to + total_amount: + type: + - number + - 'null' + description: Total amount for this fund + warn_at_percentage: + type: + - number + - 'null' + description: Warning at percentage + warn_at_amount: + type: + - number + - 'null' + description: Warning at amount + notes: + type: + - string + - 'null' + description: Notes related to this fund + budget_id: + type: + - number + - 'null' + description: Internal identifier for the budget + timestamp: + type: + - string + format: date-time + description: Timestamp + fund_owner_id: + type: + - number + - 'null' + description: Internal identifier for the fund owner + fund_access: + type: + - number + - 'null' + description: 'Level of permission for this fund (1: owner, 2: owner, users and library, 3: owner and users)' + parent_fund_id: + type: + - integer + - 'null' + description: Internal identifier for parent fund + statistic1_auth_value_category: + type: + - string + - 'null' + description: Statistical category for this fund + statistic2_auth_value_category: + type: + - string + - 'null' + description: Second statistical category for this fund + additionalProperties: false + required: + - name + hold: + type: object + properties: + hold_id: + type: integer + description: Internal hold identifier + patron_id: + type: integer + description: Internal patron identifier + hold_date: + type: + - string + - 'null' + format: date + description: The date the hold was placed + biblio_id: + type: integer + description: Internal biblio identifier + pickup_library_id: + type: + - string + - 'null' + description: Internal library identifier for the pickup library + desk_id: + type: + - integer + - 'null' + description: The id of the desk + cancellation_date: + type: + - string + - 'null' + format: date + description: The date the hold was cancelled + cancellation_reason: + type: + - string + - 'null' + description: The reason the hold was cancelled + notes: + type: + - string + - 'null' + description: Notes related to this hold + priority: + type: + - integer + - 'null' + description: Where in the queue the patron sits + status: + type: + - string + - 'null' + description: A one letter code defining what the status of the hold is after it has been confirmed + timestamp: + type: string + format: date-time + description: Timestamp for the latest hold update + item_id: + type: + - string + - 'null' + description: Internal item identifier + waiting_date: + type: + - string + - 'null' + format: date + description: The date the item was marked as waiting for the patron at the library + expiration_date: + type: + - string + - 'null' + format: date + description: The date the hold expires + lowest_priority: + type: boolean + description: Controls if the hold is given the lowest priority on the queue + suspended: + type: boolean + description: Controls if the hold is suspended + suspended_until: + type: + - string + - 'null' + format: date-time + description: Date until which the hold has been suspended + non_priority: + description: Set this hold as non priority + type: boolean + item_type: + type: + - string + - 'null' + description: 'If record level hold, the optional itemtype of the item the patron is requesting' + item_level: + type: boolean + description: If the hold is placed at item level + additionalProperties: false + holds: + type: array + items: + $ref: '#/definitions/hold' + additionalProperties: false + ill_backend: + type: object + properties: + ill_backend_id: + type: string + description: Internal ILL backend identifier + capabilities: + type: object + description: List of capabilities + additionalProperties: false + ill_backends: + type: array + items: + $ref: '#/definitions/ill_backend' + additionalProperties: false + import_batch_profile: + type: object + properties: + profile_id: + type: integer + description: Internal profile identifier + name: + description: name of this profile + type: string + matcher_id: + description: the id of the match rule used (matchpoints.matcher_id) + type: + - integer + - 'null' + template_id: + description: the id of the marc modification template + type: + - integer + - 'null' + overlay_action: + description: how to handle duplicate records + type: + - string + - 'null' + nomatch_action: + description: how to handle records where no match is found + type: + - string + - 'null' + item_action: + description: what to do with item records + type: + - string + - 'null' + parse_items: + description: should items be parsed + type: + - boolean + - 'null' + record_type: + description: type of record in the batch + type: + - string + - 'null' + encoding: + description: file encoding + type: + - string + - 'null' + format: + description: marc format + type: + - string + - 'null' + comments: + description: any comments added when the file was uploaded + type: + - string + - 'null' + additionalProperties: false + import_batch_profiles: + type: array + items: + $ref: '#/definitions/import_batch_profile' + additionalProperties: false + invoice: + type: object + properties: + invoice_id: + type: integer + description: Internal identifier for the incoide. Generated on POST + invoice_number: + type: string + description: Invoice number assigned by the vendor + vendor_id: + type: integer + description: Internal identifier for the vendor + shipping_date: + type: + - string + - 'null' + format: date + description: Date of shipping + invoice_date: + type: + - string + - 'null' + format: date + description: Date of billing + closed: + type: boolean + description: If the invoice is closed + close_date: + type: string + format: date + description: Invoice close date (only when the invoice is closed) + shipping_cost: + type: + - integer + - 'null' + description: Shipping cost + shipping_cost_budget_id: + type: + - integer + - 'null' + description: Shipping cost linking to budget + additionalProperties: false + item: + type: object + properties: + item_id: + type: integer + description: Internal item identifier + biblio_id: + type: integer + description: Internal identifier for the parent bibliographic record + external_id: + type: + - string + - 'null' + description: The item's barcode + acquisition_date: + type: + - string + - 'null' + format: date + description: The date the item was acquired + acquisition_source: + type: + - string + - 'null' + description: Information about the acquisition source (it is not really a vendor id) + home_library_id: + type: + - string + - 'null' + description: Internal library id for the library the item belongs to + purchase_price: + type: + - number + - 'null' + description: Purchase price + replacement_price: + type: + - number + - 'null' + description: Cost the library charges to replace the item (e.g. if lost) + replacement_price_date: + type: + - string + - 'null' + format: date + description: The date the replacement price is effective from + last_checkout_date: + type: + - string + - 'null' + format: date + description: The date the item was last checked out + last_seen_date: + type: + - string + - 'null' + format: date + description: The date the item barcode was last scanned + not_for_loan_status: + type: integer + description: Authorized value defining why this item is not for loan + damaged_status: + type: integer + description: Authorized value defining this item as damaged + damaged_date: + type: + - string + - 'null' + description: 'The date and time an item was last marked as damaged, NULL if not damaged' + lost_status: + type: integer + description: Authorized value defining this item as lost + lost_date: + type: + - string + - 'null' + format: date-time + description: 'The date and time an item was last marked as lost, NULL if not lost' + withdrawn: + type: integer + description: Authorized value defining this item as withdrawn + withdrawn_date: + type: + - string + - 'null' + format: date-time + description: 'The date and time an item was last marked as withdrawn, NULL if not withdrawn' + callnumber: + type: + - string + - 'null' + description: Call number for this item + coded_location_qualifier: + type: + - string + - 'null' + description: Coded location qualifier + checkouts_count: + type: + - integer + - 'null' + description: Number of times this item has been checked out/issued + renewals_count: + type: + - integer + - 'null' + description: Number of times this item has been renewed + holds_count: + type: + - integer + - 'null' + description: Number of times this item has been placed on hold/reserved + restricted_status: + type: + - integer + - 'null' + description: Authorized value defining use restrictions for this item + public_notes: + type: + - string + - 'null' + description: Public notes on this item + internal_notes: + type: + - string + - 'null' + description: Non-public notes on this item + holding_library_id: + type: + - string + - 'null' + description: Library that is currently in possession item + timestamp: + type: string + format: date-time + description: Date and time this item was last altered + location: + type: + - string + - 'null' + description: Authorized value for the shelving location for this item + permanent_location: + type: + - string + - 'null' + description: 'Linked to the CART and PROC temporary locations feature, stores the permanent shelving location' + checked_out_date: + type: + - string + - 'null' + format: date + description: 'Defines if item is checked out (NULL for not checked out, and checkout date for checked out)' + call_number_source: + type: + - string + - 'null' + description: Classification source used on this item + call_number_sort: + type: + - string + - 'null' + description: '?' + collection_code: + type: + - string + - 'null' + description: Authorized value for the collection code associated with this item + materials_notes: + type: + - string + - 'null' + description: Materials specified + uri: + type: + - string + - 'null' + description: URL for the item + item_type_id: + type: + - string + - 'null' + description: Itemtype defining the type for this item + extended_subfields: + type: + - string + - 'null' + description: Additional 952 subfields in XML format + serial_issue_number: + type: + - string + - 'null' + description: serial enumeration/chronology for the item + copy_number: + type: + - string + - 'null' + description: Copy number + inventory_number: + type: + - string + - 'null' + description: Inventory number + new_status: + type: + - string + - 'null' + description: '''new'' value, whatever free-text information.' + exclude_from_local_holds_priority: + type: boolean + description: Exclude this item from local holds priority. + additionalProperties: false + required: + - item_id + - biblio_id + - not_for_loan_status + - damaged_status + - lost_status + - withdrawn + library: + type: object + properties: + library_id: + $ref: '#/x-primitives/library_id' + name: + type: string + description: Printable name of library + address1: + type: + - string + - 'null' + description: the first address line of the library + address2: + type: + - string + - 'null' + description: the second address line of the library + address3: + type: + - string + - 'null' + description: the third address line of the library + postal_code: + type: + - string + - 'null' + description: the postal code of the library + city: + type: + - string + - 'null' + description: the city or province of the library + state: + type: + - string + - 'null' + description: the reqional state of the library + country: + type: + - string + - 'null' + description: the county of the library + phone: + type: + - string + - 'null' + description: the primary phone of the library + fax: + type: + - string + - 'null' + description: the fax number of the library + email: + type: + - string + - 'null' + description: the primary email address of the library + illemail: + type: + - string + - 'null' + description: the ILL staff email address of the library + reply_to_email: + type: + - string + - 'null' + description: the email to be used as a Reply-To + return_path_email: + type: + - string + - 'null' + description: the email to be used as Return-Path + url: + type: + - string + - 'null' + description: the URL for your library or branch's website + ip: + type: + - string + - 'null' + description: the IP address for your library or branch + notes: + type: + - string + - 'null' + description: notes related to your library or branch + opac_info: + type: + - string + - 'null' + description: HTML that displays in OPAC + geolocation: + type: + - string + - 'null' + description: geolocation of your library + marc_org_code: + type: + - string + - 'null' + description: 'MARC Organization Code, see http://www.loc.gov/marc/organizations/orgshome.html, when empty defaults to syspref MARCOrgCode' + pickup_location: + type: boolean + description: If the library can act as a pickup location + public: + type: boolean + description: If the library is visible to the public + smtp_server: + type: + - object + - 'null' + description: The library effective SMTP server + needs_override: + type: boolean + description: If the library needs an override to act as pickup location for a hold + additionalProperties: false + required: + - library_id + - name + order: + type: object + properties: + order_id: + type: integer + description: Internally assigned order identifier + biblio_id: + type: + - integer + - 'null' + description: Identifier for the linked bibliographic record + created_by: + type: + - integer + - 'null' + description: Interal patron identifier of the order line creator + entry_date: + type: + - string + - 'null' + format: date + description: Date the bib was added to the basket + quantity: + type: + - integer + - 'null' + description: Ordered quantity + currency: + type: + - string + - 'null' + description: Currency used for the purchase + list_price: + type: + - number + - 'null' + description: Vendor price for the line item + replacement_price: + type: + - number + - 'null' + description: Replacement cost for this item + date_received: + type: + - string + - 'null' + format: date + description: Date the order was received + invoice_id: + type: + - integer + - 'null' + description: Id of the order invoice + shipping_cost: + type: + - number + - 'null' + description: Shipping cost + unit_price: + type: + - number + - 'null' + description: The actual cost entered when receiving this line item + unit_price_tax_excluded: + type: + - number + - 'null' + description: Unit price excluding tax (on receiving) + unit_price_tax_included: + type: + - number + - 'null' + description: Unit price including tax (on receiving) + quantity_received: + type: integer + description: Quantity received so far + cancellation_date: + type: + - string + - 'null' + format: date + description: Date the line item was deleted + cancellation_reason: + type: + - string + - 'null' + description: Reason of cancellation + internal_note: + type: + - string + - 'null' + description: 'Notes related to this order line, made for staff' + vendor_note: + type: + - string + - 'null' + description: 'Notes related to this order line, made for vendor' + basket_id: + type: + - integer + - 'null' + description: Basket this order is linked to + timestamp: + type: string + format: date-time + description: Date and time this order line was last modified + rrp: + type: + - number + - 'null' + description: Retail cost for this item + rrp_tax_excluded: + type: + - number + - 'null' + description: Replacement cost for this item (tax excluded) + rrp_tax_included: + type: + - number + - 'null' + description: Replacement cost for this item (tax included) + ecost: + type: + - number + - 'null' + description: Effective cost + ecost_tax_excluded: + type: + - number + - 'null' + description: Effective cost (tax excluded) + ecost_tax_included: + type: + - number + - 'null' + description: Effective cost (tax included) + tax_rate_on_ordering: + type: + - number + - 'null' + description: Tax rate on ordering (%) + tax_rate_on_receiving: + type: + - number + - 'null' + description: Tax rate on receiving (%) + tax_value_on_ordering: + type: + - number + - 'null' + description: Tax value on ordering + tax_value_on_receiving: + type: + - number + - 'null' + description: Tax value on receiving + discount_rate: + type: + - number + - 'null' + description: Discount rate + fund_id: + type: integer + description: Internal identifier for the fund this order goes against + statistics_1: + type: + - string + - 'null' + description: Statistical field + statistics_2: + type: + - string + - 'null' + description: Statistical field (2) + statistics_1_authcat: + type: + - string + - 'null' + description: Statistical category for this order + statistics_2_authcat: + type: + - string + - 'null' + description: Statistical category for this order (2) + uncertain_price: + type: boolean + description: If this price was uncertain + claims_count: + type: integer + description: Generated claim letters count + last_claim_date: + type: + - string + - 'null' + format: date + description: Last date a claim letter was generated + subscription_id: + type: + - integer + - 'null' + description: Subscription ID linking the order to a subscription + parent_order_id: + type: + - integer + - 'null' + description: Order ID of parent order line if exists + status: + type: string + enum: + - new + - ordered + - partial + - complete + - cancelled + description: The current order status + basket: + type: + - object + - 'null' + biblio: + type: + - object + - 'null' + current_item_level_holds_count: + type: integer + description: Current holds count for associated items + fund: + type: + - object + - 'null' + invoice: + type: + - object + - 'null' + items: + type: array + subscription: + type: + - object + - 'null' + additionalProperties: false + patron: + type: object + properties: + patron_id: + $ref: '#/x-primitives/patron_id' + cardnumber: + $ref: '#/x-primitives/cardnumber' + surname: + $ref: '#/x-primitives/surname' + firstname: + $ref: '#/x-primitives/firstname' + title: + type: + - string + - 'null' + description: patron's title + other_name: + type: + - string + - 'null' + description: any other names associated with the patron + initials: + type: + - string + - 'null' + description: initials of the patron + street_number: + type: + - string + - 'null' + description: street number of patron's primary address + street_type: + type: + - string + - 'null' + description: street type of patron's primary address + address: + type: + - string + - 'null' + description: first address line of patron's primary address + address2: + type: + - string + - 'null' + description: second address line of patron's primary address + city: + type: + - string + - 'null' + description: city or town of patron's primary address + state: + type: + - string + - 'null' + description: state or province of patron's primary address + postal_code: + type: + - string + - 'null' + description: zip or postal code of patron's primary address + country: + type: + - string + - 'null' + description: country of patron's primary address + email: + $ref: '#/x-primitives/email' + phone: + $ref: '#/x-primitives/phone' + mobile: + type: + - string + - 'null' + description: the other phone number for patron's primary address + fax: + type: + - string + - 'null' + description: fax number for patron's primary address + secondary_email: + type: + - string + - 'null' + description: secondary email address for patron's primary address + secondary_phone: + type: + - string + - 'null' + description: secondary phone number for patron's primary address + altaddress_street_number: + type: + - string + - 'null' + description: street number of patron's alternate address + altaddress_street_type: + type: + - string + - 'null' + description: street type of patron's alternate address + altaddress_address: + type: + - string + - 'null' + description: first address line of patron's alternate address + altaddress_address2: + type: + - string + - 'null' + description: second address line of patron's alternate address + altaddress_city: + type: + - string + - 'null' + description: city or town of patron's alternate address + altaddress_state: + type: + - string + - 'null' + description: state or province of patron's alternate address + altaddress_postal_code: + type: + - string + - 'null' + description: zip or postal code of patron's alternate address + altaddress_country: + type: + - string + - 'null' + description: country of patron's alternate address + altaddress_email: + type: + - string + - 'null' + description: email address for patron's alternate address + altaddress_phone: + type: + - string + - 'null' + description: phone number for patron's alternate address + date_of_birth: + type: + - string + - 'null' + format: date + description: patron's date of birth + library_id: + type: string + description: Internal identifier for the patron's home library + category_id: + type: string + description: Internal identifier for the patron's category + date_enrolled: + type: + - string + - 'null' + format: date + description: date the patron was added to Koha + expiry_date: + type: + - string + - 'null' + format: date + description: date the patron's card is set to expire + date_renewed: + type: + - string + - 'null' + format: date + description: date the patron's card was last renewed + incorrect_address: + type: + - boolean + - 'null' + description: set to 1 if library marked this patron as having an unconfirmed address + patron_card_lost: + type: + - boolean + - 'null' + description: set to 1 if library marked this patron as having lost his card + restricted: + type: boolean + readOnly: true + description: If any restriction applies to the patron + staff_notes: + type: + - string + - 'null' + description: a note on the patron's account + relationship_type: + type: + - string + - 'null' + description: used for children to include the relationship to their guarantor + gender: + type: + - string + - 'null' + description: patron's gender + userid: + type: + - string + - 'null' + description: patron's login + opac_notes: + type: + - string + - 'null' + description: a note on the patron's account visible in OPAC and staff interface + altaddress_notes: + type: + - string + - 'null' + description: a note related to patron's alternate address + statistics_1: + type: + - string + - 'null' + description: a field that can be used for any information unique to the library + statistics_2: + type: + - string + - 'null' + description: a field that can be used for any information unique to the library + autorenew_checkouts: + type: boolean + description: indicate whether auto-renewal is allowed for patron + altcontact_firstname: + type: + - string + - 'null' + description: first name of alternate contact for the patron + altcontact_surname: + type: + - string + - 'null' + description: surname or last name of the alternate contact for the patron + altcontact_address: + type: + - string + - 'null' + description: the first address line for the alternate contact for the patron + altcontact_address2: + type: + - string + - 'null' + description: the second address line for the alternate contact for the patron + altcontact_city: + type: + - string + - 'null' + description: the city for the alternate contact for the patron + altcontact_state: + type: + - string + - 'null' + description: the state for the alternate contact for the patron + altcontact_postal_code: + type: + - string + - 'null' + description: the zipcode for the alternate contact for the patron + altcontact_country: + type: + - string + - 'null' + description: the country for the alternate contact for the patron + altcontact_phone: + type: + - string + - 'null' + description: the phone number for the alternate contact for the patron + sms_number: + type: + - string + - 'null' + description: the mobile phone number where the patron would like to receive notices (if SMS turned on) + sms_provider_id: + type: + - integer + - 'null' + description: the provider of the mobile phone number defined in smsalertnumber + privacy: + type: integer + description: patron's privacy settings related to their checkout history + privacy_guarantor_checkouts: + type: integer + description: controls if relatives can see this patron's checkouts + privacy_guarantor_fines: + type: boolean + description: controls if relatives can see this patron's fines + check_previous_checkout: + type: string + description: 'produce a warning for this patron if this item has previously been checked out to this patron if ''yes'', not if ''no'', defer to category setting if ''inherit''' + updated_on: + type: string + format: date-time + description: time of last change could be useful for synchronization with external systems (among others) + last_seen: + type: + - string + - 'null' + format: date-time + description: last time a patron has been seen (connected at the OPAC or staff interface) + lang: + type: string + description: lang to use to send notices to this patron + login_attempts: + type: + - integer + - 'null' + description: number of failed login attemps + overdrive_auth_token: + type: + - string + - 'null' + description: persist OverDrive auth token + anonymized: + type: boolean + readOnly: true + description: If the patron has been anonymized + extended_attributes: + type: array + description: patron's extended attributes + items: + $ref: '#/definitions/patron_extended_attribute' + additionalProperties: false + required: + - surname + - address + - city + - library_id + - category_id + patron_account_credit: + type: object + properties: + credit_type: + type: string + description: 'Type of credit (''CREDIT'', ''FORGIVEN'', ''LOST_FOUND'', ''PAYMENT'', ''WRITEOFF'' )' + amount: + type: number + minimum: 0 + description: Credit amount + library_id: + type: + - string + - 'null' + description: Internal identifier for the library in which the transaction took place + account_lines_ids: + type: array + items: + type: integer + description: List of account line ids the credit goes against (optional) + payment_type: + type: string + description: Payment type (only applies when credit_type=payment) + date: + type: string + format: date + description: Date the credit was recorded (optional) + description: + type: string + description: Description + note: + type: string + description: Internal note + required: + - amount + additionalProperties: false + patron_balance: + type: object + properties: + balance: + type: number + description: Signed decimal number + outstanding_credits: + properties: + total: + type: number + lines: + type: array + items: + $ref: '#/definitions/account_line' + outstanding_debits: + type: object + properties: + total: + type: number + lines: + type: array + items: + $ref: '#/definitions/account_line' + additionalProperties: false + required: + - balance + patron_extended_attribute: + type: object + properties: + extended_attribute_id: + description: Internal ID for the extended attribute + type: integer + type: + description: Extended attribute type + type: string + value: + description: Extended attribute value + type: + - string + additionalProperties: false + required: + - type + - value + quote: + type: object + properties: + quote_id: + $ref: '#/x-primitives/quote_id' + source: + description: source of the quote + type: string + text: + description: text + type: + - string + - 'null' + displayed_on: + description: Last display date + type: + - string + - 'null' + additionalProperties: false + required: + - quote_id + - source + - text + return_claim: + type: object + properties: + claim_id: + type: + - integer + description: internally assigned return claim identifier + item_id: + type: + - integer + description: internal identifier of the claimed item + issue_id: + type: + - integer + - 'null' + description: internal identifier of the claimed checkout if still checked out + old_issue_id: + type: + - integer + - 'null' + description: internal identifier of the claimed checkout if not longer checked out + patron_id: + $ref: '#/x-primitives/patron_id' + notes: + type: + - string + - 'null' + description: notes about this claim + created_on: + type: + - string + - 'null' + format: date-time + description: date of claim creation + created_by: + type: + - integer + - 'null' + description: patron id of librarian who made the claim + updated_on: + type: + - string + - 'null' + format: date-time + description: date the claim was last updated + updated_by: + type: + - integer + - 'null' + description: patron id of librarian who last updated the claim + resolution: + type: + - string + - 'null' + description: code of resolution type for this claim + resolved_on: + type: + - string + - 'null' + format: date-time + description: date the claim was resolved + resolved_by: + type: + - integer + - 'null' + description: patron id of librarian who resolved this claim + additionalProperties: false + smtp_server: + type: object + properties: + smtp_server_id: + type: integer + description: Internal SMTP server identifier + readOnly: true + name: + type: string + description: Name of the SMTP server + host: + type: string + description: SMTP host name + port: + type: integer + description: TCP port number + timeout: + type: integer + description: Maximum time in seconds to wait for server + ssl_mode: + type: string + enum: + - disabled + - ssl + - starttls + description: If SSL/TLS will be used + user_name: + type: + - string + - 'null' + description: The user name to use for authentication (optional) + password: + type: + - string + - 'null' + description: The password to use for authentication (optional) + debug: + type: boolean + description: If the SMTP connection is set to debug mode + additionalProperties: false + required: + - name + suggestion: + type: object + properties: + suggestion_id: + type: integer + readOnly: true + description: unique identifier assigned automatically by Koha + suggested_by: + type: + - integer + - 'null' + description: 'patron_id for the person making the suggestion, foreign key linking to the borrowers table' + suggestion_date: + type: string + format: date + description: the suggestion was submitted + managed_by: + type: + - integer + - 'null' + description: 'patron_id for the librarian managing the suggestion, foreign key linking to the borrowers table' + managed_date: + type: + - string + - 'null' + format: date + description: date the suggestion was updated + accepted_by: + type: + - integer + - 'null' + description: 'patron_id for the librarian who accepted the suggestion, foreign key linking to the borrowers table' + accepted_date: + type: + - string + - 'null' + format: date + description: date the suggestion was marked as accepted + rejected_by: + type: + - integer + - 'null' + description: 'patron_id for the librarian who rejected the suggestion, foreign key linking to the borrowers table' + rejected_date: + type: + - string + - 'null' + format: date + description: date the suggestion was marked as rejected + last_status_change_by: + type: + - integer + - 'null' + description: patron the suggestion was last modified by + last_status_change_date: + type: + - string + - 'null' + format: date + description: date the suggestion was last modified + status: + type: string + description: Suggestion status + enum: + - ASKED + - CHECKED + - ACCEPTED + - REJECTED + note: + type: + - string + - 'null' + description: note entered on the suggestion + author: + type: + - string + - 'null' + description: author of the suggested item + title: + type: + - string + - 'null' + description: title of the suggested item + copyright_date: + type: + - integer + - 'null' + description: copyright date of the suggested item + publisher_code: + type: + - string + - 'null' + description: publisher of the suggested item + timestamp: + type: + - string + - 'null' + format: date-time + description: timestamp of date created + volume_desc: + type: + - string + - 'null' + description: volume description + publication_year: + type: + - string + - 'null' + description: year of publication + publication_place: + type: + - string + - 'null' + description: publication place of the suggested item + isbn: + type: + - string + - 'null' + description: isbn of the suggested item + biblio_id: + type: + - integer + - 'null' + description: foreign key linking the suggestion to the biblio table after the suggestion has been ordered + reason: + type: + - string + - 'null' + description: reason for accepting or rejecting the suggestion + patron_reason: + type: + - string + - 'null' + description: reason for making the suggestion + budget_id: + type: + - integer + - 'null' + description: foreign key linking the suggested budget to the aqbudgets table + library_id: + type: + - string + - 'null' + description: foreign key linking the suggested branch to the branches table + collection_title: + type: + - string + - 'null' + description: collection name for the suggested item + item_type: + type: + - string + - 'null' + description: suggested item type + quantity: + type: + - string + - 'null' + description: suggested quantity to be purchased + currency: + type: + - string + - 'null' + description: suggested currency for the suggested price + item_price: + type: + - number + - 'null' + description: suggested price + total_price: + type: + - string + - 'null' + description: suggested total cost (price*quantity updated for currency) + archived: + type: + - boolean + - 'null' + description: archived (processed) suggestion + additionalProperties: false + transfer_limit: + type: object + properties: + limit_id: + type: integer + description: Internal transfer limit identifier + to_library_id: + type: string + description: Internal library id for which library the item is going to + from_library_id: + type: string + description: Internal library id for which library the item is coming from + item_type: + type: + - string + - 'null' + description: Itemtype defining the type for this limi + collection_code: + type: + - string + - 'null' + description: Authorized value for the collection code associated with this limit + additionalProperties: false + required: + - to_library_id + - from_library_id + vendor: + type: object + properties: + id: + $ref: '#/x-primitives/vendor_id' + name: + type: + - string + description: Vendor name + address1: + type: + - string + - 'null' + description: Vendor physical address (line 1) + address2: + type: + - string + - 'null' + description: Vendor physical address (line 2) + address3: + type: + - string + - 'null' + description: Vendor physical address (line 3) + address4: + type: + - string + - 'null' + description: Vendor physical address (line 4) + phone: + type: + - string + - 'null' + description: Vendor phone number + fax: + type: + - string + - 'null' + description: Vendor fax number + accountnumber: + type: + - string + - 'null' + description: Vendor account number + notes: + type: + - string + - 'null' + description: Vendor notes + postal: + type: + - string + - 'null' + description: Vendor postal address + url: + type: + - string + - 'null' + description: Vendor web address + active: + type: + - boolean + - 'null' + description: Is this vendor active + list_currency: + type: + - string + - 'null' + description: List prices currency + invoice_currency: + type: + - string + - 'null' + description: Invoice prices currency + gst: + type: + - boolean + - 'null' + description: Is the library taxed when buying from this vendor + list_includes_gst: + type: + - boolean + - 'null' + description: List prices include taxes + invoice_includes_gst: + type: + - boolean + - 'null' + description: Invoice prices include taxes + tax_rate: + type: + - number + - 'null' + description: Default tax rate for items ordered from this vendor + discount: + type: + - number + - 'null' + description: Default discount rate for items ordered from this vendor + deliverytime: + type: + - integer + - 'null' + description: Expected delivery time (in days) + additionalProperties: false + required: + - name +parameters: + advancededitormacro_id_pp: + name: advancededitormacro_id + in: path + description: Advanced editor macro internal identifier + required: true + type: integer + biblio_id_pp: + name: biblio_id + in: path + description: Record internal identifier + required: true + type: integer + cash_register_id_pp: + name: cash_register_id + in: path + description: Cash register internal identifier + required: true + type: integer + cashup_id_pp: + name: cashup_id + in: path + description: Cashup internal identifier + required: true + type: integer + checkout_id_pp: + name: checkout_id + in: path + description: Internal checkout identifier + required: true + type: integer + city_id_pp: + name: city_id + in: path + description: City internal identifier + required: true + type: integer + club_id_pp: + name: club_id + in: path + description: Internal club identifier + required: true + type: integer + fund_id_pp: + name: fund_id + in: path + description: Fund id + required: true + type: integer + hold_id_pp: + name: hold_id + in: path + description: Internal hold identifier + required: true + type: integer + import_batch_profile_id_pp: + name: import_batch_profile_id + in: path + description: Internal profile identifier + required: true + type: integer + item_id_pp: + name: item_id + in: path + description: Internal item identifier + required: true + type: integer + library_id_pp: + name: library_id + in: path + description: Internal library identifier + required: true + type: string + match: + name: _match + in: query + required: false + description: Matching criteria + type: string + enum: + - contains + - exact + - starts_with + - ends_with + order_by: + name: _order_by + in: query + required: false + description: Sorting criteria + type: array + collectionFormat: csv + items: + type: string + order_id_pp: + name: order_id + in: path + description: Internal order identifier + required: true + type: integer + page: + name: _page + in: query + required: false + description: 'Page number, for paginated object listing' + type: integer + patron_id_pp: + name: patron_id + in: path + description: Internal patron identifier + required: true + type: integer + patron_id_qp: + name: patron_id + in: query + description: Internal patron identifier + type: integer + per_page: + name: _per_page + in: query + required: false + description: 'Page size, for paginated object listing' + type: integer + q_body: + name: query + in: body + required: false + description: Query filter sent through request's body + schema: + type: object + q_param: + name: q + in: query + required: false + description: Query filter sent as a request parameter + type: string + q_header: + name: x-koha-query + in: header + required: false + description: Query filter sent as a request header + type: string + quote_id_pp: + name: quote_id + in: path + description: Quote internal identifier + required: true + type: integer + seen_pp: + name: seen + in: query + description: Item was seen flag + required: false + type: integer + smtp_server_id_pp: + name: smtp_server_id + in: path + description: SMTP server internal identifier + required: true + type: integer + suggestion_id_pp: + name: suggestion_id + in: path + description: Internal suggestion identifier + required: true + type: integer + transfer_limit_id_pp: + name: limit_id + in: path + description: Internal transfer limit identifier + required: true + type: string + vendor_id_pp: + name: vendor_id + in: path + description: Vendor id + required: true + type: integer +x-primitives: + biblio_id: + type: integer + description: Internal biblio identifier + advancededitormacro_id: + type: integer + description: Internal advanced editor macro identifier + readOnly: true + patron_id: + type: integer + description: Internal patron identifier + library_id: + type: string + description: internally assigned library identifier + maxLength: 10 + minLength: 1 + limit_id: + type: integer + description: Internal transfer limit identifier + cardnumber: + type: + - string + - 'null' + description: library assigned user identifier + city_id: + type: integer + description: internally assigned city identifier + readOnly: true + email: + type: + - string + - 'null' + description: primary email address for patron's primary address + firstname: + type: + - string + - 'null' + description: patron's first name + phone: + type: + - string + - 'null' + description: primary phone number for patron's primary address + surname: + type: + - string + - 'null' + description: patron's last name + vendor_id: + type: integer + description: internally assigned vendor identifier + readOnly: true + fund_id: + type: integer + description: internally assigned fund identifier + readOnly: true + quote_id: + type: integer + description: internally assigned quote identifier + readOnly: true +info: + title: Koha REST API + version: '1' + license: + name: 'GPL v3,' + url: 'http://www.gnu.org/licenses/gpl.txt' + contact: + name: Koha Development Team + url: 'https://koha-community.org/' + description: | + ## Introduction + + This API is documented in **OpenAPI format**. + + ## Authentication + + The API supports the following authentication mechanisms + + * HTTP Basic authentication + * OAuth2 (client credentials grant) + * Cookie-based + + Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled + by system preferences. + + ## Errors + + The API uses standard HTTP status codes to indicate the success or failure + of the API call. The body of the response will be JSON in the following format: + + ``` + { + "error": "Current settings prevent the passed due date to be applied", + "error_code": "invalid_due_date" + } + ``` + + Note: Some routes might offer additional attributes in their error responses but that's + subject to change and thus not documented. + + ## Filtering responses + + The API allows for some advanced response filtering using a JSON based query syntax. The + query can be added to the requests: + + * as a query parameter `q=` + * in the request body + * in a special header `x-koha-query` + + For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname + matches one of the fields as described in the particular endpoints response object. + + We can refine that with more complex matching clauses by nesting a the clause into the + object; `{ "fieldname": { "clause": "value" } }`. + + Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like". + + We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH` + level will result in an 'AND' query, whilst combinding them in an `ARRAY` wilth result in an + 'OR' query: `{ "field1": 'value2', "field2": "value2" }` will filter the response to only those + results with both field1 containing value2 AND field2 containing value2 for example. + + ### Examples + + The following request would return any patron with firstname "Henry" and lastname "Acevedo"; + + `curl -u koha:koha --request GET 'http://127.0.0.1:8081/api/v1/patrons/' --data-raw '{ "surname": "Acevedo", "firstname": "Henry" }'` + + The following request would return any patron whose lastname begins with "Ace"; + + `curl -u koha:koha --request GET 'http://127.0.0.1:8081/api/v1/patrons/' --data-raw '{ "surname": { "-like": "Ace%" }'` + + The following request would return any patron whilse lastname is 'Acevedo' OR 'Bernardo' + + `curl -u koha:koha --request GET 'http://127.0.0.1:8081/api/v1/patrons/' --data-raw '{ "surname": [ "Acevedo", "Bernardo" ] }'` + + ## Special headers + + ### x-koha-library + + This optional header should be passed to give your api request a library + context; If it is not included in the request, then the request context + will default to using your api comsumer's assigned home library. +tags: + - name: article_requests + x-displayName: Article requests + description: | + Manage article requests + - name: biblios + x-displayName: Biblios + description: | + Manage bibliographic records + - name: cashups + x-displayName: Cashups + description: | + Manage cash register cashups + - name: checkouts + x-displayName: Checkouts + description: | + Manage checkouts + - name: circulation_rules + x-displayName: Circulation rules + description: | + Manage circulation rules + - name: cities + x-displayName: Cities + description: | + Manage cities + - name: clubs + x-displayName: Clubs + description: | + Manage patron clubs + - name: funds + x-displayName: Funds + description: | + Manage funds for the acquisitions module + - name: holds + x-displayName: Holds + description: | + Manage holds + - name: illbackends + x-displayName: ILL backends + description: | + Manage ILL module backends + - name: illrequests + x-displayName: ILL requests + description: | + Manage ILL requests + - name: items + x-displayName: Items + description: | + Manage items + - name: libraries + x-displayName: Libraries + description: | + Manage libraries + - name: macros + x-displayName: Macros + description: | + Manage macros + - name: orders + x-displayName: Orders + description: | + Manage acquisition orders + - name: oauth + x-displayName: OAuth + description: | + Handle OAuth flows + - name: patrons + x-displayName: Patrons + description: | + Manage patrons + - name: quotes + x-displayName: Quotes + description: | + Manage quotes + - name: return_claims + x-displayName: Return claims + description: | + Manage return claims + - name: rotas + x-displayName: Rotas + description: | + Manage rotas + - name: smtp_servers + x-displayName: SMTP servers + description: | + Manage SMTP servers configurations + - name: transfer + x-displayName: Transfer limits + description: | + Manage transfer limits + - name: suggestions + x-displayName: Purchase suggestions + description: | + Manage purchase suggestions + - name: vendors + x-displayName: Vendors + description: | + Manage vendors for the acquisitions module + - name: batch_import_profiles + x-displayName: Batch import profiles + description: | + Manage batch import profiles diff --git a/gulpfile.js b/gulpfile.js index bf1f5150ef..0f874cdb3c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -22,6 +22,7 @@ const Vinyl = require('vinyl'); const args = require('minimist')(process.argv.slice(2)); const rename = require('gulp-rename'); +const API_BASE = "api/v1/swagger"; const STAFF_JS_BASE = "koha-tmpl/intranet-tmpl/prog/js"; const STAFF_CSS_BASE = "koha-tmpl/intranet-tmpl/prog/css"; const OPAC_JS_BASE = "koha-tmpl/opac-tmpl/bootstrap/js"; @@ -85,6 +86,15 @@ function build() { return stream; } +// Bundle the spec into a single file +function spec() { + return src(API_BASE) + .pipe(exec(`swagger-cli bundle \ + -t yaml \ + --outfile api/v1/swagger/swagger_bundle.yaml \ + api/v1/swagger/swagger.yaml`)); +}; + const poTasks = { 'marc-MARC21': { extract: po_extract_marc_marc21, @@ -359,6 +369,7 @@ function getLanguages () { exports.build = build; exports.css = css; +exports.spec = spec; exports['po:create'] = parallel(...poTypes.map(type => series(poTasks[type].extract, poTasks[type].create))); exports['po:update'] = parallel(...poTypes.map(type => series(poTasks[type].extract, poTasks[type].update))); diff --git a/package.json b/package.json index ac7ff7bcd7..23c66a3e0a 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "test": "test" }, "dependencies": { + "@apidevtools/swagger-cli": "^4.0.4", "bootstrap": "^4.5.2", "gulp": "^4.0.2", "gulp-autoprefixer": "^4.0.0", @@ -25,6 +26,7 @@ "scripts": { "build": "node_modules/.bin/gulp build", "css": "node_modules/.bin/gulp css", + "spec": "node_modules/.bin/gulp spec", "watch": "node_modules/.bin/gulp watch" }, "repository": { diff --git a/yarn.lock b/yarn.lock index 7fe82c203f..5ff1883e59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,48 @@ # yarn lockfile v1 +"@apidevtools/json-schema-ref-parser@^9.0.6": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" + integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@apidevtools/openapi-schemas@^2.0.4": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz#9fa08017fb59d80538812f03fc7cac5992caaa17" + integrity sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ== + +"@apidevtools/swagger-cli@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-cli/-/swagger-cli-4.0.4.tgz#c645c291f56e4add583111aca9edeee23d60fa10" + integrity sha512-hdDT3B6GLVovCsRZYDi3+wMcB1HfetTU20l2DC8zD3iFRNMC6QNAZG5fo/6PYeHWBEv7ri4MvnlKodhNB0nt7g== + dependencies: + "@apidevtools/swagger-parser" "^10.0.1" + chalk "^4.1.0" + js-yaml "^3.14.0" + yargs "^15.4.1" + +"@apidevtools/swagger-methods@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz#b789a362e055b0340d04712eafe7027ddc1ac267" + integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== + +"@apidevtools/swagger-parser@^10.0.1": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz#32057ae99487872c4dd96b314a1ab4b95d89eaf5" + integrity sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g== + dependencies: + "@apidevtools/json-schema-ref-parser" "^9.0.6" + "@apidevtools/openapi-schemas" "^2.0.4" + "@apidevtools/swagger-methods" "^3.0.2" + "@jsdevtools/ono" "^7.1.3" + call-me-maybe "^1.0.1" + z-schema "^5.0.1" + "@choojs/findup@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3" @@ -28,6 +70,16 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@types/json-schema@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -101,6 +153,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -113,6 +170,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -494,6 +558,11 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -562,6 +631,14 @@ chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chokidar@^2.0.0: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -616,6 +693,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -686,12 +772,19 @@ color-convert@^1.3.0, color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -738,7 +831,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.15.1: +commander@^2.15.1, commander@^2.7.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -1031,6 +1124,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -1232,6 +1330,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -1680,6 +1786,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" @@ -1923,6 +2034,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2049,7 +2165,7 @@ js-base64@^2.1.8, js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== -js-yaml@^3.13.1, js-yaml@~3.7.0: +js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^4.1.0, js-yaml@~3.7.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -2188,6 +2304,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -2250,6 +2373,11 @@ lodash.find@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -2260,6 +2388,11 @@ lodash.isarray@^3.0.0: resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -2771,7 +2904,7 @@ osenv@0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -2785,6 +2918,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -2838,6 +2978,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3763,6 +3908,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3803,6 +3957,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom-string@1.X: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -3846,6 +4007,13 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" @@ -4117,6 +4285,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== + value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" @@ -4246,6 +4419,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -4287,6 +4469,14 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" @@ -4303,6 +4493,23 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^7.1.0: version "7.1.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" @@ -4321,3 +4528,14 @@ yargs@^7.1.0: which-module "^1.0.0" y18n "^3.2.1" yargs-parser "5.0.0-security.0" + +z-schema@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.2.tgz#f410394b2c9fcb9edaf6a7511491c0bb4e89a504" + integrity sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw== + dependencies: + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^13.7.0" + optionalDependencies: + commander "^2.7.1" -- 2.32.0