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