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