6 $ref: ./definitions/account_line.yaml
8 $ref: ./definitions/advancededitormacro.yaml
10 $ref: ./definitions/allows_renewal.yaml
12 $ref: ./definitions/basket.yaml
14 $ref: ./definitions/bundle_link.yaml
16 $ref: ./definitions/cashup.yaml
18 $ref: ./definitions/checkout.yaml
20 $ref: ./definitions/checkouts.yaml
22 $ref: ./definitions/circ-rule-kind.yaml
24 $ref: ./definitions/city.yaml
26 $ref: ./definitions/erm_agreement.yaml
28 $ref: ./definitions/erm_eholdings_title.yaml
29 erm_eholdings_package:
30 $ref: ./definitions/erm_eholdings_package.yaml
31 erm_eholdings_resource:
32 $ref: ./definitions/erm_eholdings_resource.yaml
34 $ref: ./definitions/erm_license.yaml
36 $ref: ./definitions/error.yaml
38 $ref: ./definitions/fund.yaml
40 $ref: ./definitions/hold.yaml
42 $ref: ./definitions/holds.yaml
44 $ref: ./definitions/ill_backend.yaml
46 $ref: ./definitions/ill_backends.yaml
48 $ref: ./definitions/import_batch_profile.yaml
49 import_batch_profiles:
50 $ref: ./definitions/import_batch_profiles.yaml
52 $ref: ./definitions/import_record_match.yaml
54 $ref: ./definitions/invoice.yaml
56 $ref: ./definitions/item.yaml
58 $ref: ./definitions/item_group.yaml
60 $ref: ./definitions/job.yaml
62 $ref: ./definitions/library.yaml
64 $ref: ./definitions/order.yaml
66 $ref: ./definitions/patron.yaml
67 patron_account_credit:
68 $ref: ./definitions/patron_account_credit.yaml
70 $ref: ./definitions/patron_balance.yaml
71 patron_extended_attribute:
72 $ref: ./definitions/patron_extended_attribute.yaml
74 $ref: ./definitions/quote.yaml
76 $ref: ./definitions/renewal.yaml
78 $ref: ./definitions/renewals.yaml
80 $ref: ./definitions/return_claim.yaml
82 $ref: ./definitions/search_filter.yaml
84 $ref: ./definitions/smtp_server.yaml
86 $ref: ./definitions/suggestion.yaml
88 $ref: ./definitions/transfer_limit.yaml
90 $ref: ./definitions/vendor.yaml
92 /acquisitions/baskets/managers:
93 $ref: paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers
95 $ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds
96 /acquisitions/funds/owners:
97 $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners
98 /acquisitions/funds/users:
99 $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users
100 /acquisitions/orders:
101 $ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders
102 "/acquisitions/orders/{order_id}":
103 $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
104 /acquisitions/vendors:
105 $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
106 "/acquisitions/vendors/{vendor_id}":
107 $ref: "./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors~1{vendor_id}"
108 /advanced_editor/macros:
109 $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros
110 /advanced_editor/macros/shared:
111 $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared
113 $ref: ./paths/search_filters.yaml#/~1search_filters
114 "/search_filters/{search_filter_id}":
115 $ref: "./paths/search_filters.yaml#/~1search_filters~1{search_filter_id}"
116 "/advanced_editor/macros/shared/{advancededitormacro_id}":
117 $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared~1{advancededitormacro_id}"
118 "/advanced_editor/macros/{advancededitormacro_id}":
119 $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1{advancededitormacro_id}"
120 "/article_requests/{article_request_id}":
121 $ref: "./paths/article_requests.yaml#/~1article_requests~1{article_request_id}"
122 /auth/otp/token_delivery:
123 $ref: paths/auth.yaml#/~1auth~1otp~1token_delivery
124 /auth/two-factor/registration:
125 $ref: paths/auth.yaml#/~1auth~1two-factor~1registration
126 /auth/two-factor/registration/verification:
127 $ref: paths/auth.yaml#/~1auth~1two-factor~1registration~1verification
128 "/biblios/{biblio_id}":
129 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}"
130 "/biblios/{biblio_id}/checkouts":
131 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1checkouts"
132 "/biblios/{biblio_id}/items":
133 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items"
134 "/biblios/{biblio_id}/pickup_locations":
135 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1pickup_locations"
136 "/biblios/{biblio_id}/item_groups":
137 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups"
138 "/biblios/{biblio_id}/item_groups/{item_group_id}":
139 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}"
140 "/biblios/{biblio_id}/item_groups/{item_group_id}/items":
141 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items"
142 "/biblios/{biblio_id}/item_groups/{item_group_id}/items/{item_id}":
143 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}"
144 "/cash_registers/{cash_register_id}/cashups":
145 $ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups"
146 "/cashups/{cashup_id}":
147 $ref: "./paths/cash_registers.yaml#/~1cashups~1{cashup_id}"
149 $ref: ./paths/checkouts.yaml#/~1checkouts
150 "/checkouts/{checkout_id}":
151 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}"
152 "/checkouts/{checkout_id}/allows_renewal":
153 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1allows_renewal"
154 "/checkouts/{checkout_id}/renewals":
155 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewals"
156 "/checkouts/{checkout_id}/renewal":
157 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewal"
158 /circulation-rules/kinds:
159 $ref: ./paths/circulation-rules.yaml#/~1circulation-rules~1kinds
161 $ref: ./paths/cities.yaml#/~1cities
163 $ref: "./paths/cities.yaml#/~1cities~1{city_id}"
164 "/clubs/{club_id}/holds":
165 $ref: "./paths/clubs.yaml#/~1clubs~1{club_id}~1holds"
166 /config/smtp_servers:
167 $ref: ./paths/config_smtp_servers.yaml#/~1config~1smtp_servers
168 "/config/smtp_servers/{smtp_server_id}":
169 $ref: "./paths/config_smtp_servers.yaml#/~1config~1smtp_servers~1{smtp_server_id}"
171 $ref: ./paths/erm_agreements.yaml#/~1erm~1agreements
172 "/erm/agreements/{agreement_id}":
173 $ref: "./paths/erm_agreements.yaml#/~1erm~1agreements~1{agreement_id}"
174 "/erm/agreements/{agreement_id}/documents/{document_id}/file/content":
175 $ref: "./paths/erm_documents.yaml#/~1erm~1agreements~1{agreement_id}~1documents~1{document_id}~1file~1content"
176 "/erm/eholdings/{provider}/titles":
177 $ref: ./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles
178 "/erm/eholdings/{provider}/titles/{title_id}":
179 $ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}"
180 "/erm/eholdings/{provider}/titles/{title_id}/resources":
181 $ref: "./paths/erm_eholdings_titles_resources.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}~1resources"
182 "/erm/eholdings/{provider}/packages":
183 $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages"
184 "/erm/eholdings/{provider}/resources":
185 $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources"
186 "/erm/eholdings/{provider}/resources/{resource_id}":
187 $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources~1{resource_id}"
188 "/erm/eholdings/{provider}/packages/{package_id}":
189 $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}"
190 "/erm/eholdings/{provider}/packages/{package_id}/resources":
191 $ref: "./paths/erm_eholdings_packages_resources.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}~1resources"
193 $ref: ./paths/erm_licenses.yaml#/~1erm~1licenses
194 "/erm/licenses/{license_id}":
195 $ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}"
197 $ref: ./paths/erm_users.yaml#/~1erm~1users
199 $ref: ./paths/holds.yaml#/~1holds
201 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
202 "/holds/{hold_id}/pickup_location":
203 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
204 "/holds/{hold_id}/pickup_locations":
205 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
206 "/holds/{hold_id}/priority":
207 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
208 "/holds/{hold_id}/suspension":
209 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
211 $ref: ./paths/ill_backends.yaml#/~1ill_backends
212 "/ill_backends/{ill_backend_id}":
213 $ref: "./paths/ill_backends.yaml#/~1ill_backends~1{ill_backend_id}"
215 $ref: ./paths/illrequests.yaml#/~1illrequests
216 "/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
217 $ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
218 /import_batch_profiles:
219 $ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
220 "/import_batch_profiles/{import_batch_profile_id}":
221 $ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
223 $ref: ./paths/items.yaml#/~1items
225 $ref: "./paths/items.yaml#/~1items~1{item_id}"
226 "/items/{item_id}/bundled_items":
227 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
228 "/items/{item_id}/bundled_items/{bundled_item_id}":
229 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
230 "/items/{item_id}/pickup_locations":
231 $ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
233 $ref: ./paths/jobs.yaml#/~1jobs
235 $ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
237 $ref: ./paths/libraries.yaml#/~1libraries
238 "/libraries/{library_id}":
239 $ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
241 $ref: ./paths/oauth.yaml#/~1oauth~1token
243 $ref: ./paths/patrons.yaml#/~1patrons
244 "/patrons/{patron_id}":
245 $ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
246 "/patrons/{patron_id}/account":
247 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
248 "/patrons/{patron_id}/account/credits":
249 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
250 "/patrons/{patron_id}/extended_attributes":
251 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
252 "/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
253 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
254 "/patrons/{patron_id}/holds":
255 $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
256 "/patrons/{patron_id}/password":
257 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
258 "/patrons/{patron_id}/password/expiration_date":
259 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
260 "/public/biblios/{biblio_id}":
261 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
262 "/public/biblios/{biblio_id}/items":
263 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
264 "/public/biblios/{biblio_id}/ratings":
265 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
267 $ref: ./paths/libraries.yaml#/~1public~1libraries
268 "/public/libraries/{library_id}":
269 $ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
270 "/public/patrons/{patron_id}/article_requests/{article_request_id}":
271 $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
272 "/public/patrons/{patron_id}/guarantors/can_see_charges":
273 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
274 "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
275 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
276 "/public/patrons/{patron_id}/password":
277 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
279 $ref: ./paths/quotes.yaml#/~1quotes
280 "/quotes/{quote_id}":
281 $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
283 $ref: ./paths/return_claims.yaml#/~1return_claims
284 "/return_claims/{claim_id}":
285 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
286 "/return_claims/{claim_id}/notes":
287 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
288 "/return_claims/{claim_id}/resolve":
289 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
290 "/rotas/{rota_id}/stages/{stage_id}/position":
291 $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
293 $ref: ./paths/suggestions.yaml#/~1suggestions
294 "/suggestions/{suggestion_id}":
295 $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
296 /suggestions/managers:
297 $ref: paths/suggestions.yaml#/~1suggestions~1managers
299 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
300 /transfer_limits/batch:
301 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
302 "/transfer_limits/{limit_id}":
303 $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
305 advancededitormacro_id_pp:
306 description: Advanced editor macro internal identifier
308 name: advancededitormacro_id
312 description: Agreement internal identifier
317 agreement_period_id_pp:
318 description: Agreement period internal identifier
320 name: agreement_period_id
324 description: Record internal identifier
329 candidate_match_id_pp:
330 description: Internal import record match identifier
332 name: candidate_match_id
336 description: Cash register internal identifier
338 name: cash_register_id
342 description: Cashup internal identifier
348 description: Internal checkout identifier
354 description: City internal identifier
360 description: Internal club identifier
365 eholdings_title_id_pp:
366 description: Title internal identifier
371 eholdings_package_id_pp:
372 description: Package internal identifier
377 eholdings_resource_id_pp:
378 description: Resource internal identifier
390 description: Internal hold identifier
395 import_batch_profile_id_pp:
396 description: Internal profile identifier
398 name: import_batch_profile_id
402 description: Internal import record identifier
404 name: import_record_id
408 description: Internal item identifier
414 description: Job internal identifier
420 description: Internal library identifier
426 description: License internal identifier
432 description: Matching criteria
443 collectionFormat: csv
444 description: Sorting criteria
452 description: Internal order identifier
458 description: "Page number, for paginated object listing"
464 description: Internal patron identifier
470 description: Internal patron identifier
475 description: "Page size, for paginated object listing"
481 description: Query filter sent through request"s body
488 description: Query filter sent as a request header
494 description: Query filter sent as a request parameter
501 collectionFormat: multi
503 description: Quote internal identifier
509 description: Request id header
511 name: x-koha-request-id
515 name: search_filter_id
517 description: Search filter internal identifier
521 description: Item was seen flag
527 description: SMTP server internal identifier
533 description: Internal suggestion identifier
538 transfer_limit_id_pp:
539 description: Internal transfer limit identifier
545 description: Vendor id
555 url: http://www.gnu.org/licenses/gpl.txt
557 name: Koha Development Team
558 url: https://koha-community.org/
562 This API is documented in **OpenAPI format**.
566 The API supports the following authentication mechanisms
568 * HTTP Basic authentication
569 * OAuth2 (client credentials grant)
572 Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
573 by system preferences.
577 The API uses standard HTTP status codes to indicate the success or failure
578 of the API call. The body of the response will be JSON in the following format:
582 "error": "Current settings prevent the passed due date to be applied",
583 "error_code": "invalid_due_date"
587 Note: Some routes might offer additional attributes in their error responses but that"s
588 subject to change and thus not documented.
590 ## Filtering responses
592 The API allows for some advanced response filtering using a JSON based query syntax. The
593 query can be added to the requests:
595 * as a query parameter `q=`
596 * in the request body
597 * in a special header `x-koha-query`
599 For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
600 matches one of the fields as described in the particular endpoints response object.
602 We can refine that with more complex matching clauses by nesting a the clause into the
603 object; `{ "fieldname": { "clause": "value" } }`.
605 Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
607 We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
608 level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
609 "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
610 results with both field1 containing value2 AND field2 containing value2 for example.
612 Additionally, if you are requesting related data be embedded into the response one can query
613 on the related data using dot notation in the field names.
617 The following request would return any patron with firstname "Henry" and lastname "Acevedo";
619 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
621 The following request would return any patron whose lastname begins with "Ace";
623 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
625 The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
627 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
629 The following request embeds the related patron extended attributes data and filters on it.
631 `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" }'`
637 This optional header allows the api consumer to request additional related data
638 to be returned in the api response. It also allows for cross referencing in the
639 queries as described above. It accepts a comma delimited list of relation names.
641 Relations may on occasion also support dot delimited nesting to allow traversal.
645 This optional header should be passed to give your api request a library
646 context; If it is not included in the request, then the request context
647 will default to using your api comsumer"s assigned home library.
649 - description: "Handle two factor authentication flows\n"
651 x-displayName: Two factor authentication
652 - description: "Manage article requests\n"
653 name: article_requests
654 x-displayName: Article requests
655 - description: "Manage baskets for the acquisitions module\n"
657 x-displayName: Baskets
658 - description: "Manage bibliographic records\n"
660 x-displayName: Biblios
661 - description: "Manage cash register cashups\n"
663 x-displayName: Cashups
664 - description: "Manage checkouts\n"
666 x-displayName: Checkouts
667 - description: "Manage circulation rules\n"
668 name: circulation_rules
669 x-displayName: Circulation rules
670 - description: "Manage cities\n"
672 x-displayName: Cities
673 - description: "Manage patron clubs\n"
676 - description: "Manage funds for the acquisitions module\n"
679 - description: "Manage holds\n"
682 - description: "Manage ILL module backends\n"
684 x-displayName: ILL backends
685 - description: "Manage ILL requests\n"
687 x-displayName: ILL requests
688 - description: "Manage import batches\n"
690 x-display-name: Import batches
691 - description: "Manage item groups\n"
693 x-displayName: Item groups
694 - description: "Manage items\n"
697 - description: "Manage jobs\n"
700 - description: "Manage libraries\n"
702 x-displayName: Libraries
703 - description: "Manage macros\n"
705 x-displayName: Macros
706 - description: "Manage acquisition orders\n"
708 x-displayName: Orders
709 - description: "Handle OAuth flows\n"
712 - description: "Manage patrons\n"
714 x-displayName: Patrons
715 - description: "Manage quotes\n"
717 x-displayName: Quotes
718 - description: "Manage return claims\n"
720 x-displayName: Return claims
721 - description: "Manage rotas\n"
724 - description: "Manage SMTP servers configurations\n"
726 x-displayName: SMTP servers
727 - description: "Manage transfer limits\n"
729 x-displayName: Transfer limits
730 - description: "Manage purchase suggestions\n"
732 x-displayName: Purchase suggestions
733 - description: "Manage vendors for the acquisitions module\n"
735 x-displayName: Vendors
736 - description: "Manage batch import profiles\n"
737 name: batch_import_profiles
738 x-displayName: Batch import profiles