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