Bug 34587: Add test connection button
[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_config:
40     $ref: ./definitions/erm_config.yaml
41   erm_agreement:
42     $ref: ./definitions/erm_agreement.yaml
43   erm_counter_file:
44     $ref: ./definitions/erm_counter_file.yaml
45   erm_counter_log:
46     $ref: ./definitions/erm_counter_log.yaml
47   erm_eholdings_title:
48     $ref: ./definitions/erm_eholdings_title.yaml
49   erm_eholdings_package:
50     $ref: ./definitions/erm_eholdings_package.yaml
51   erm_eholdings_resource:
52     $ref: ./definitions/erm_eholdings_resource.yaml
53   erm_license:
54     $ref: ./definitions/erm_license.yaml
55   erm_usage_data_provider:
56     $ref: ./definitions/erm_usage_data_provider.yaml
57   erm_usage_mus:
58     $ref: ./definitions/erm_usage_mus.yaml
59   erm_usage_title:
60     $ref: ./definitions/erm_usage_title.yaml
61   erm_usage_yus:
62     $ref: ./definitions/erm_usage_yus.yaml
63   error:
64     $ref: ./definitions/error.yaml
65   fund:
66     $ref: ./definitions/fund.yaml
67   hold:
68     $ref: ./definitions/hold.yaml
69   holds:
70     $ref: ./definitions/holds.yaml
71   ill_backend:
72     $ref: ./definitions/ill_backend.yaml
73   ill_backends:
74     $ref: ./definitions/ill_backends.yaml
75   ill_status:
76     $ref: ./definitions/ill_status.yaml
77   ill_request:
78     $ref: ./definitions/ill_request.yaml
79   ill_batch:
80     $ref: ./definitions/ill_batch.yaml
81   ill_batches:
82     $ref: ./definitions/ill_batches.yaml
83   ill_batchstatus:
84     $ref: ./definitions/ill_batchstatus.yaml
85   ill_batchstatuses:
86     $ref: ./definitions/ill_batchstatuses.yaml
87   import_batch_profile:
88     $ref: ./definitions/import_batch_profile.yaml
89   import_batch_profiles:
90     $ref: ./definitions/import_batch_profiles.yaml
91   import_record_match:
92     $ref: ./definitions/import_record_match.yaml
93   invoice:
94     $ref: ./definitions/invoice.yaml
95   item:
96     $ref: ./definitions/item.yaml
97   item_group:
98     $ref: ./definitions/item_group.yaml
99   job:
100     $ref: ./definitions/job.yaml
101   library:
102     $ref: ./definitions/library.yaml
103   order:
104     $ref: ./definitions/order.yaml
105   patron:
106     $ref: ./definitions/patron.yaml
107   patron_account_credit:
108     $ref: ./definitions/patron_account_credit.yaml
109   patron_balance:
110     $ref: ./definitions/patron_balance.yaml
111   patron_extended_attribute:
112     $ref: ./definitions/patron_extended_attribute.yaml
113   preservation_config:
114     $ref: ./definitions/preservation_config.yaml
115   preservation_train:
116     $ref: ./definitions/preservation_train.yaml
117   preservation_train_item:
118     $ref: ./definitions/preservation_train_item.yaml
119   preservation_processing:
120     $ref: ./definitions/preservation_processing.yaml
121   quote:
122     $ref: ./definitions/quote.yaml
123   renewal:
124     $ref: ./definitions/renewal.yaml
125   renewals:
126     $ref: ./definitions/renewals.yaml
127   return_claim:
128     $ref: ./definitions/return_claim.yaml
129   search_filter:
130     $ref: ./definitions/search_filter.yaml
131   smtp_server:
132     $ref: ./definitions/smtp_server.yaml
133   suggestion:
134     $ref: ./definitions/suggestion.yaml
135   ticket:
136     $ref: ./definitions/ticket.yaml
137   ticket_update:
138     $ref: ./definitions/ticket_update.yaml
139   transfer_limit:
140     $ref: ./definitions/transfer_limit.yaml
141   vendor:
142     $ref: ./definitions/vendor.yaml
143   vendor_issue:
144     $ref: ./definitions/vendor_issue.yaml
145 paths:
146   /acquisitions/baskets/managers:
147     $ref: paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers
148   /acquisitions/funds:
149     $ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds
150   /acquisitions/funds/owners:
151     $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners
152   /acquisitions/funds/users:
153     $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users
154   /acquisitions/orders:
155     $ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders
156   "/acquisitions/orders/{order_id}":
157     $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
158   /acquisitions/vendors:
159     $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
160   "/acquisitions/vendors/{vendor_id}":
161     $ref: "./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors~1{vendor_id}"
162   "/acquisitions/vendors/{vendor_id}/issues":
163     $ref: "./paths/acquisitions_vendor_issues.yaml#/~1acquisitions~1vendors~1{vendor_id}~1issues"
164   /advanced_editor/macros:
165     $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros
166   /advanced_editor/macros/shared:
167     $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared
168   /search_filters:
169     $ref: ./paths/search_filters.yaml#/~1search_filters
170   "/search_filters/{search_filter_id}":
171     $ref: "./paths/search_filters.yaml#/~1search_filters~1{search_filter_id}"
172   "/advanced_editor/macros/shared/{advancededitormacro_id}":
173     $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared~1{advancededitormacro_id}"
174   "/advanced_editor/macros/{advancededitormacro_id}":
175     $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1{advancededitormacro_id}"
176   "/article_requests/{article_request_id}":
177     $ref: "./paths/article_requests.yaml#/~1article_requests~1{article_request_id}"
178   /auth/otp/token_delivery:
179     $ref: paths/auth.yaml#/~1auth~1otp~1token_delivery
180   "/auth/password/validation":
181     $ref: "./paths/auth.yaml#/~1auth~1password~1validation"
182   /auth/two-factor/registration:
183     $ref: paths/auth.yaml#/~1auth~1two-factor~1registration
184   /auth/two-factor/registration/verification:
185     $ref: paths/auth.yaml#/~1auth~1two-factor~1registration~1verification
186   /auth/identity_providers:
187     $ref: paths/auth.yaml#/~1auth~1identity_providers
188   "/auth/identity_providers/{identity_provider_id}":
189     $ref: paths/auth.yaml#/~1auth~1identity_providers~1{identity_provider_id}
190   "/auth/identity_providers/{identity_provider_id}/domains":
191     $ref: paths/auth.yaml#/~1auth~1identity_providers~1{identity_provider_id}~1domains
192   "/auth/identity_providers/{identity_provider_id}/domains/{identity_provider_domain_id}":
193     $ref: paths/auth.yaml#/~1auth~1identity_providers~1{identity_provider_id}~1domains~1{identity_provider_domain_id}
194   /authorised_value_categories:
195     $ref: paths/authorised_value_categories.yaml#/~1authorised_value_categories
196   "/authorised_value_categories/{authorised_value_category_name}/authorised_values":
197     $ref: "./paths/authorised_values.yaml#/~1authorised_value_categories~1{authorised_value_category_name}~1authorised_values"
198   "/authorities":
199     $ref: paths/authorities.yaml#/~1authorities
200   "/authorities/{authority_id}":
201     $ref: paths/authorities.yaml#/~1authorities~1{authority_id}
202   "/biblios":
203     $ref: "./paths/biblios.yaml#/~1biblios"
204   "/biblios/{biblio_id}":
205     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}"
206   "/biblios/{biblio_id}/checkouts":
207     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1checkouts"
208   "/biblios/{biblio_id}/items":
209     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items"
210   "/biblios/{biblio_id}/items/{item_id}":
211     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items~1{item_id}"
212   "/biblios/{biblio_id}/pickup_locations":
213     $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1pickup_locations"
214   "/biblios/{biblio_id}/item_groups":
215     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups"
216   "/biblios/{biblio_id}/item_groups/{item_group_id}":
217     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}"
218   "/biblios/{biblio_id}/item_groups/{item_group_id}/items":
219     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items"
220   "/biblios/{biblio_id}/item_groups/{item_group_id}/items/{item_id}":
221     $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}"
222   "/cash_registers/{cash_register_id}/cashups":
223     $ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups"
224   "/cashups/{cashup_id}":
225     $ref: "./paths/cash_registers.yaml#/~1cashups~1{cashup_id}"
226   /checkouts:
227     $ref: ./paths/checkouts.yaml#/~1checkouts
228   "/checkouts/{checkout_id}":
229     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}"
230   "/checkouts/{checkout_id}/allows_renewal":
231     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1allows_renewal"
232   "/checkouts/{checkout_id}/renewals":
233     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewals"
234   "/checkouts/{checkout_id}/renewal":
235     $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewal"
236   "/checkouts/availability":
237     $ref: "./paths/checkouts.yaml#/~1checkouts~1availability"
238   /circulation-rules/kinds:
239     $ref: ./paths/circulation-rules.yaml#/~1circulation-rules~1kinds
240   /cities:
241     $ref: ./paths/cities.yaml#/~1cities
242   "/cities/{city_id}":
243     $ref: "./paths/cities.yaml#/~1cities~1{city_id}"
244   "/clubs/{club_id}/holds":
245     $ref: "./paths/clubs.yaml#/~1clubs~1{club_id}~1holds"
246   /config/smtp_servers:
247     $ref: ./paths/config_smtp_servers.yaml#/~1config~1smtp_servers
248   "/config/smtp_servers/{smtp_server_id}":
249     $ref: "./paths/config_smtp_servers.yaml#/~1config~1smtp_servers~1{smtp_server_id}"
250   /erm/config:
251     $ref: ./paths/erm_config.yaml#/~1erm~1config
252   /erm/agreements:
253     $ref: ./paths/erm_agreements.yaml#/~1erm~1agreements
254   "/erm/agreements/{agreement_id}":
255     $ref: "./paths/erm_agreements.yaml#/~1erm~1agreements~1{agreement_id}"
256   "/erm/documents/{document_id}/file/content":
257     $ref: "./paths/erm_documents.yaml#/~1erm~1documents~1{document_id}~1file~1content"
258   /erm/counter_files:
259     $ref: ./paths/erm_counter_files.yaml#/~1erm~1counter_files
260   "/erm/counter_files/{erm_counter_files_id}":
261     $ref: "./paths/erm_counter_files.yaml#/~1erm~1counter_files~1{erm_counter_files_id}"
262   "/erm/counter_files/{erm_counter_files_id}/file/content":
263     $ref: "./paths/erm_counter_files.yaml#/~1erm~1counter_files~1{erm_counter_files_id}~1file~1content"
264   /erm/default_usage_reports:
265     $ref: ./paths/erm_default_usage_reports.yaml#/~1erm~1default_usage_reports
266   "/erm/default_usage_reports/{erm_default_usage_report_id}":
267     $ref: "./paths/erm_default_usage_reports.yaml#/~1erm~1default_usage_reports~1{erm_default_usage_report_id}"
268   "/erm/eholdings/{provider}/titles":
269     $ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles"
270   /erm/eholdings/local/titles/import:
271     $ref: ./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1local~1titles~1import
272   "/erm/eholdings/{provider}/titles/{title_id}":
273     $ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}"
274   "/erm/eholdings/{provider}/titles/{title_id}/resources":
275     $ref: "./paths/erm_eholdings_titles_resources.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}~1resources"
276   "/erm/eholdings/{provider}/packages":
277     $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages"
278   "/erm/eholdings/{provider}/resources":
279     $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources"
280   "/erm/eholdings/{provider}/resources/{resource_id}":
281     $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources~1{resource_id}"
282   "/erm/eholdings/{provider}/packages/{package_id}":
283     $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}"
284   "/erm/eholdings/{provider}/packages/{package_id}/resources":
285     $ref: "./paths/erm_eholdings_packages_resources.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}~1resources"
286   /erm/licenses:
287     $ref: ./paths/erm_licenses.yaml#/~1erm~1licenses
288   "/erm/licenses/{license_id}":
289     $ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}"
290   /erm/usage_data_providers:
291     $ref: ./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers
292   "/erm/usage_data_providers/{erm_usage_data_provider_id}":
293     $ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}"
294   "/erm/usage_data_providers/{erm_usage_data_provider_id}/run":
295     $ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}~1run"
296   "/erm/usage_data_providers/{erm_usage_data_provider_id}/test_connection":
297     $ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}~1test_connection"
298   /erm/usage_titles:
299     $ref: ./paths/erm_usage_titles.yaml#/~1erm~1usage_titles
300   /erm/users:
301     $ref: ./paths/erm_users.yaml#/~1erm~1users
302   /holds:
303     $ref: ./paths/holds.yaml#/~1holds
304   "/holds/{hold_id}":
305     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
306   "/holds/{hold_id}/pickup_location":
307     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
308   "/holds/{hold_id}/pickup_locations":
309     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
310   "/holds/{hold_id}/priority":
311     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
312   "/holds/{hold_id}/suspension":
313     $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
314   /ill/backends:
315     $ref: ./paths/ill_backends.yaml#/~1ill~1backends
316   "/ill/backends/{ill_backend_id}":
317     $ref: "./paths/ill_backends.yaml#/~1ill~1backends~1{ill_backend_id}"
318   /ill/requests:
319     $ref: ./paths/ill_requests.yaml#/~1ill~1requests
320   /ill/batches:
321     $ref: ./paths/ill_batches.yaml#/~1ill~1batches
322   "/ill/batches/{ill_batch_id}":
323     $ref: "./paths/ill_batches.yaml#/~1ill~1batches~1{ill_batch_id}"
324   /ill/batchstatuses:
325     $ref: ./paths/ill_batchstatuses.yaml#/~1ill~1batchstatuses
326   "/ill/batchstatuses/{ill_batchstatus_code}":
327     $ref: "./paths/ill_batchstatuses.yaml#/~1ill~1batchstatuses~1{ill_batchstatus_code}"
328   "/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
329     $ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
330   /import_batch_profiles:
331     $ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
332   "/import_batch_profiles/{import_batch_profile_id}":
333     $ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
334   /items:
335     $ref: ./paths/items.yaml#/~1items
336   "/items/{item_id}":
337     $ref: "./paths/items.yaml#/~1items~1{item_id}"
338   "/items/{item_id}/bundled_items":
339     $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
340   "/items/{item_id}/bundled_items/{bundled_item_id}":
341     $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
342   "/items/{item_id}/pickup_locations":
343     $ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
344   /jobs:
345     $ref: ./paths/jobs.yaml#/~1jobs
346   "/jobs/{job_id}":
347     $ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
348   /libraries:
349     $ref: ./paths/libraries.yaml#/~1libraries
350   "/libraries/{library_id}":
351     $ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
352   "/oauth/login/{provider_code}/{interface}":
353     $ref: ./paths/oauth.yaml#/~1oauth~1login~1{provider_code}~1{interface}
354   /oauth/token:
355     $ref: ./paths/oauth.yaml#/~1oauth~1token
356   /patrons:
357     $ref: ./paths/patrons.yaml#/~1patrons
358   "/patrons/{patron_id}":
359     $ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
360   "/patrons/{patron_id}/account":
361     $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
362   "/patrons/{patron_id}/account/credits":
363     $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
364   "/patrons/{patron_id}/account/debits":
365     $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1debits"
366   "/patrons/{patron_id}/extended_attributes":
367     $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
368   "/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
369     $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
370   "/patrons/{patron_id}/holds":
371     $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
372   "/patrons/{patron_id}/password":
373     $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
374   "/patrons/{patron_id}/password/expiration_date":
375     $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
376   /preservation/config:
377     $ref: ./paths/preservation_config.yaml#/~1preservation~1config
378   /preservation/trains:
379     $ref: ./paths/preservation_trains.yaml#/~1preservation~1trains
380   "/preservation/trains/{train_id}":
381     $ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}"
382   "/preservation/trains/{train_id}/items":
383     $ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items"
384   "/preservation/trains/{train_id}/items/batch":
385     $ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items~1batch"
386   "/preservation/trains/{train_id}/items/{train_item_id}":
387     $ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items~1{train_item_id}"
388   "/preservation/trains/{train_id}/items/{train_item_id}/copy":
389     $ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items~1{train_item_id}~1copy"
390   /preservation/processings:
391     $ref: ./paths/preservation_processings.yaml#/~1preservation~1processings
392   "/preservation/processings/{processing_id}":
393     $ref: "./paths/preservation_processings.yaml#/~1preservation~1processings~1{processing_id}"
394   /preservation/waiting-list/items:
395     $ref: ./paths/preservation_waiting_list.yaml#/~1preservation~1waiting-list~1items
396   "/preservation/waiting-list/items/{item_id}":
397     $ref: "./paths/preservation_waiting_list.yaml#/~1preservation~1waiting-list~1items~1{item_id}"
398   "/public/biblios/{biblio_id}":
399     $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
400   "/public/checkouts/availability":
401     $ref: ./paths/checkouts.yaml#/~1public~1checkouts~1availability
402   "/public/items":
403     $ref: "./paths/items.yaml#/~1public~1items"
404   "/public/biblios/{biblio_id}/items":
405     $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
406   "/public/biblios/{biblio_id}/ratings":
407     $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
408   /public/libraries:
409     $ref: ./paths/libraries.yaml#/~1public~1libraries
410   "/public/libraries/{library_id}":
411     $ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
412   "/public/oauth/login/{provider_code}/{interface}":
413     $ref: ./paths/public_oauth.yaml#/~1public~1oauth~1login~1{provider_code}~1{interface}
414   "/public/patrons/{patron_id}/article_requests/{article_request_id}":
415     $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
416   "/public/patrons/{patron_id}/checkouts":
417     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1checkouts"
418   "/public/patrons/{patron_id}/guarantors/can_see_charges":
419     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
420   "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
421     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
422   "/public/patrons/{patron_id}/holds/{hold_id}":
423     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1holds~1{hold_id}"
424   "/public/patrons/{patron_id}/password":
425     $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
426   "/public/tickets":
427     $ref: "./paths/tickets.yaml#/~1public~1tickets"
428   /quotes:
429     $ref: ./paths/quotes.yaml#/~1quotes
430   "/quotes/{quote_id}":
431     $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
432   /return_claims:
433     $ref: ./paths/return_claims.yaml#/~1return_claims
434   "/return_claims/{claim_id}":
435     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
436   "/return_claims/{claim_id}/notes":
437     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
438   "/return_claims/{claim_id}/resolve":
439     $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
440   "/rotas/{rota_id}/stages/{stage_id}/position":
441     $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
442   /suggestions:
443     $ref: ./paths/suggestions.yaml#/~1suggestions
444   "/suggestions/{suggestion_id}":
445     $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
446   /suggestions/managers:
447     $ref: paths/suggestions.yaml#/~1suggestions~1managers
448   "/tickets":
449     $ref: "./paths/tickets.yaml#/~1tickets"
450   "/tickets/{ticket_id}":
451     $ref: "./paths/tickets.yaml#/~1tickets~1{ticket_id}"
452   "/tickets/{ticket_id}/updates":
453     $ref: "./paths/tickets.yaml#/~1tickets~1{ticket_id}~1updates"
454   /transfer_limits:
455     $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
456   /transfer_limits/batch:
457     $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
458   "/transfer_limits/{limit_id}":
459     $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
460 parameters:
461   advancededitormacro_id_pp:
462     description: Advanced editor macro internal identifier
463     in: path
464     name: advancededitormacro_id
465     required: true
466     type: integer
467   agreement_id_pp:
468     description: Agreement internal identifier
469     in: path
470     name: agreement_id
471     required: true
472     type: integer
473   agreement_period_id_pp:
474     description: Agreement period internal identifier
475     in: path
476     name: agreement_period_id
477     required: true
478     type: integer
479   authorised_value_id_pp:
480     description: Authorised value internal identifier
481     in: path
482     name: authorised_value_id
483     required: true
484     type: integer
485   authority_id_pp:
486     description: Authority identifier
487     in: path
488     name: authority_id
489     required: true
490     type: integer
491   authority_type_header:
492     description: Authority type code. Use when content type is not application/json
493     name: x-authority-type
494     in: header
495     required: false
496     type: string
497   framework_id_header:
498     description: Framework id. Use when content type is not application/json
499     name: x-framework-id
500     in: header
501     required: false
502     type: string
503   marc_schema_header:
504     description: March schema. One of MARC21 or UNIMARC
505     name: x-record-schema
506     in: header
507     required: false
508     type: string
509     enum:
510       - MARC21
511       - UNIMARC
512   confirm_not_duplicate_header:
513     description: Confirm the posted element is not a duplicate
514     name: x-confirm-not-duplicate
515     in: header
516     required: false
517     type: integer
518   identity_provider_id_pp:
519     description: Identity provider internal identifier
520     in: path
521     name: identity_provider_id
522     required: true
523     type: integer
524   identity_provider_domain_id_pp:
525     description: Identity provider domain internal identifier
526     in: path
527     name: identity_provider_domain_id
528     required: true
529     type: integer
530   biblio_id_pp:
531     description: Record internal identifier
532     in: path
533     name: biblio_id
534     required: true
535     type: integer
536   candidate_match_id_pp:
537     description: Internal import record match identifier
538     in: path
539     name: candidate_match_id
540     required: true
541     type: integer
542   cash_register_id_pp:
543     description: Cash register internal identifier
544     in: path
545     name: cash_register_id
546     required: true
547     type: integer
548   cashup_id_pp:
549     description: Cashup internal identifier
550     in: path
551     name: cashup_id
552     required: true
553     type: integer
554   checkout_id_pp:
555     description: Internal checkout identifier
556     in: path
557     name: checkout_id
558     required: true
559     type: integer
560   city_id_pp:
561     description: City internal identifier
562     in: path
563     name: city_id
564     required: true
565     type: integer
566   club_id_pp:
567     description: Internal club identifier
568     in: path
569     name: club_id
570     required: true
571     type: integer
572   eholdings_title_id_pp:
573     description: Title internal identifier
574     in: path
575     name: title_id
576     required: true
577     type: integer
578   eholdings_package_id_pp:
579     description: Package internal identifier
580     in: path
581     name: package_id
582     required: true
583     type: string
584   eholdings_resource_id_pp:
585     description: Resource internal identifier
586     in: path
587     name: resource_id
588     required: true
589     type: string
590   erm_counter_files_id_pp:
591     description: ERM counter_files internal identifier
592     in: path
593     name: erm_counter_files_id
594     required: true
595     type: integer
596   erm_counter_log_id_pp:
597     description: ERM counter_log internal identifier
598     in: path
599     name: erm_counter_log_id
600     required: true
601     type: integer
602   erm_usage_data_provider_id_pp:
603     description: ERM usage_data_provider internal identifier
604     in: path
605     name: erm_usage_data_provider_id
606     required: true
607     type: integer
608   data_type_pp:
609     description: ERM custom report data type
610     in: path
611     name: data_type
612     required: true
613     type: string
614   fund_id_pp:
615     description: Fund id
616     in: path
617     name: fund_id
618     required: true
619     type: integer
620   hold_id_pp:
621     description: Internal hold identifier
622     in: path
623     name: hold_id
624     required: true
625     type: integer
626   ill_batch_id_pp:
627     description: Internal ILL batch identifier
628     in: path
629     name: ill_batch_id
630     required: true
631     type: integer
632   ill_batchstatus_code_pp:
633     description: Internal ILL batch status identifier
634     in: path
635     name: ill_batchstatus_code
636     required: true
637     type: string
638   import_batch_profile_id_pp:
639     description: Internal profile identifier
640     in: path
641     name: import_batch_profile_id
642     required: true
643     type: integer
644   import_record_id_pp:
645     description: Internal import record identifier
646     in: path
647     name: import_record_id
648     required: true
649     type: integer
650   item_id_pp:
651     description: Internal item identifier
652     in: path
653     name: item_id
654     required: true
655     type: integer
656   item_id_qp:
657     description: Internal item identifier
658     in: query
659     name: item_id
660     type: integer
661   job_id_pp:
662     description: Job internal identifier
663     in: path
664     name: job_id
665     required: true
666     type: integer
667   library_id_pp:
668     description: Internal library identifier
669     in: path
670     name: library_id
671     required: true
672     type: string
673   license_id_pp:
674     description: License internal identifier
675     in: path
676     name: license_id
677     required: true
678     type: integer
679   match:
680     description: Matching criteria
681     enum:
682       - contains
683       - exact
684       - starts_with
685       - ends_with
686     in: query
687     name: _match
688     required: false
689     type: string
690   order_by:
691     collectionFormat: csv
692     description: Sorting criteria
693     in: query
694     items:
695       type: string
696     name: _order_by
697     required: false
698     type: array
699   order_id_pp:
700     description: Internal order identifier
701     in: path
702     name: order_id
703     required: true
704     type: integer
705   page:
706     description: "Page number, for paginated object listing"
707     in: query
708     name: _page
709     required: false
710     type: integer
711   patron_id_pp:
712     description: Internal patron identifier
713     in: path
714     name: patron_id
715     required: true
716     type: integer
717   patron_id_qp:
718     description: Internal patron identifier
719     in: query
720     name: patron_id
721     type: integer
722   per_page:
723     description: "Page size, for paginated object listing"
724     in: query
725     name: _per_page
726     required: false
727     type: integer
728   preservation_processing_id_pp:
729     description: processing internal identifier
730     in: path
731     name: processing_id
732     required: true
733     type: integer
734   preservation_train_id_pp:
735     description: train internal identifier
736     in: path
737     name: train_id
738     required: true
739     type: integer
740   preservation_train_item_id_pp:
741     description: train item internal identifier
742     in: path
743     name: train_item_id
744     required: true
745     type: integer
746   q_body:
747     description: Query filter sent through request"s body
748     in: body
749     name: query
750     required: false
751     schema:
752       type: object
753   q_param:
754     description: Query filter sent as a request parameter
755     in: query
756     name: q
757     required: false
758     type: array
759     items:
760       type: string
761     collectionFormat: multi
762   quote_id_pp:
763     description: Quote internal identifier
764     in: path
765     name: quote_id
766     required: true
767     type: integer
768   request_id_header:
769     description: Request id header
770     in: header
771     name: x-koha-request-id
772     required: false
773     type: integer
774   search_filter_id_pp:
775     name: search_filter_id
776     in: path
777     description: Search filter internal identifier
778     required: true
779     type: integer
780   seen_pp:
781     description: Item was seen flag
782     in: query
783     name: seen
784     required: false
785     type: integer
786   smtp_server_id_pp:
787     description: SMTP server internal identifier
788     in: path
789     name: smtp_server_id
790     required: true
791     type: integer
792   suggestion_id_pp:
793     description: Internal suggestion identifier
794     in: path
795     name: suggestion_id
796     required: true
797     type: integer
798   ticket_id_pp:
799     description: Internal ticket identifier
800     in: path
801     name: ticket_id
802     required: true
803     type: integer
804   transfer_limit_id_pp:
805     description: Internal transfer limit identifier
806     in: path
807     name: limit_id
808     required: true
809     type: string
810   vendor_id_pp:
811     description: Vendor id
812     in: path
813     name: vendor_id
814     required: true
815     type: integer
816 info:
817   title: Koha REST API
818   version: "1"
819   license:
820     name: "GPL v3,"
821     url: http://www.gnu.org/licenses/gpl.txt
822   contact:
823     name: Koha Development Team
824     url: https://koha-community.org/
825   description: |
826     ## Background
827
828     The API supports two sets of endpoints, one targetted at library staff and the other at at library users.
829
830     Those endpoints under the `/public` path are aimed at delivering functionality tailored to library users and offer
831     a more restricted set of functions, overrides and data in thier responses for data privacy and library policy
832     reasons. Many of these endpoints do not require authentication for fetching public data, though an authenticated
833     session will expose additional options and allow users to see more data where it is part of their own record.
834
835     All other endpoints are targetted at the staff interface level and allow for additional functionality and a more
836     unrestricted view of data.  These endpoints, however, have a level of redaction built in for resources that the
837     api consumer should not have access to.  For example, user data for users who do not belong to the same library
838     or library group of your api user will be reduced to just minimum neccesary for a valid response. Object keys will
839     be consistent for all responses, but their values may be removed depending on access.
840
841     ## Authentication
842
843     The API supports the following authentication mechanisms
844
845     * HTTP Basic authentication
846     * OAuth2 (client credentials grant)
847     * Cookie-based
848
849     Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
850     by system preferences.
851
852     ## Authorization
853
854     The API uses existing user profiles to restrict access to resources based on user permissions and the library the
855     API user is assigned to.  This may result, at times, in resources being returned in a redacted form with all keys
856     present but sensative values nulled.
857
858     We do not yet support OAuth Scopes or the Authorization Code grant flow.
859
860     ## Errors
861
862     The API uses standard HTTP status codes to indicate the success or failure
863     of the API call. The body of the response will be JSON in the following format:
864
865     ```
866     {
867       "error": "Current settings prevent the passed due date to be applied",
868       "error_code": "invalid_due_date"
869     }
870     ```
871
872     Note: Some routes might offer additional attributes in their error responses but that"s
873     subject to change and thus not documented.
874
875     ## Filtering responses
876
877     The API allows for some advanced response filtering using a JSON based query syntax. The
878     query can be added to the requests:
879
880     * as a query parameter `q=`
881     * in the request body
882
883     For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
884     matches one of the fields as described in the particular endpoints response object.
885
886     We can refine that with more complex matching clauses by nesting a the clause into the
887     object; `{ "fieldname": { "clause": "value" } }`.
888
889     Available matching clauses include `>`, `<`, `>=`, `<=`, `-like`, and `-not_like`.
890
891     We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
892     level will result in an "AND" query, whilst combinding them in an `ARRAY` will result in an
893     "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
894     results with both field1 containing value2 AND field2 containing value2 for example.
895
896     Additionally, if you are requesting related data be embedded into the response one can query
897     on the related data using dot notation in the field names.
898
899     ### Examples
900
901     The following request would return any patron with firstname "Henry" and lastname "Acevedo";
902
903     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw '{ "surname": "Acevedo", "firstname": "Henry" }'`
904
905     The following request would return any patron whose lastname begins with "Ace";
906
907     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw '{ "surname": { "-like": "Ace%" }'`
908
909     The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
910
911     `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw '{ "surname": [ "Acevedo", "Bernardo" ] }'`
912
913     The following request embeds the related patron extended attributes data and filters on it.
914
915     `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" }'`
916
917     ## Special headers
918
919     ### x-koha-embed
920
921     This optional header allows the api consumer to request additional related data
922     to be returned in the api response.  It also allows for cross referencing in the
923     queries as described above. It accepts a comma delimited list of relation names.
924
925     Relations may on occasion also support dot delimited nesting to allow traversal.
926
927     ### x-koha-library
928
929     This optional header should be passed to give your api request a library
930     context; If it is not included in the request, then the request context
931     will default to using your api comsumer"s assigned home library.
932 tags:
933   - description: "Manage article requests\n"
934     name: article_requests
935     x-displayName: Article requests
936   - description: "Manage authorised value categories\n"
937     name: authorised_value_categories
938     x-displayName: Authorised value categories
939   - description: "Manage authorised values\n"
940     name: authorised_values
941     x-displayName: Authorised values
942   - description: "Manage batch import profiles\n"
943     name: batch_import_profiles
944     x-displayName: Batch import profiles
945   - description: "Manage baskets for the acquisitions module\n"
946     name: baskets
947     x-displayName: Baskets
948   - description: "Manage Authority records\n"
949     name: authorities
950     x-displayName: Authorities
951   - description: "Manage bibliographic records\n"
952     name: biblios
953     x-displayName: Biblios
954   - description: "Manage cash register cashups\n"
955     name: cashups
956     x-displayName: Cashups
957   - description: "Manage checkouts\n"
958     name: checkouts
959     x-displayName: Checkouts
960   - description: "Manage circulation rules\n"
961     name: circulation_rules
962     x-displayName: Circulation rules
963   - description: "Manage cities\n"
964     name: cities
965     x-displayName: Cities
966   - description: "Manage patron clubs\n"
967     name: clubs
968     x-displayName: Clubs
969   - description: "Manage ERM agreements\n"
970     name: erm_agreements
971     x-displayName: ERM agreements
972   - description: "Manage ERM configuration\n"
973     name: erm_config
974     x-displayName: ERM configuration
975   - description: "Manage ERM docuemnts\n"
976     name: erm_documents
977     x-displayName: ERM documents
978   - description: "Manage ERM eHoldings packages\n"
979     name: erm_eholdings_packages
980     x-displayName: ERM eHoldings packages
981   - description: "Manage ERM eHoldings resources\n"
982     name: erm_eholdings_resources
983     x-displayName: ERM eHoldings resources
984   - description: "Manage ERM eHoldings titles\n"
985     name: erm_eholdings_titles
986     x-displayName: ERM eHoldings titles
987   - description: "Manage ERM licences\n"
988     name: erm_licences
989     x-displayName: ERM licences
990   - description: "Manage ERM users\n"
991     name: erm_users
992     x-displayName: ERM users
993   - description: "Manage funds for the acquisitions module\n"
994     name: funds
995     x-displayName: Funds
996   - description: "Manage holds\n"
997     name: holds
998     x-displayName: Holds
999   - description: "Manage identity providers\n"
1000     name: identity_providers
1001     x-displayName: Identity providers
1002   - description: "Manage ILL module backends\n"
1003     name: ill_backends
1004     x-displayName: ILL backends
1005   - description: "Manage ILL module batches\n"
1006     name: ill_batches
1007     x-displayName: ILL batches
1008   - description: "Manage ILL module batch statuses\n"
1009     name: ill_batchstatuses
1010     x-displayName: ILL batch statuses
1011   - description: "Manage ILL requests\n"
1012     name: ill_requests
1013     x-displayName: ILL requests
1014   - description: "Manage import batches\n"
1015     name: import_batches
1016     x-displayName: Import batches
1017   - description: "Manage item groups\n"
1018     name: item_groups
1019     x-displayName: Item groups
1020   - description: "Manage items\n"
1021     name: items
1022     x-displayName: Items
1023   - description: "Manage jobs\n"
1024     name: jobs
1025     x-displayName: Jobs
1026   - description: "Manage libraries\n"
1027     name: libraries
1028     x-displayName: Libraries
1029   - description: "Manage macros\n"
1030     name: macros
1031     x-displayName: Macros
1032   - description: "Manage acquisition orders\n"
1033     name: orders
1034     x-displayName: Orders
1035   - description: "Handle OAuth flows\n"
1036     name: oauth
1037     x-displayName: OAuth
1038   - description: "Manage patrons\n"
1039     name: patrons
1040     x-displayName: Patrons
1041   - description: "Manage purchase suggestions\n"
1042     name: suggestions
1043     x-displayName: Purchase suggestions
1044   - description: "Manage quotes\n"
1045     name: quotes
1046     x-displayName: Quotes
1047   - description: "Manage return claims\n"
1048     name: return_claims
1049     x-displayName: Return claims
1050   - description: "Manage rotas\n"
1051     name: rotas
1052     x-displayName: Rotas
1053   - description: "Manage search filters"
1054     name: search_filters
1055     x-displayName: Search filters
1056   - description: "Manage SMTP servers configurations\n"
1057     name: smtp_servers
1058     x-displayName: SMTP servers
1059   - description: "Manage tickets\n"
1060     name: tickets
1061     x-displayName: Tickets
1062   - description: "Manage transfer limits\n"
1063     name: transfer
1064     x-displayName: Transfer limits
1065   - description: "Handle two factor authentication flows\n"
1066     name: 2fa
1067     x-displayName: Two factor authentication
1068   - description: "Manage vendors for the acquisitions module\n"
1069     name: vendors
1070     x-displayName: Vendors