f3f1af4bc455d2620e35fdb23aefb0737613e2ba
[srvgit] / 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/patrons/{patron_id}/article_requests/{article_request_id}":
273     $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
274   "/public/patrons/{patron_id}/guarantors/can_see_charges":
275     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
276   "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
277     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
278   "/public/patrons/{patron_id}/password":
279     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
280   /quotes:
281     $ref: ./paths/quotes.yaml#/~1quotes
282   "/quotes/{quote_id}":
283     $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
284   /return_claims:
285     $ref: ./paths/return_claims.yaml#/~1return_claims
286   "/return_claims/{claim_id}":
287     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
288   "/return_claims/{claim_id}/notes":
289     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
290   "/return_claims/{claim_id}/resolve":
291     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
292   "/rotas/{rota_id}/stages/{stage_id}/position":
293     $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
294   /suggestions:
295     $ref: ./paths/suggestions.yaml#/~1suggestions
296   "/suggestions/{suggestion_id}":
297     $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
298   /suggestions/managers:
299     $ref: paths/suggestions.yaml#/~1suggestions~1managers
300   /transfer_limits:
301     $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
302   /transfer_limits/batch:
303     $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
304   "/transfer_limits/{limit_id}":
305     $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
306 parameters:
307   advancededitormacro_id_pp:
308     description: Advanced editor macro internal identifier
309     in: path
310     name: advancededitormacro_id
311     required: true
312     type: integer
313   agreement_id_pp:
314     description: Agreement internal identifier
315     in: path
316     name: agreement_id
317     required: true
318     type: integer
319   agreement_period_id_pp:
320     description: Agreement period internal identifier
321     in: path
322     name: agreement_period_id
323     required: true
324     type: integer
325   biblio_id_pp:
326     description: Record internal identifier
327     in: path
328     name: biblio_id
329     required: true
330     type: integer
331   candidate_match_id_pp:
332     description: Internal import record match identifier
333     in: path
334     name: candidate_match_id
335     required: true
336     type: integer
337   cash_register_id_pp:
338     description: Cash register internal identifier
339     in: path
340     name: cash_register_id
341     required: true
342     type: integer
343   cashup_id_pp:
344     description: Cashup internal identifier
345     in: path
346     name: cashup_id
347     required: true
348     type: integer
349   checkout_id_pp:
350     description: Internal checkout identifier
351     in: path
352     name: checkout_id
353     required: true
354     type: integer
355   city_id_pp:
356     description: City internal identifier
357     in: path
358     name: city_id
359     required: true
360     type: integer
361   club_id_pp:
362     description: Internal club identifier
363     in: path
364     name: club_id
365     required: true
366     type: integer
367   eholdings_title_id_pp:
368     description: Title internal identifier
369     in: path
370     name: title_id
371     required: true
372     type: integer
373   eholdings_package_id_pp:
374     description: Package internal identifier
375     in: path
376     name: package_id
377     required: true
378     type: string
379   eholdings_resource_id_pp:
380     description: Resource internal identifier
381     in: path
382     name: resource_id
383     required: true
384     type: string
385   fund_id_pp:
386     description: Fund id
387     in: path
388     name: fund_id
389     required: true
390     type: integer
391   hold_id_pp:
392     description: Internal hold identifier
393     in: path
394     name: hold_id
395     required: true
396     type: integer
397   import_batch_profile_id_pp:
398     description: Internal profile identifier
399     in: path
400     name: import_batch_profile_id
401     required: true
402     type: integer
403   import_record_id_pp:
404     description: Internal import record identifier
405     in: path
406     name: import_record_id
407     required: true
408     type: integer
409   item_id_pp:
410     description: Internal item identifier
411     in: path
412     name: item_id
413     required: true
414     type: integer
415   job_id_pp:
416     description: Job internal identifier
417     in: path
418     name: job_id
419     required: true
420     type: integer
421   library_id_pp:
422     description: Internal library identifier
423     in: path
424     name: library_id
425     required: true
426     type: string
427   license_id_pp:
428     description: License internal identifier
429     in: path
430     name: license_id
431     required: true
432     type: integer
433   match:
434     description: Matching criteria
435     enum:
436       - contains
437       - exact
438       - starts_with
439       - ends_with
440     in: query
441     name: _match
442     required: false
443     type: string
444   order_by:
445     collectionFormat: csv
446     description: Sorting criteria
447     in: query
448     items:
449       type: string
450     name: _order_by
451     required: false
452     type: array
453   order_id_pp:
454     description: Internal order identifier
455     in: path
456     name: order_id
457     required: true
458     type: integer
459   page:
460     description: "Page number, for paginated object listing"
461     in: query
462     name: _page
463     required: false
464     type: integer
465   patron_id_pp:
466     description: Internal patron identifier
467     in: path
468     name: patron_id
469     required: true
470     type: integer
471   patron_id_qp:
472     description: Internal patron identifier
473     in: query
474     name: patron_id
475     type: integer
476   per_page:
477     description: "Page size, for paginated object listing"
478     in: query
479     name: _per_page
480     required: false
481     type: integer
482   q_body:
483     description: Query filter sent through request"s body
484     in: body
485     name: query
486     required: false
487     schema:
488       type: object
489   q_header:
490     description: Query filter sent as a request header
491     in: header
492     name: x-koha-query
493     required: false
494     type: string
495   q_param:
496     description: Query filter sent as a request parameter
497     in: query
498     name: q
499     required: false
500     type: array
501     items:
502       type: string
503     collectionFormat: multi
504   quote_id_pp:
505     description: Quote internal identifier
506     in: path
507     name: quote_id
508     required: true
509     type: integer
510   request_id_header:
511     description: Request id header
512     in: header
513     name: x-koha-request-id
514     required: false
515     type: integer
516   search_filter_id_pp:
517     name: search_filter_id
518     in: path
519     description: Search filter internal identifier
520     required: true
521     type: integer
522   seen_pp:
523     description: Item was seen flag
524     in: query
525     name: seen
526     required: false
527     type: integer
528   smtp_server_id_pp:
529     description: SMTP server internal identifier
530     in: path
531     name: smtp_server_id
532     required: true
533     type: integer
534   suggestion_id_pp:
535     description: Internal suggestion identifier
536     in: path
537     name: suggestion_id
538     required: true
539     type: integer
540   transfer_limit_id_pp:
541     description: Internal transfer limit identifier
542     in: path
543     name: limit_id
544     required: true
545     type: string
546   vendor_id_pp:
547     description: Vendor id
548     in: path
549     name: vendor_id
550     required: true
551     type: integer
552 info:
553   title: Koha REST API
554   version: "1"
555   license:
556     name: "GPL v3,"
557     url: http://www.gnu.org/licenses/gpl.txt
558   contact:
559     name: Koha Development Team
560     url: https://koha-community.org/
561   description: |
562     ## Introduction
563
564     This API is documented in **OpenAPI format**.
565
566     ## Authentication
567
568     The API supports the following authentication mechanisms
569
570     * HTTP Basic authentication
571     * OAuth2 (client credentials grant)
572     * Cookie-based
573
574     Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
575     by system preferences.
576
577     ## Errors
578
579     The API uses standard HTTP status codes to indicate the success or failure
580     of the API call. The body of the response will be JSON in the following format:
581
582     ```
583     {
584       "error": "Current settings prevent the passed due date to be applied",
585       "error_code": "invalid_due_date"
586     }
587     ```
588
589     Note: Some routes might offer additional attributes in their error responses but that"s
590     subject to change and thus not documented.
591
592     ## Filtering responses
593
594     The API allows for some advanced response filtering using a JSON based query syntax. The
595     query can be added to the requests:
596
597     * as a query parameter `q=`
598     * in the request body
599     * in a special header `x-koha-query`
600
601     For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
602     matches one of the fields as described in the particular endpoints response object.
603
604     We can refine that with more complex matching clauses by nesting a the clause into the
605     object; `{ "fieldname": { "clause": "value" } }`.
606
607     Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
608
609     We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
610     level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
611     "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
612     results with both field1 containing value2 AND field2 containing value2 for example.
613
614     Additionally, if you are requesting related data be embedded into the response one can query
615     on the related data using dot notation in the field names.
616
617     ### Examples
618
619     The following request would return any patron with firstname "Henry" and lastname "Acevedo";
620
621     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
622
623     The following request would return any patron whose lastname begins with "Ace";
624
625     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
626
627     The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
628
629     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
630
631     The following request embeds the related patron extended attributes data and filters on it.
632
633     `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" }'`
634
635     ## Special headers
636
637     ### x-koha-embed
638
639     This optional header allows the api consumer to request additional related data
640     to be returned in the api response.  It also allows for cross referencing in the
641     queries as described above. It accepts a comma delimited list of relation names.
642
643     Relations may on occasion also support dot delimited nesting to allow traversal.
644
645     ### x-koha-library
646
647     This optional header should be passed to give your api request a library
648     context; If it is not included in the request, then the request context
649     will default to using your api comsumer"s assigned home library.
650 tags:
651   - description: "Handle two factor authentication flows\n"
652     name: 2fa
653     x-displayName: Two factor authentication
654   - description: "Manage article requests\n"
655     name: article_requests
656     x-displayName: Article requests
657   - description: "Manage baskets for the acquisitions module\n"
658     name: baskets
659     x-displayName: Baskets
660   - description: "Manage bibliographic records\n"
661     name: biblios
662     x-displayName: Biblios
663   - description: "Manage cash register cashups\n"
664     name: cashups
665     x-displayName: Cashups
666   - description: "Manage checkouts\n"
667     name: checkouts
668     x-displayName: Checkouts
669   - description: "Manage circulation rules\n"
670     name: circulation_rules
671     x-displayName: Circulation rules
672   - description: "Manage cities\n"
673     name: cities
674     x-displayName: Cities
675   - description: "Manage patron clubs\n"
676     name: clubs
677     x-displayName: Clubs
678   - description: "Manage funds for the acquisitions module\n"
679     name: funds
680     x-displayName: Funds
681   - description: "Manage holds\n"
682     name: holds
683     x-displayName: Holds
684   - description: "Manage ILL module backends\n"
685     name: illbackends
686     x-displayName: ILL backends
687   - description: "Manage ILL requests\n"
688     name: illrequests
689     x-displayName: ILL requests
690   - description: "Manage import batches\n"
691     name: import_batches
692     x-display-name: Import batches
693   - description: "Manage item groups\n"
694     name: item_groups
695     x-displayName: Item groups
696   - description: "Manage items\n"
697     name: items
698     x-displayName: Items
699   - description: "Manage jobs\n"
700     name: jobs
701     x-displayName: Jobs
702   - description: "Manage libraries\n"
703     name: libraries
704     x-displayName: Libraries
705   - description: "Manage macros\n"
706     name: macros
707     x-displayName: Macros
708   - description: "Manage acquisition orders\n"
709     name: orders
710     x-displayName: Orders
711   - description: "Handle OAuth flows\n"
712     name: oauth
713     x-displayName: OAuth
714   - description: "Manage patrons\n"
715     name: patrons
716     x-displayName: Patrons
717   - description: "Manage quotes\n"
718     name: quotes
719     x-displayName: Quotes
720   - description: "Manage return claims\n"
721     name: return_claims
722     x-displayName: Return claims
723   - description: "Manage rotas\n"
724     name: rotas
725     x-displayName: Rotas
726   - description: "Manage SMTP servers configurations\n"
727     name: smtp_servers
728     x-displayName: SMTP servers
729   - description: "Manage transfer limits\n"
730     name: transfer
731     x-displayName: Transfer limits
732   - description: "Manage purchase suggestions\n"
733     name: suggestions
734     x-displayName: Purchase suggestions
735   - description: "Manage vendors for the acquisitions module\n"
736     name: vendors
737     x-displayName: Vendors
738   - description: "Manage batch import profiles\n"
739     name: batch_import_profiles
740     x-displayName: Batch import profiles