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