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/eholdings/{provider}/titles":
175 $ref: ./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles
176 "/erm/eholdings/{provider}/titles/{title_id}":
177 $ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}"
178 "/erm/eholdings/{provider}/titles/{title_id}/resources":
179 $ref: "./paths/erm_eholdings_titles_resources.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}~1resources"
180 "/erm/eholdings/{provider}/packages":
181 $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages"
182 "/erm/eholdings/{provider}/resources":
183 $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources"
184 "/erm/eholdings/{provider}/resources/{resource_id}":
185 $ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources~1{resource_id}"
186 "/erm/eholdings/{provider}/packages/{package_id}":
187 $ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}"
188 "/erm/eholdings/{provider}/packages/{package_id}/resources":
189 $ref: "./paths/erm_eholdings_packages_resources.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}~1resources"
191 $ref: ./paths/erm_licenses.yaml#/~1erm~1licenses
192 "/erm/licenses/{license_id}":
193 $ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}"
195 $ref: ./paths/erm_users.yaml#/~1erm~1users
197 $ref: ./paths/holds.yaml#/~1holds
199 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
200 "/holds/{hold_id}/pickup_location":
201 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
202 "/holds/{hold_id}/pickup_locations":
203 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
204 "/holds/{hold_id}/priority":
205 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
206 "/holds/{hold_id}/suspension":
207 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
209 $ref: ./paths/ill_backends.yaml#/~1ill_backends
210 "/ill_backends/{ill_backend_id}":
211 $ref: "./paths/ill_backends.yaml#/~1ill_backends~1{ill_backend_id}"
213 $ref: ./paths/illrequests.yaml#/~1illrequests
214 "/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
215 $ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
216 /import_batch_profiles:
217 $ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
218 "/import_batch_profiles/{import_batch_profile_id}":
219 $ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
221 $ref: ./paths/items.yaml#/~1items
223 $ref: "./paths/items.yaml#/~1items~1{item_id}"
224 "/items/{item_id}/bundled_items":
225 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
226 "/items/{item_id}/bundled_items/{bundled_item_id}":
227 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
228 "/items/{item_id}/pickup_locations":
229 $ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
231 $ref: ./paths/jobs.yaml#/~1jobs
233 $ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
235 $ref: ./paths/libraries.yaml#/~1libraries
236 "/libraries/{library_id}":
237 $ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
239 $ref: ./paths/oauth.yaml#/~1oauth~1token
241 $ref: ./paths/patrons.yaml#/~1patrons
242 "/patrons/{patron_id}":
243 $ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
244 "/patrons/{patron_id}/account":
245 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
246 "/patrons/{patron_id}/account/credits":
247 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
248 "/patrons/{patron_id}/extended_attributes":
249 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
250 "/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
251 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
252 "/patrons/{patron_id}/holds":
253 $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
254 "/patrons/{patron_id}/password":
255 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
256 "/patrons/{patron_id}/password/expiration_date":
257 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
258 "/public/biblios/{biblio_id}":
259 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
260 "/public/biblios/{biblio_id}/items":
261 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
262 "/public/biblios/{biblio_id}/ratings":
263 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
265 $ref: ./paths/libraries.yaml#/~1public~1libraries
266 "/public/libraries/{library_id}":
267 $ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
268 "/public/patrons/{patron_id}/article_requests/{article_request_id}":
269 $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
270 "/public/patrons/{patron_id}/guarantors/can_see_charges":
271 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
272 "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
273 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
274 "/public/patrons/{patron_id}/password":
275 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
277 $ref: ./paths/quotes.yaml#/~1quotes
278 "/quotes/{quote_id}":
279 $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
281 $ref: ./paths/return_claims.yaml#/~1return_claims
282 "/return_claims/{claim_id}":
283 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
284 "/return_claims/{claim_id}/notes":
285 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
286 "/return_claims/{claim_id}/resolve":
287 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
288 "/rotas/{rota_id}/stages/{stage_id}/position":
289 $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
291 $ref: ./paths/suggestions.yaml#/~1suggestions
292 "/suggestions/{suggestion_id}":
293 $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
294 /suggestions/managers:
295 $ref: paths/suggestions.yaml#/~1suggestions~1managers
297 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
298 /transfer_limits/batch:
299 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
300 "/transfer_limits/{limit_id}":
301 $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
303 advancededitormacro_id_pp:
304 description: Advanced editor macro internal identifier
306 name: advancededitormacro_id
310 description: Agreement internal identifier
315 agreement_period_id_pp:
316 description: Agreement period internal identifier
318 name: agreement_period_id
322 description: Record internal identifier
327 candidate_match_id_pp:
328 description: Internal import record match identifier
330 name: candidate_match_id
334 description: Cash register internal identifier
336 name: cash_register_id
340 description: Cashup internal identifier
346 description: Internal checkout identifier
352 description: City internal identifier
358 description: Internal club identifier
363 eholdings_title_id_pp:
364 description: Title internal identifier
369 eholdings_package_id_pp:
370 description: Package internal identifier
375 eholdings_resource_id_pp:
376 description: Resource internal identifier
388 description: Internal hold identifier
393 import_batch_profile_id_pp:
394 description: Internal profile identifier
396 name: import_batch_profile_id
400 description: Internal import record identifier
402 name: import_record_id
406 description: Internal item identifier
412 description: Job internal identifier
418 description: Internal library identifier
424 description: License internal identifier
430 description: Matching criteria
441 collectionFormat: csv
442 description: Sorting criteria
450 description: Internal order identifier
456 description: "Page number, for paginated object listing"
462 description: Internal patron identifier
468 description: Internal patron identifier
473 description: "Page size, for paginated object listing"
479 description: Query filter sent through request"s body
486 description: Query filter sent as a request header
492 description: Query filter sent as a request parameter
499 collectionFormat: multi
501 description: Quote internal identifier
507 description: Request id header
509 name: x-koha-request-id
513 name: search_filter_id
515 description: Search filter internal identifier
519 description: Item was seen flag
525 description: SMTP server internal identifier
531 description: Internal suggestion identifier
536 transfer_limit_id_pp:
537 description: Internal transfer limit identifier
543 description: Vendor id
553 url: http://www.gnu.org/licenses/gpl.txt
555 name: Koha Development Team
556 url: https://koha-community.org/
560 This API is documented in **OpenAPI format**.
564 The API supports the following authentication mechanisms
566 * HTTP Basic authentication
567 * OAuth2 (client credentials grant)
570 Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
571 by system preferences.
575 The API uses standard HTTP status codes to indicate the success or failure
576 of the API call. The body of the response will be JSON in the following format:
580 "error": "Current settings prevent the passed due date to be applied",
581 "error_code": "invalid_due_date"
585 Note: Some routes might offer additional attributes in their error responses but that"s
586 subject to change and thus not documented.
588 ## Filtering responses
590 The API allows for some advanced response filtering using a JSON based query syntax. The
591 query can be added to the requests:
593 * as a query parameter `q=`
594 * in the request body
595 * in a special header `x-koha-query`
597 For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
598 matches one of the fields as described in the particular endpoints response object.
600 We can refine that with more complex matching clauses by nesting a the clause into the
601 object; `{ "fieldname": { "clause": "value" } }`.
603 Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
605 We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
606 level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
607 "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
608 results with both field1 containing value2 AND field2 containing value2 for example.
610 Additionally, if you are requesting related data be embedded into the response one can query
611 on the related data using dot notation in the field names.
615 The following request would return any patron with firstname "Henry" and lastname "Acevedo";
617 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
619 The following request would return any patron whose lastname begins with "Ace";
621 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
623 The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
625 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
627 The following request embeds the related patron extended attributes data and filters on it.
629 `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" }'`
635 This optional header allows the api consumer to request additional related data
636 to be returned in the api response. It also allows for cross referencing in the
637 queries as described above. It accepts a comma delimited list of relation names.
639 Relations may on occasion also support dot delimited nesting to allow traversal.
643 This optional header should be passed to give your api request a library
644 context; If it is not included in the request, then the request context
645 will default to using your api comsumer"s assigned home library.
647 - description: "Handle two factor authentication flows\n"
649 x-displayName: Two factor authentication
650 - description: "Manage article requests\n"
651 name: article_requests
652 x-displayName: Article requests
653 - description: "Manage baskets for the acquisitions module\n"
655 x-displayName: Baskets
656 - description: "Manage bibliographic records\n"
658 x-displayName: Biblios
659 - description: "Manage cash register cashups\n"
661 x-displayName: Cashups
662 - description: "Manage checkouts\n"
664 x-displayName: Checkouts
665 - description: "Manage circulation rules\n"
666 name: circulation_rules
667 x-displayName: Circulation rules
668 - description: "Manage cities\n"
670 x-displayName: Cities
671 - description: "Manage patron clubs\n"
674 - description: "Manage funds for the acquisitions module\n"
677 - description: "Manage holds\n"
680 - description: "Manage ILL module backends\n"
682 x-displayName: ILL backends
683 - description: "Manage ILL requests\n"
685 x-displayName: ILL requests
686 - description: "Manage import batches\n"
688 x-display-name: Import batches
689 - description: "Manage item groups\n"
691 x-displayName: Item groups
692 - description: "Manage items\n"
695 - description: "Manage jobs\n"
698 - description: "Manage libraries\n"
700 x-displayName: Libraries
701 - description: "Manage macros\n"
703 x-displayName: Macros
704 - description: "Manage acquisition orders\n"
706 x-displayName: Orders
707 - description: "Handle OAuth flows\n"
710 - description: "Manage patrons\n"
712 x-displayName: Patrons
713 - description: "Manage quotes\n"
715 x-displayName: Quotes
716 - description: "Manage return claims\n"
718 x-displayName: Return claims
719 - description: "Manage rotas\n"
722 - description: "Manage SMTP servers configurations\n"
724 x-displayName: SMTP servers
725 - description: "Manage transfer limits\n"
727 x-displayName: Transfer limits
728 - description: "Manage purchase suggestions\n"
730 x-displayName: Purchase suggestions
731 - description: "Manage vendors for the acquisitions module\n"
733 x-displayName: Vendors
734 - description: "Manage batch import profiles\n"
735 name: batch_import_profiles
736 x-displayName: Batch import profiles