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