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