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