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