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