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_license.yaml
30 $ref: ./definitions/error.yaml
32 $ref: ./definitions/fund.yaml
34 $ref: ./definitions/hold.yaml
36 $ref: ./definitions/holds.yaml
38 $ref: ./definitions/ill_backend.yaml
40 $ref: ./definitions/ill_backends.yaml
42 $ref: ./definitions/import_batch_profile.yaml
43 import_batch_profiles:
44 $ref: ./definitions/import_batch_profiles.yaml
46 $ref: ./definitions/import_record_match.yaml
48 $ref: ./definitions/invoice.yaml
50 $ref: ./definitions/item.yaml
52 $ref: ./definitions/item_group.yaml
54 $ref: ./definitions/job.yaml
56 $ref: ./definitions/library.yaml
58 $ref: ./definitions/order.yaml
60 $ref: ./definitions/patron.yaml
61 patron_account_credit:
62 $ref: ./definitions/patron_account_credit.yaml
64 $ref: ./definitions/patron_balance.yaml
65 patron_extended_attribute:
66 $ref: ./definitions/patron_extended_attribute.yaml
68 $ref: ./definitions/quote.yaml
70 $ref: ./definitions/renewal.yaml
72 $ref: ./definitions/renewals.yaml
74 $ref: ./definitions/return_claim.yaml
76 $ref: ./definitions/search_filter.yaml
78 $ref: ./definitions/smtp_server.yaml
80 $ref: ./definitions/suggestion.yaml
82 $ref: ./definitions/transfer_limit.yaml
84 $ref: ./definitions/vendor.yaml
86 /acquisitions/baskets/managers:
87 $ref: paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers
89 $ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds
90 /acquisitions/funds/owners:
91 $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners
92 /acquisitions/funds/users:
93 $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users
95 $ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders
96 "/acquisitions/orders/{order_id}":
97 $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
98 /acquisitions/vendors:
99 $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
100 "/acquisitions/vendors/{vendor_id}":
101 $ref: "./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors~1{vendor_id}"
102 /advanced_editor/macros:
103 $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros
104 /advanced_editor/macros/shared:
105 $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared
107 $ref: ./paths/search_filters.yaml#/~1search_filters
108 "/search_filters/{search_filter_id}":
109 $ref: "./paths/search_filters.yaml#/~1search_filters~1{search_filter_id}"
110 "/advanced_editor/macros/shared/{advancededitormacro_id}":
111 $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared~1{advancededitormacro_id}"
112 "/advanced_editor/macros/{advancededitormacro_id}":
113 $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1{advancededitormacro_id}"
114 "/article_requests/{article_request_id}":
115 $ref: "./paths/article_requests.yaml#/~1article_requests~1{article_request_id}"
116 /auth/otp/token_delivery:
117 $ref: paths/auth.yaml#/~1auth~1otp~1token_delivery
118 /auth/two-factor/registration:
119 $ref: paths/auth.yaml#/~1auth~1two-factor~1registration
120 /auth/two-factor/registration/verification:
121 $ref: paths/auth.yaml#/~1auth~1two-factor~1registration~1verification
122 "/biblios/{biblio_id}":
123 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}"
124 "/biblios/{biblio_id}/checkouts":
125 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1checkouts"
126 "/biblios/{biblio_id}/items":
127 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items"
128 "/biblios/{biblio_id}/pickup_locations":
129 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1pickup_locations"
130 "/biblios/{biblio_id}/item_groups":
131 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups"
132 "/biblios/{biblio_id}/item_groups/{item_group_id}":
133 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}"
134 "/biblios/{biblio_id}/item_groups/{item_group_id}/items":
135 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items"
136 "/biblios/{biblio_id}/item_groups/{item_group_id}/items/{item_id}":
137 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}"
138 "/cash_registers/{cash_register_id}/cashups":
139 $ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups"
140 "/cashups/{cashup_id}":
141 $ref: "./paths/cash_registers.yaml#/~1cashups~1{cashup_id}"
143 $ref: ./paths/checkouts.yaml#/~1checkouts
144 "/checkouts/{checkout_id}":
145 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}"
146 "/checkouts/{checkout_id}/allows_renewal":
147 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1allows_renewal"
148 "/checkouts/{checkout_id}/renewals":
149 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewals"
150 "/checkouts/{checkout_id}/renewal":
151 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewal"
152 /circulation-rules/kinds:
153 $ref: ./paths/circulation-rules.yaml#/~1circulation-rules~1kinds
155 $ref: ./paths/cities.yaml#/~1cities
157 $ref: "./paths/cities.yaml#/~1cities~1{city_id}"
158 "/clubs/{club_id}/holds":
159 $ref: "./paths/clubs.yaml#/~1clubs~1{club_id}~1holds"
160 /config/smtp_servers:
161 $ref: ./paths/config_smtp_servers.yaml#/~1config~1smtp_servers
162 "/config/smtp_servers/{smtp_server_id}":
163 $ref: "./paths/config_smtp_servers.yaml#/~1config~1smtp_servers~1{smtp_server_id}"
165 $ref: ./paths/erm_agreements.yaml#/~1erm~1agreements
166 "/erm/agreements/{agreement_id}":
167 $ref: "./paths/erm_agreements.yaml#/~1erm~1agreements~1{agreement_id}"
169 $ref: ./paths/erm_licenses.yaml#/~1erm~1licenses
170 "/erm/licenses/{license_id}":
171 $ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}"
173 $ref: ./paths/erm_users.yaml#/~1erm~1users
175 $ref: ./paths/holds.yaml#/~1holds
177 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
178 "/holds/{hold_id}/pickup_location":
179 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
180 "/holds/{hold_id}/pickup_locations":
181 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
182 "/holds/{hold_id}/priority":
183 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
184 "/holds/{hold_id}/suspension":
185 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
187 $ref: ./paths/ill_backends.yaml#/~1ill_backends
188 "/ill_backends/{ill_backend_id}":
189 $ref: "./paths/ill_backends.yaml#/~1ill_backends~1{ill_backend_id}"
191 $ref: ./paths/illrequests.yaml#/~1illrequests
192 "/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
193 $ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
194 /import_batch_profiles:
195 $ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
196 "/import_batch_profiles/{import_batch_profile_id}":
197 $ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
199 $ref: ./paths/items.yaml#/~1items
201 $ref: "./paths/items.yaml#/~1items~1{item_id}"
202 "/items/{item_id}/bundled_items":
203 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
204 "/items/{item_id}/bundled_items/{bundled_item_id}":
205 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
206 "/items/{item_id}/pickup_locations":
207 $ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
209 $ref: ./paths/jobs.yaml#/~1jobs
211 $ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
213 $ref: ./paths/libraries.yaml#/~1libraries
214 "/libraries/{library_id}":
215 $ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
217 $ref: ./paths/oauth.yaml#/~1oauth~1token
219 $ref: ./paths/patrons.yaml#/~1patrons
220 "/patrons/{patron_id}":
221 $ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
222 "/patrons/{patron_id}/account":
223 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
224 "/patrons/{patron_id}/account/credits":
225 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
226 "/patrons/{patron_id}/extended_attributes":
227 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
228 "/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
229 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
230 "/patrons/{patron_id}/holds":
231 $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
232 "/patrons/{patron_id}/password":
233 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
234 "/patrons/{patron_id}/password/expiration_date":
235 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
236 "/public/biblios/{biblio_id}":
237 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
238 "/public/biblios/{biblio_id}/items":
239 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
240 "/public/biblios/{biblio_id}/ratings":
241 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
243 $ref: ./paths/libraries.yaml#/~1public~1libraries
244 "/public/libraries/{library_id}":
245 $ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
246 "/public/patrons/{patron_id}/article_requests/{article_request_id}":
247 $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
248 "/public/patrons/{patron_id}/guarantors/can_see_charges":
249 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
250 "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
251 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
252 "/public/patrons/{patron_id}/password":
253 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
255 $ref: ./paths/quotes.yaml#/~1quotes
256 "/quotes/{quote_id}":
257 $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
259 $ref: ./paths/return_claims.yaml#/~1return_claims
260 "/return_claims/{claim_id}":
261 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
262 "/return_claims/{claim_id}/notes":
263 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
264 "/return_claims/{claim_id}/resolve":
265 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
266 "/rotas/{rota_id}/stages/{stage_id}/position":
267 $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
269 $ref: ./paths/suggestions.yaml#/~1suggestions
270 "/suggestions/{suggestion_id}":
271 $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
272 /suggestions/managers:
273 $ref: paths/suggestions.yaml#/~1suggestions~1managers
275 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
276 /transfer_limits/batch:
277 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
278 "/transfer_limits/{limit_id}":
279 $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
281 advancededitormacro_id_pp:
282 description: Advanced editor macro internal identifier
284 name: advancededitormacro_id
288 description: Agreement internal identifier
293 agreement_period_id_pp:
294 description: Agreement period internal identifier
296 name: agreement_period_id
300 description: Record internal identifier
305 candidate_match_id_pp:
306 description: Internal import record match identifier
308 name: candidate_match_id
312 description: Cash register internal identifier
314 name: cash_register_id
318 description: Cashup internal identifier
324 description: Internal checkout identifier
330 description: City internal identifier
336 description: Internal club identifier
348 description: Internal hold identifier
353 import_batch_profile_id_pp:
354 description: Internal profile identifier
356 name: import_batch_profile_id
360 description: Internal import record identifier
362 name: import_record_id
366 description: Internal item identifier
372 description: Job internal identifier
378 description: Internal library identifier
384 description: License internal identifier
390 description: Matching criteria
401 collectionFormat: csv
402 description: Sorting criteria
410 description: Internal order identifier
416 description: "Page number, for paginated object listing"
422 description: Internal patron identifier
428 description: Internal patron identifier
433 description: "Page size, for paginated object listing"
439 description: Query filter sent through request"s body
446 description: Query filter sent as a request header
452 description: Query filter sent as a request parameter
459 collectionFormat: multi
461 description: Quote internal identifier
467 description: Request id header
469 name: x-koha-request-id
473 name: search_filter_id
475 description: Search filter internal identifier
479 description: Item was seen flag
485 description: SMTP server internal identifier
491 description: Internal suggestion identifier
496 transfer_limit_id_pp:
497 description: Internal transfer limit identifier
503 description: Vendor id
513 url: http://www.gnu.org/licenses/gpl.txt
515 name: Koha Development Team
516 url: https://koha-community.org/
520 This API is documented in **OpenAPI format**.
524 The API supports the following authentication mechanisms
526 * HTTP Basic authentication
527 * OAuth2 (client credentials grant)
530 Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
531 by system preferences.
535 The API uses standard HTTP status codes to indicate the success or failure
536 of the API call. The body of the response will be JSON in the following format:
540 "error": "Current settings prevent the passed due date to be applied",
541 "error_code": "invalid_due_date"
545 Note: Some routes might offer additional attributes in their error responses but that"s
546 subject to change and thus not documented.
548 ## Filtering responses
550 The API allows for some advanced response filtering using a JSON based query syntax. The
551 query can be added to the requests:
553 * as a query parameter `q=`
554 * in the request body
555 * in a special header `x-koha-query`
557 For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
558 matches one of the fields as described in the particular endpoints response object.
560 We can refine that with more complex matching clauses by nesting a the clause into the
561 object; `{ "fieldname": { "clause": "value" } }`.
563 Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
565 We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
566 level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
567 "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
568 results with both field1 containing value2 AND field2 containing value2 for example.
570 Additionally, if you are requesting related data be embedded into the response one can query
571 on the related data using dot notation in the field names.
575 The following request would return any patron with firstname "Henry" and lastname "Acevedo";
577 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
579 The following request would return any patron whose lastname begins with "Ace";
581 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
583 The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
585 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
587 The following request embeds the related patron extended attributes data and filters on it.
589 `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" }'`
595 This optional header allows the api consumer to request additional related data
596 to be returned in the api response. It also allows for cross referencing in the
597 queries as described above. It accepts a comma delimited list of relation names.
599 Relations may on occasion also support dot delimited nesting to allow traversal.
603 This optional header should be passed to give your api request a library
604 context; If it is not included in the request, then the request context
605 will default to using your api comsumer"s assigned home library.
607 - description: "Handle two factor authentication flows\n"
609 x-displayName: Two factor authentication
610 - description: "Manage article requests\n"
611 name: article_requests
612 x-displayName: Article requests
613 - description: "Manage baskets for the acquisitions module\n"
615 x-displayName: Baskets
616 - description: "Manage bibliographic records\n"
618 x-displayName: Biblios
619 - description: "Manage cash register cashups\n"
621 x-displayName: Cashups
622 - description: "Manage checkouts\n"
624 x-displayName: Checkouts
625 - description: "Manage circulation rules\n"
626 name: circulation_rules
627 x-displayName: Circulation rules
628 - description: "Manage cities\n"
630 x-displayName: Cities
631 - description: "Manage patron clubs\n"
634 - description: "Manage funds for the acquisitions module\n"
637 - description: "Manage holds\n"
640 - description: "Manage ILL module backends\n"
642 x-displayName: ILL backends
643 - description: "Manage ILL requests\n"
645 x-displayName: ILL requests
646 - description: "Manage import batches\n"
648 x-display-name: Import batches
649 - description: "Manage item groups\n"
651 x-displayName: Item groups
652 - description: "Manage items\n"
655 - description: "Manage jobs\n"
658 - description: "Manage libraries\n"
660 x-displayName: Libraries
661 - description: "Manage macros\n"
663 x-displayName: Macros
664 - description: "Manage acquisition orders\n"
666 x-displayName: Orders
667 - description: "Handle OAuth flows\n"
670 - description: "Manage patrons\n"
672 x-displayName: Patrons
673 - description: "Manage quotes\n"
675 x-displayName: Quotes
676 - description: "Manage return claims\n"
678 x-displayName: Return claims
679 - description: "Manage rotas\n"
682 - description: "Manage SMTP servers configurations\n"
684 x-displayName: SMTP servers
685 - description: "Manage transfer limits\n"
687 x-displayName: Transfer limits
688 - description: "Manage purchase suggestions\n"
690 x-displayName: Purchase suggestions
691 - description: "Manage vendors for the acquisitions module\n"
693 x-displayName: Vendors
694 - description: "Manage batch import profiles\n"
695 name: batch_import_profiles
696 x-displayName: Batch import profiles