Bug 31378: Add API routes
[koha.git] / api / v1 / swagger / swagger.yaml
1 ---
2 swagger: "2.0"
3 basePath: /api/v1
4 definitions:
5   account_line:
6     $ref: ./definitions/account_line.yaml
7   advancededitormacro:
8     $ref: ./definitions/advancededitormacro.yaml
9   allows_renewal:
10     $ref: ./definitions/allows_renewal.yaml
11   basket:
12     $ref: ./definitions/basket.yaml
13   bundle_link:
14     $ref: ./definitions/bundle_link.yaml
15   cashup:
16     $ref: ./definitions/cashup.yaml
17   checkout:
18     $ref: ./definitions/checkout.yaml
19   checkouts:
20     $ref: ./definitions/checkouts.yaml
21   circ-rule-kind:
22     $ref: ./definitions/circ-rule-kind.yaml
23   city:
24     $ref: ./definitions/city.yaml
25   erm_agreement:
26     $ref: ./definitions/erm_agreement.yaml
27   erm_eholdings_title:
28     $ref: ./definitions/erm_eholdings_title.yaml
29   erm_eholdings_package:
30     $ref: ./definitions/erm_eholdings_package.yaml
31   erm_eholdings_resource:
32     $ref: ./definitions/erm_eholdings_resource.yaml
33   erm_license:
34     $ref: ./definitions/erm_license.yaml
35   error:
36     $ref: ./definitions/error.yaml
37   fund:
38     $ref: ./definitions/fund.yaml
39   hold:
40     $ref: ./definitions/hold.yaml
41   holds:
42     $ref: ./definitions/holds.yaml
43   ill_backend:
44     $ref: ./definitions/ill_backend.yaml
45   ill_backends:
46     $ref: ./definitions/ill_backends.yaml
47   import_batch_profile:
48     $ref: ./definitions/import_batch_profile.yaml
49   import_batch_profiles:
50     $ref: ./definitions/import_batch_profiles.yaml
51   import_record_match:
52     $ref: ./definitions/import_record_match.yaml
53   invoice:
54     $ref: ./definitions/invoice.yaml
55   item:
56     $ref: ./definitions/item.yaml
57   item_group:
58     $ref: ./definitions/item_group.yaml
59   job:
60     $ref: ./definitions/job.yaml
61   library:
62     $ref: ./definitions/library.yaml
63   order:
64     $ref: ./definitions/order.yaml
65   patron:
66     $ref: ./definitions/patron.yaml
67   patron_account_credit:
68     $ref: ./definitions/patron_account_credit.yaml
69   patron_balance:
70     $ref: ./definitions/patron_balance.yaml
71   patron_extended_attribute:
72     $ref: ./definitions/patron_extended_attribute.yaml
73   quote:
74     $ref: ./definitions/quote.yaml
75   renewal:
76     $ref: ./definitions/renewal.yaml
77   renewals:
78     $ref: ./definitions/renewals.yaml
79   return_claim:
80     $ref: ./definitions/return_claim.yaml
81   search_filter:
82     $ref: ./definitions/search_filter.yaml
83   smtp_server:
84     $ref: ./definitions/smtp_server.yaml
85   suggestion:
86     $ref: ./definitions/suggestion.yaml
87   transfer_limit:
88     $ref: ./definitions/transfer_limit.yaml
89   vendor:
90     $ref: ./definitions/vendor.yaml
91 paths:
92   /acquisitions/baskets/managers:
93     $ref: paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers
94   /acquisitions/funds:
95     $ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds
96   /acquisitions/funds/owners:
97     $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners
98   /acquisitions/funds/users:
99     $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users
100   /acquisitions/orders:
101     $ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders
102   "/acquisitions/orders/{order_id}":
103     $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
104   /acquisitions/vendors:
105     $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
106   "/acquisitions/vendors/{vendor_id}":
107     $ref: "./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors~1{vendor_id}"
108   /advanced_editor/macros:
109     $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros
110   /advanced_editor/macros/shared:
111     $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared
112   /search_filters:
113     $ref: ./paths/search_filters.yaml#/~1search_filters
114   "/search_filters/{search_filter_id}":
115     $ref: "./paths/search_filters.yaml#/~1search_filters~1{search_filter_id}"
116   "/advanced_editor/macros/shared/{advancededitormacro_id}":
117     $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared~1{advancededitormacro_id}"
118   "/advanced_editor/macros/{advancededitormacro_id}":
119     $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1{advancededitormacro_id}"
120   "/article_requests/{article_request_id}":
121     $ref: "./paths/article_requests.yaml#/~1article_requests~1{article_request_id}"
122   /auth/otp/token_delivery:
123     $ref: paths/auth.yaml#/~1auth~1otp~1token_delivery
124   /auth/two-factor/registration:
125     $ref: paths/auth.yaml#/~1auth~1two-factor~1registration
126   /auth/two-factor/registration/verification:
127     $ref: paths/auth.yaml#/~1auth~1two-factor~1registration~1verification
128   "/biblios/{biblio_id}":
129     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}"
130   "/biblios/{biblio_id}/checkouts":
131     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1checkouts"
132   "/biblios/{biblio_id}/items":
133     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items"
134   "/biblios/{biblio_id}/pickup_locations":
135     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1pickup_locations"
136   "/biblios/{biblio_id}/item_groups":
137     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups"
138   "/biblios/{biblio_id}/item_groups/{item_group_id}":
139     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}"
140   "/biblios/{biblio_id}/item_groups/{item_group_id}/items":
141     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items"
142   "/biblios/{biblio_id}/item_groups/{item_group_id}/items/{item_id}":
143     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}"
144   "/cash_registers/{cash_register_id}/cashups":
145     $ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups"
146   "/cashups/{cashup_id}":
147     $ref: "./paths/cash_registers.yaml#/~1cashups~1{cashup_id}"
148   /checkouts:
149     $ref: ./paths/checkouts.yaml#/~1checkouts
150   "/checkouts/{checkout_id}":
151     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}"
152   "/checkouts/{checkout_id}/allows_renewal":
153     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1allows_renewal"
154   "/checkouts/{checkout_id}/renewals":
155     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewals"
156   "/checkouts/{checkout_id}/renewal":
157     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewal"
158   /circulation-rules/kinds:
159     $ref: ./paths/circulation-rules.yaml#/~1circulation-rules~1kinds
160   /cities:
161     $ref: ./paths/cities.yaml#/~1cities
162   "/cities/{city_id}":
163     $ref: "./paths/cities.yaml#/~1cities~1{city_id}"
164   "/clubs/{club_id}/holds":
165     $ref: "./paths/clubs.yaml#/~1clubs~1{club_id}~1holds"
166   /config/smtp_servers:
167     $ref: ./paths/config_smtp_servers.yaml#/~1config~1smtp_servers
168   "/config/smtp_servers/{smtp_server_id}":
169     $ref: "./paths/config_smtp_servers.yaml#/~1config~1smtp_servers~1{smtp_server_id}"
170   /erm/agreements:
171     $ref: ./paths/erm_agreements.yaml#/~1erm~1agreements
172   "/erm/agreements/{agreement_id}":
173     $ref: "./paths/erm_agreements.yaml#/~1erm~1agreements~1{agreement_id}"
174   "/erm/documents/{document_id}/file/content":
175     $ref: "./paths/erm_documents.yaml#/~1erm~1documents~1{document_id}~1file~1content"
176   "/erm/eholdings/{provider}/titles":
177     $ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles"
178   /erm/eholdings/local/titles/import:
179     $ref: ./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1local~1titles~1import
180   "/erm/eholdings/{provider}/titles/{title_id}":
181     $ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}"
182   "/erm/eholdings/{provider}/titles/{title_id}/resources":
183     $ref: "./paths/erm_eholdings_titles_resources.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}~1resources"
184   "/erm/eholdings/{provider}/packages":
185     $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages"
186   "/erm/eholdings/{provider}/resources":
187     $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources"
188   "/erm/eholdings/{provider}/resources/{resource_id}":
189     $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources~1{resource_id}"
190   "/erm/eholdings/{provider}/packages/{package_id}":
191     $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}"
192   "/erm/eholdings/{provider}/packages/{package_id}/resources":
193     $ref: "./paths/erm_eholdings_packages_resources.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}~1resources"
194   /erm/licenses:
195     $ref: ./paths/erm_licenses.yaml#/~1erm~1licenses
196   "/erm/licenses/{license_id}":
197     $ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}"
198   /erm/users:
199     $ref: ./paths/erm_users.yaml#/~1erm~1users
200   /holds:
201     $ref: ./paths/holds.yaml#/~1holds
202   "/holds/{hold_id}":
203     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
204   "/holds/{hold_id}/pickup_location":
205     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
206   "/holds/{hold_id}/pickup_locations":
207     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
208   "/holds/{hold_id}/priority":
209     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
210   "/holds/{hold_id}/suspension":
211     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
212   /ill_backends:
213     $ref: ./paths/ill_backends.yaml#/~1ill_backends
214   "/ill_backends/{ill_backend_id}":
215     $ref: "./paths/ill_backends.yaml#/~1ill_backends~1{ill_backend_id}"
216   /illrequests:
217     $ref: ./paths/illrequests.yaml#/~1illrequests
218   "/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
219     $ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
220   /import_batch_profiles:
221     $ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
222   "/import_batch_profiles/{import_batch_profile_id}":
223     $ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
224   /items:
225     $ref: ./paths/items.yaml#/~1items
226   "/items/{item_id}":
227     $ref: "./paths/items.yaml#/~1items~1{item_id}"
228   "/items/{item_id}/bundled_items":
229     $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
230   "/items/{item_id}/bundled_items/{bundled_item_id}":
231     $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
232   "/items/{item_id}/pickup_locations":
233     $ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
234   /jobs:
235     $ref: ./paths/jobs.yaml#/~1jobs
236   "/jobs/{job_id}":
237     $ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
238   /libraries:
239     $ref: ./paths/libraries.yaml#/~1libraries
240   "/libraries/{library_id}":
241     $ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
242   /oauth/token:
243     $ref: ./paths/oauth.yaml#/~1oauth~1token
244   /patrons:
245     $ref: ./paths/patrons.yaml#/~1patrons
246   "/patrons/{patron_id}":
247     $ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
248   "/patrons/{patron_id}/account":
249     $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
250   "/patrons/{patron_id}/account/credits":
251     $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
252   "/patrons/{patron_id}/extended_attributes":
253     $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
254   "/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
255     $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
256   "/patrons/{patron_id}/holds":
257     $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
258   "/patrons/{patron_id}/password":
259     $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
260   "/patrons/{patron_id}/password/expiration_date":
261     $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
262   "/public/biblios/{biblio_id}":
263     $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
264   "/public/biblios/{biblio_id}/items":
265     $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
266   "/public/biblios/{biblio_id}/ratings":
267     $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
268   /public/libraries:
269     $ref: ./paths/libraries.yaml#/~1public~1libraries
270   "/public/libraries/{library_id}":
271     $ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
272   "/public/oauth/login/{provider}/{interface}":
273     $ref: ./paths/public_oauth.yaml#/~1public~1oauth~1login~1{provider}~1{interface}
274   "/public/patrons/{patron_id}/article_requests/{article_request_id}":
275     $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
276   "/public/patrons/{patron_id}/guarantors/can_see_charges":
277     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
278   "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
279     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
280   "/public/patrons/{patron_id}/password":
281     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
282   /quotes:
283     $ref: ./paths/quotes.yaml#/~1quotes
284   "/quotes/{quote_id}":
285     $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
286   /return_claims:
287     $ref: ./paths/return_claims.yaml#/~1return_claims
288   "/return_claims/{claim_id}":
289     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
290   "/return_claims/{claim_id}/notes":
291     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
292   "/return_claims/{claim_id}/resolve":
293     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
294   "/rotas/{rota_id}/stages/{stage_id}/position":
295     $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
296   /suggestions:
297     $ref: ./paths/suggestions.yaml#/~1suggestions
298   "/suggestions/{suggestion_id}":
299     $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
300   /suggestions/managers:
301     $ref: paths/suggestions.yaml#/~1suggestions~1managers
302   /transfer_limits:
303     $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
304   /transfer_limits/batch:
305     $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
306   "/transfer_limits/{limit_id}":
307     $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
308 parameters:
309   advancededitormacro_id_pp:
310     description: Advanced editor macro internal identifier
311     in: path
312     name: advancededitormacro_id
313     required: true
314     type: integer
315   agreement_id_pp:
316     description: Agreement internal identifier
317     in: path
318     name: agreement_id
319     required: true
320     type: integer
321   agreement_period_id_pp:
322     description: Agreement period internal identifier
323     in: path
324     name: agreement_period_id
325     required: true
326     type: integer
327   biblio_id_pp:
328     description: Record internal identifier
329     in: path
330     name: biblio_id
331     required: true
332     type: integer
333   candidate_match_id_pp:
334     description: Internal import record match identifier
335     in: path
336     name: candidate_match_id
337     required: true
338     type: integer
339   cash_register_id_pp:
340     description: Cash register internal identifier
341     in: path
342     name: cash_register_id
343     required: true
344     type: integer
345   cashup_id_pp:
346     description: Cashup internal identifier
347     in: path
348     name: cashup_id
349     required: true
350     type: integer
351   checkout_id_pp:
352     description: Internal checkout identifier
353     in: path
354     name: checkout_id
355     required: true
356     type: integer
357   city_id_pp:
358     description: City internal identifier
359     in: path
360     name: city_id
361     required: true
362     type: integer
363   club_id_pp:
364     description: Internal club identifier
365     in: path
366     name: club_id
367     required: true
368     type: integer
369   eholdings_title_id_pp:
370     description: Title internal identifier
371     in: path
372     name: title_id
373     required: true
374     type: integer
375   eholdings_package_id_pp:
376     description: Package internal identifier
377     in: path
378     name: package_id
379     required: true
380     type: string
381   eholdings_resource_id_pp:
382     description: Resource internal identifier
383     in: path
384     name: resource_id
385     required: true
386     type: string
387   fund_id_pp:
388     description: Fund id
389     in: path
390     name: fund_id
391     required: true
392     type: integer
393   hold_id_pp:
394     description: Internal hold identifier
395     in: path
396     name: hold_id
397     required: true
398     type: integer
399   import_batch_profile_id_pp:
400     description: Internal profile identifier
401     in: path
402     name: import_batch_profile_id
403     required: true
404     type: integer
405   import_record_id_pp:
406     description: Internal import record identifier
407     in: path
408     name: import_record_id
409     required: true
410     type: integer
411   item_id_pp:
412     description: Internal item identifier
413     in: path
414     name: item_id
415     required: true
416     type: integer
417   job_id_pp:
418     description: Job internal identifier
419     in: path
420     name: job_id
421     required: true
422     type: integer
423   library_id_pp:
424     description: Internal library identifier
425     in: path
426     name: library_id
427     required: true
428     type: string
429   license_id_pp:
430     description: License internal identifier
431     in: path
432     name: license_id
433     required: true
434     type: integer
435   match:
436     description: Matching criteria
437     enum:
438       - contains
439       - exact
440       - starts_with
441       - ends_with
442     in: query
443     name: _match
444     required: false
445     type: string
446   order_by:
447     collectionFormat: csv
448     description: Sorting criteria
449     in: query
450     items:
451       type: string
452     name: _order_by
453     required: false
454     type: array
455   order_id_pp:
456     description: Internal order identifier
457     in: path
458     name: order_id
459     required: true
460     type: integer
461   page:
462     description: "Page number, for paginated object listing"
463     in: query
464     name: _page
465     required: false
466     type: integer
467   patron_id_pp:
468     description: Internal patron identifier
469     in: path
470     name: patron_id
471     required: true
472     type: integer
473   patron_id_qp:
474     description: Internal patron identifier
475     in: query
476     name: patron_id
477     type: integer
478   per_page:
479     description: "Page size, for paginated object listing"
480     in: query
481     name: _per_page
482     required: false
483     type: integer
484   q_body:
485     description: Query filter sent through request"s body
486     in: body
487     name: query
488     required: false
489     schema:
490       type: object
491   q_header:
492     description: Query filter sent as a request header
493     in: header
494     name: x-koha-query
495     required: false
496     type: string
497   q_param:
498     description: Query filter sent as a request parameter
499     in: query
500     name: q
501     required: false
502     type: array
503     items:
504       type: string
505     collectionFormat: multi
506   quote_id_pp:
507     description: Quote internal identifier
508     in: path
509     name: quote_id
510     required: true
511     type: integer
512   request_id_header:
513     description: Request id header
514     in: header
515     name: x-koha-request-id
516     required: false
517     type: integer
518   search_filter_id_pp:
519     name: search_filter_id
520     in: path
521     description: Search filter internal identifier
522     required: true
523     type: integer
524   seen_pp:
525     description: Item was seen flag
526     in: query
527     name: seen
528     required: false
529     type: integer
530   smtp_server_id_pp:
531     description: SMTP server internal identifier
532     in: path
533     name: smtp_server_id
534     required: true
535     type: integer
536   suggestion_id_pp:
537     description: Internal suggestion identifier
538     in: path
539     name: suggestion_id
540     required: true
541     type: integer
542   transfer_limit_id_pp:
543     description: Internal transfer limit identifier
544     in: path
545     name: limit_id
546     required: true
547     type: string
548   vendor_id_pp:
549     description: Vendor id
550     in: path
551     name: vendor_id
552     required: true
553     type: integer
554 info:
555   title: Koha REST API
556   version: "1"
557   license:
558     name: "GPL v3,"
559     url: http://www.gnu.org/licenses/gpl.txt
560   contact:
561     name: Koha Development Team
562     url: https://koha-community.org/
563   description: |
564     ## Introduction
565
566     This API is documented in **OpenAPI format**.
567
568     ## Authentication
569
570     The API supports the following authentication mechanisms
571
572     * HTTP Basic authentication
573     * OAuth2 (client credentials grant)
574     * Cookie-based
575
576     Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
577     by system preferences.
578
579     ## Errors
580
581     The API uses standard HTTP status codes to indicate the success or failure
582     of the API call. The body of the response will be JSON in the following format:
583
584     ```
585     {
586       "error": "Current settings prevent the passed due date to be applied",
587       "error_code": "invalid_due_date"
588     }
589     ```
590
591     Note: Some routes might offer additional attributes in their error responses but that"s
592     subject to change and thus not documented.
593
594     ## Filtering responses
595
596     The API allows for some advanced response filtering using a JSON based query syntax. The
597     query can be added to the requests:
598
599     * as a query parameter `q=`
600     * in the request body
601     * in a special header `x-koha-query`
602
603     For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
604     matches one of the fields as described in the particular endpoints response object.
605
606     We can refine that with more complex matching clauses by nesting a the clause into the
607     object; `{ "fieldname": { "clause": "value" } }`.
608
609     Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
610
611     We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
612     level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
613     "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
614     results with both field1 containing value2 AND field2 containing value2 for example.
615
616     Additionally, if you are requesting related data be embedded into the response one can query
617     on the related data using dot notation in the field names.
618
619     ### Examples
620
621     The following request would return any patron with firstname "Henry" and lastname "Acevedo";
622
623     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
624
625     The following request would return any patron whose lastname begins with "Ace";
626
627     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
628
629     The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
630
631     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
632
633     The following request embeds the related patron extended attributes data and filters on it.
634
635     `curl -u koha:koha =--request GET 'http://127.0.0.1:8081/api/v1/patrons/' --header 'x-koha-embed: extended_attributes' --data-raw '{ "extended_attributes.code": "internet", "extended_attributes.attribute": "1" }'`
636
637     ## Special headers
638
639     ### x-koha-embed
640
641     This optional header allows the api consumer to request additional related data
642     to be returned in the api response.  It also allows for cross referencing in the
643     queries as described above. It accepts a comma delimited list of relation names.
644
645     Relations may on occasion also support dot delimited nesting to allow traversal.
646
647     ### x-koha-library
648
649     This optional header should be passed to give your api request a library
650     context; If it is not included in the request, then the request context
651     will default to using your api comsumer"s assigned home library.
652 tags:
653   - description: "Handle two factor authentication flows\n"
654     name: 2fa
655     x-displayName: Two factor authentication
656   - description: "Manage article requests\n"
657     name: article_requests
658     x-displayName: Article requests
659   - description: "Manage baskets for the acquisitions module\n"
660     name: baskets
661     x-displayName: Baskets
662   - description: "Manage bibliographic records\n"
663     name: biblios
664     x-displayName: Biblios
665   - description: "Manage cash register cashups\n"
666     name: cashups
667     x-displayName: Cashups
668   - description: "Manage checkouts\n"
669     name: checkouts
670     x-displayName: Checkouts
671   - description: "Manage circulation rules\n"
672     name: circulation_rules
673     x-displayName: Circulation rules
674   - description: "Manage cities\n"
675     name: cities
676     x-displayName: Cities
677   - description: "Manage patron clubs\n"
678     name: clubs
679     x-displayName: Clubs
680   - description: "Manage funds for the acquisitions module\n"
681     name: funds
682     x-displayName: Funds
683   - description: "Manage holds\n"
684     name: holds
685     x-displayName: Holds
686   - description: "Manage ILL module backends\n"
687     name: illbackends
688     x-displayName: ILL backends
689   - description: "Manage ILL requests\n"
690     name: illrequests
691     x-displayName: ILL requests
692   - description: "Manage import batches\n"
693     name: import_batches
694     x-display-name: Import batches
695   - description: "Manage item groups\n"
696     name: item_groups
697     x-displayName: Item groups
698   - description: "Manage items\n"
699     name: items
700     x-displayName: Items
701   - description: "Manage jobs\n"
702     name: jobs
703     x-displayName: Jobs
704   - description: "Manage libraries\n"
705     name: libraries
706     x-displayName: Libraries
707   - description: "Manage macros\n"
708     name: macros
709     x-displayName: Macros
710   - description: "Manage acquisition orders\n"
711     name: orders
712     x-displayName: Orders
713   - description: "Handle OAuth flows\n"
714     name: oauth
715     x-displayName: OAuth
716   - description: "Manage patrons\n"
717     name: patrons
718     x-displayName: Patrons
719   - description: "Manage quotes\n"
720     name: quotes
721     x-displayName: Quotes
722   - description: "Manage return claims\n"
723     name: return_claims
724     x-displayName: Return claims
725   - description: "Manage rotas\n"
726     name: rotas
727     x-displayName: Rotas
728   - description: "Manage SMTP servers configurations\n"
729     name: smtp_servers
730     x-displayName: SMTP servers
731   - description: "Manage transfer limits\n"
732     name: transfer
733     x-displayName: Transfer limits
734   - description: "Manage purchase suggestions\n"
735     name: suggestions
736     x-displayName: Purchase suggestions
737   - description: "Manage vendors for the acquisitions module\n"
738     name: vendors
739     x-displayName: Vendors
740   - description: "Manage batch import profiles\n"
741     name: batch_import_profiles
742     x-displayName: Batch import profiles