Bugzilla – Attachment 131500 Details for
Bug 30194
Update required JSON::Validator version
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 30194: Add spec bundle pipeline
Bug-30194-Add-spec-bundle-pipeline.patch (text/plain), 278.88 KB, created by
Tomás Cohen Arazi (tcohen)
on 2022-03-08 19:16:33 UTC
(
hide
)
Description:
Bug 30194: Add spec bundle pipeline
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2022-03-08 19:16:33 UTC
Size:
278.88 KB
patch
obsolete
>From 406043bcb40eb6f2c536af102ed6523354685950 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >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. > >To use it, run: > >$ yarn 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..362680c3f6 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_bundle.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.35.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 30194
:
131374
|
131486
|
131487
|
131488
|
131497
|
131498
|
131499
|
131500
|
131501
|
131502
|
131547
|
131548
|
131549
|
131550
|
131551
|
131552
|
132069
|
132070
|
132071
|
132072
|
132073
|
132097
|
132098
|
132099
|
132100
|
132102
|
132112
|
132116
|
132118
|
132119
|
132120
|
132121
|
132122
|
132123
|
132124
|
132125
|
132126
|
132151
|
132152
|
132252
|
132253
|
132254
|
132334
|
132335
|
132336
|
132337
|
132338
|
132339
|
132340
|
132442
|
132449