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/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/patrons/{patron_id}/article_requests/{article_request_id}":
273 $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
274 "/public/patrons/{patron_id}/guarantors/can_see_charges":
275 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
276 "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
277 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
278 "/public/patrons/{patron_id}/password":
279 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
281 $ref: ./paths/quotes.yaml#/~1quotes
282 "/quotes/{quote_id}":
283 $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
285 $ref: ./paths/return_claims.yaml#/~1return_claims
286 "/return_claims/{claim_id}":
287 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
288 "/return_claims/{claim_id}/notes":
289 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
290 "/return_claims/{claim_id}/resolve":
291 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
292 "/rotas/{rota_id}/stages/{stage_id}/position":
293 $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
295 $ref: ./paths/suggestions.yaml#/~1suggestions
296 "/suggestions/{suggestion_id}":
297 $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
298 /suggestions/managers:
299 $ref: paths/suggestions.yaml#/~1suggestions~1managers
301 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
302 /transfer_limits/batch:
303 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
304 "/transfer_limits/{limit_id}":
305 $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
307 advancededitormacro_id_pp:
308 description: Advanced editor macro internal identifier
310 name: advancededitormacro_id
314 description: Agreement internal identifier
319 agreement_period_id_pp:
320 description: Agreement period internal identifier
322 name: agreement_period_id
326 description: Record internal identifier
331 candidate_match_id_pp:
332 description: Internal import record match identifier
334 name: candidate_match_id
338 description: Cash register internal identifier
340 name: cash_register_id
344 description: Cashup internal identifier
350 description: Internal checkout identifier
356 description: City internal identifier
362 description: Internal club identifier
367 eholdings_title_id_pp:
368 description: Title internal identifier
373 eholdings_package_id_pp:
374 description: Package internal identifier
379 eholdings_resource_id_pp:
380 description: Resource internal identifier
392 description: Internal hold identifier
397 import_batch_profile_id_pp:
398 description: Internal profile identifier
400 name: import_batch_profile_id
404 description: Internal import record identifier
406 name: import_record_id
410 description: Internal item identifier
416 description: Job internal identifier
422 description: Internal library identifier
428 description: License internal identifier
434 description: Matching criteria
445 collectionFormat: csv
446 description: Sorting criteria
454 description: Internal order identifier
460 description: "Page number, for paginated object listing"
466 description: Internal patron identifier
472 description: Internal patron identifier
477 description: "Page size, for paginated object listing"
483 description: Query filter sent through request"s body
490 description: Query filter sent as a request header
496 description: Query filter sent as a request parameter
503 collectionFormat: multi
505 description: Quote internal identifier
511 description: Request id header
513 name: x-koha-request-id
517 name: search_filter_id
519 description: Search filter internal identifier
523 description: Item was seen flag
529 description: SMTP server internal identifier
535 description: Internal suggestion identifier
540 transfer_limit_id_pp:
541 description: Internal transfer limit identifier
547 description: Vendor id
557 url: http://www.gnu.org/licenses/gpl.txt
559 name: Koha Development Team
560 url: https://koha-community.org/
564 This API is documented in **OpenAPI format**.
568 The API supports the following authentication mechanisms
570 * HTTP Basic authentication
571 * OAuth2 (client credentials grant)
574 Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
575 by system preferences.
579 The API uses standard HTTP status codes to indicate the success or failure
580 of the API call. The body of the response will be JSON in the following format:
584 "error": "Current settings prevent the passed due date to be applied",
585 "error_code": "invalid_due_date"
589 Note: Some routes might offer additional attributes in their error responses but that"s
590 subject to change and thus not documented.
592 ## Filtering responses
594 The API allows for some advanced response filtering using a JSON based query syntax. The
595 query can be added to the requests:
597 * as a query parameter `q=`
598 * in the request body
599 * in a special header `x-koha-query`
601 For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
602 matches one of the fields as described in the particular endpoints response object.
604 We can refine that with more complex matching clauses by nesting a the clause into the
605 object; `{ "fieldname": { "clause": "value" } }`.
607 Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
609 We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
610 level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
611 "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
612 results with both field1 containing value2 AND field2 containing value2 for example.
614 Additionally, if you are requesting related data be embedded into the response one can query
615 on the related data using dot notation in the field names.
619 The following request would return any patron with firstname "Henry" and lastname "Acevedo";
621 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
623 The following request would return any patron whose lastname begins with "Ace";
625 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
627 The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
629 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
631 The following request embeds the related patron extended attributes data and filters on it.
633 `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" }'`
639 This optional header allows the api consumer to request additional related data
640 to be returned in the api response. It also allows for cross referencing in the
641 queries as described above. It accepts a comma delimited list of relation names.
643 Relations may on occasion also support dot delimited nesting to allow traversal.
647 This optional header should be passed to give your api request a library
648 context; If it is not included in the request, then the request context
649 will default to using your api comsumer"s assigned home library.
651 - description: "Handle two factor authentication flows\n"
653 x-displayName: Two factor authentication
654 - description: "Manage article requests\n"
655 name: article_requests
656 x-displayName: Article requests
657 - description: "Manage baskets for the acquisitions module\n"
659 x-displayName: Baskets
660 - description: "Manage bibliographic records\n"
662 x-displayName: Biblios
663 - description: "Manage cash register cashups\n"
665 x-displayName: Cashups
666 - description: "Manage checkouts\n"
668 x-displayName: Checkouts
669 - description: "Manage circulation rules\n"
670 name: circulation_rules
671 x-displayName: Circulation rules
672 - description: "Manage cities\n"
674 x-displayName: Cities
675 - description: "Manage patron clubs\n"
678 - description: "Manage funds for the acquisitions module\n"
681 - description: "Manage holds\n"
684 - description: "Manage ILL module backends\n"
686 x-displayName: ILL backends
687 - description: "Manage ILL requests\n"
689 x-displayName: ILL requests
690 - description: "Manage import batches\n"
692 x-display-name: Import batches
693 - description: "Manage item groups\n"
695 x-displayName: Item groups
696 - description: "Manage items\n"
699 - description: "Manage jobs\n"
702 - description: "Manage libraries\n"
704 x-displayName: Libraries
705 - description: "Manage macros\n"
707 x-displayName: Macros
708 - description: "Manage acquisition orders\n"
710 x-displayName: Orders
711 - description: "Handle OAuth flows\n"
714 - description: "Manage patrons\n"
716 x-displayName: Patrons
717 - description: "Manage quotes\n"
719 x-displayName: Quotes
720 - description: "Manage return claims\n"
722 x-displayName: Return claims
723 - description: "Manage rotas\n"
726 - description: "Manage SMTP servers configurations\n"
728 x-displayName: SMTP servers
729 - description: "Manage transfer limits\n"
731 x-displayName: Transfer limits
732 - description: "Manage purchase suggestions\n"
734 x-displayName: Purchase suggestions
735 - description: "Manage vendors for the acquisitions module\n"
737 x-displayName: Vendors
738 - description: "Manage batch import profiles\n"
739 name: batch_import_profiles
740 x-displayName: Batch import profiles