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/error.yaml
28 $ref: ./definitions/fund.yaml
30 $ref: ./definitions/hold.yaml
32 $ref: ./definitions/holds.yaml
34 $ref: ./definitions/ill_backend.yaml
36 $ref: ./definitions/ill_backends.yaml
38 $ref: ./definitions/import_batch_profile.yaml
39 import_batch_profiles:
40 $ref: ./definitions/import_batch_profiles.yaml
42 $ref: ./definitions/import_record_match.yaml
44 $ref: ./definitions/invoice.yaml
46 $ref: ./definitions/item.yaml
48 $ref: ./definitions/item_group.yaml
50 $ref: ./definitions/job.yaml
52 $ref: ./definitions/library.yaml
54 $ref: ./definitions/order.yaml
56 $ref: ./definitions/patron.yaml
57 patron_account_credit:
58 $ref: ./definitions/patron_account_credit.yaml
60 $ref: ./definitions/patron_balance.yaml
61 patron_extended_attribute:
62 $ref: ./definitions/patron_extended_attribute.yaml
64 $ref: ./definitions/quote.yaml
66 $ref: ./definitions/renewal.yaml
68 $ref: ./definitions/renewals.yaml
70 $ref: ./definitions/return_claim.yaml
72 $ref: ./definitions/search_filter.yaml
74 $ref: ./definitions/smtp_server.yaml
76 $ref: ./definitions/suggestion.yaml
78 $ref: ./definitions/transfer_limit.yaml
80 $ref: ./definitions/vendor.yaml
82 /acquisitions/baskets/managers:
83 $ref: paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers
85 $ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds
86 /acquisitions/funds/owners:
87 $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners
88 /acquisitions/funds/users:
89 $ref: paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users
91 $ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders
92 "/acquisitions/orders/{order_id}":
93 $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
94 /acquisitions/vendors:
95 $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
96 "/acquisitions/vendors/{vendor_id}":
97 $ref: "./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors~1{vendor_id}"
98 /advanced_editor/macros:
99 $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros
100 /advanced_editor/macros/shared:
101 $ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared
103 $ref: ./paths/search_filters.yaml#/~1search_filters
104 "/search_filters/{search_filter_id}":
105 $ref: "./paths/search_filters.yaml#/~1search_filters~1{search_filter_id}"
106 "/advanced_editor/macros/shared/{advancededitormacro_id}":
107 $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared~1{advancededitormacro_id}"
108 "/advanced_editor/macros/{advancededitormacro_id}":
109 $ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1{advancededitormacro_id}"
110 "/article_requests/{article_request_id}":
111 $ref: "./paths/article_requests.yaml#/~1article_requests~1{article_request_id}"
112 /auth/otp/token_delivery:
113 $ref: paths/auth.yaml#/~1auth~1otp~1token_delivery
114 /auth/two-factor/registration:
115 $ref: paths/auth.yaml#/~1auth~1two-factor~1registration
116 /auth/two-factor/registration/verification:
117 $ref: paths/auth.yaml#/~1auth~1two-factor~1registration~1verification
118 "/biblios/{biblio_id}":
119 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}"
120 "/biblios/{biblio_id}/checkouts":
121 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1checkouts"
122 "/biblios/{biblio_id}/items":
123 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items"
124 "/biblios/{biblio_id}/pickup_locations":
125 $ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1pickup_locations"
126 "/biblios/{biblio_id}/item_groups":
127 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups"
128 "/biblios/{biblio_id}/item_groups/{item_group_id}":
129 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}"
130 "/biblios/{biblio_id}/item_groups/{item_group_id}/items":
131 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items"
132 "/biblios/{biblio_id}/item_groups/{item_group_id}/items/{item_id}":
133 $ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}"
134 "/cash_registers/{cash_register_id}/cashups":
135 $ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups"
136 "/cashups/{cashup_id}":
137 $ref: "./paths/cash_registers.yaml#/~1cashups~1{cashup_id}"
139 $ref: ./paths/checkouts.yaml#/~1checkouts
140 "/checkouts/{checkout_id}":
141 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}"
142 "/checkouts/{checkout_id}/allows_renewal":
143 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1allows_renewal"
144 "/checkouts/{checkout_id}/renewals":
145 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewals"
146 "/checkouts/{checkout_id}/renewal":
147 $ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewal"
148 /circulation-rules/kinds:
149 $ref: ./paths/circulation-rules.yaml#/~1circulation-rules~1kinds
151 $ref: ./paths/cities.yaml#/~1cities
153 $ref: "./paths/cities.yaml#/~1cities~1{city_id}"
154 "/clubs/{club_id}/holds":
155 $ref: "./paths/clubs.yaml#/~1clubs~1{club_id}~1holds"
156 /config/smtp_servers:
157 $ref: ./paths/config_smtp_servers.yaml#/~1config~1smtp_servers
158 "/config/smtp_servers/{smtp_server_id}":
159 $ref: "./paths/config_smtp_servers.yaml#/~1config~1smtp_servers~1{smtp_server_id}"
161 $ref: ./paths/holds.yaml#/~1holds
163 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
164 "/holds/{hold_id}/pickup_location":
165 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
166 "/holds/{hold_id}/pickup_locations":
167 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
168 "/holds/{hold_id}/priority":
169 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
170 "/holds/{hold_id}/suspension":
171 $ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
173 $ref: ./paths/ill_backends.yaml#/~1ill_backends
174 "/ill_backends/{ill_backend_id}":
175 $ref: "./paths/ill_backends.yaml#/~1ill_backends~1{ill_backend_id}"
177 $ref: ./paths/illrequests.yaml#/~1illrequests
178 "/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
179 $ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
180 /import_batch_profiles:
181 $ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
182 "/import_batch_profiles/{import_batch_profile_id}":
183 $ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
185 $ref: ./paths/items.yaml#/~1items
187 $ref: "./paths/items.yaml#/~1items~1{item_id}"
188 "/items/{item_id}/bundled_items":
189 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
190 "/items/{item_id}/bundled_items/{bundled_item_id}":
191 $ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
192 "/items/{item_id}/pickup_locations":
193 $ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
195 $ref: ./paths/jobs.yaml#/~1jobs
197 $ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
199 $ref: ./paths/libraries.yaml#/~1libraries
200 "/libraries/{library_id}":
201 $ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
203 $ref: ./paths/oauth.yaml#/~1oauth~1token
205 $ref: ./paths/patrons.yaml#/~1patrons
206 "/patrons/{patron_id}":
207 $ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
208 "/patrons/{patron_id}/account":
209 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
210 "/patrons/{patron_id}/account/credits":
211 $ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
212 "/patrons/{patron_id}/extended_attributes":
213 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
214 "/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
215 $ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
216 "/patrons/{patron_id}/holds":
217 $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
218 "/patrons/{patron_id}/password":
219 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
220 "/patrons/{patron_id}/password/expiration_date":
221 $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
222 "/public/biblios/{biblio_id}":
223 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
224 "/public/biblios/{biblio_id}/items":
225 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
226 "/public/biblios/{biblio_id}/ratings":
227 $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
229 $ref: ./paths/libraries.yaml#/~1public~1libraries
230 "/public/libraries/{library_id}":
231 $ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
232 "/public/patrons/{patron_id}/article_requests/{article_request_id}":
233 $ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
234 "/public/patrons/{patron_id}/guarantors/can_see_charges":
235 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
236 "/public/patrons/{patron_id}/guarantors/can_see_checkouts":
237 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
238 "/public/patrons/{patron_id}/password":
239 $ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
241 $ref: ./paths/quotes.yaml#/~1quotes
242 "/quotes/{quote_id}":
243 $ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
245 $ref: ./paths/return_claims.yaml#/~1return_claims
246 "/return_claims/{claim_id}":
247 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
248 "/return_claims/{claim_id}/notes":
249 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
250 "/return_claims/{claim_id}/resolve":
251 $ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
252 "/rotas/{rota_id}/stages/{stage_id}/position":
253 $ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
255 $ref: ./paths/suggestions.yaml#/~1suggestions
256 "/suggestions/{suggestion_id}":
257 $ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
258 /suggestions/managers:
259 $ref: paths/suggestions.yaml#/~1suggestions~1managers
261 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits
262 /transfer_limits/batch:
263 $ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
264 "/transfer_limits/{limit_id}":
265 $ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
267 advancededitormacro_id_pp:
268 description: Advanced editor macro internal identifier
270 name: advancededitormacro_id
274 description: Record internal identifier
279 candidate_match_id_pp:
280 description: Internal import record match identifier
282 name: candidate_match_id
286 description: Cash register internal identifier
288 name: cash_register_id
292 description: Cashup internal identifier
298 description: Internal checkout identifier
304 description: City internal identifier
310 description: Internal club identifier
322 description: Internal hold identifier
327 import_batch_profile_id_pp:
328 description: Internal profile identifier
330 name: import_batch_profile_id
334 description: Internal import record identifier
336 name: import_record_id
340 description: Internal item identifier
346 description: Job internal identifier
352 description: Internal library identifier
358 description: Matching criteria
369 collectionFormat: csv
370 description: Sorting criteria
378 description: Internal order identifier
384 description: "Page number, for paginated object listing"
390 description: Internal patron identifier
396 description: Internal patron identifier
401 description: "Page size, for paginated object listing"
407 description: Query filter sent through request"s body
414 description: Query filter sent as a request header
420 description: Query filter sent as a request parameter
427 collectionFormat: multi
429 description: Quote internal identifier
435 description: Request id header
437 name: x-koha-request-id
441 name: search_filter_id
443 description: Search filter internal identifier
447 description: Item was seen flag
453 description: SMTP server internal identifier
459 description: Internal suggestion identifier
464 transfer_limit_id_pp:
465 description: Internal transfer limit identifier
471 description: Vendor id
481 url: http://www.gnu.org/licenses/gpl.txt
483 name: Koha Development Team
484 url: https://koha-community.org/
488 This API is documented in **OpenAPI format**.
492 The API supports the following authentication mechanisms
494 * HTTP Basic authentication
495 * OAuth2 (client credentials grant)
498 Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
499 by system preferences.
503 The API uses standard HTTP status codes to indicate the success or failure
504 of the API call. The body of the response will be JSON in the following format:
508 "error": "Current settings prevent the passed due date to be applied",
509 "error_code": "invalid_due_date"
513 Note: Some routes might offer additional attributes in their error responses but that"s
514 subject to change and thus not documented.
516 ## Filtering responses
518 The API allows for some advanced response filtering using a JSON based query syntax. The
519 query can be added to the requests:
521 * as a query parameter `q=`
522 * in the request body
523 * in a special header `x-koha-query`
525 For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
526 matches one of the fields as described in the particular endpoints response object.
528 We can refine that with more complex matching clauses by nesting a the clause into the
529 object; `{ "fieldname": { "clause": "value" } }`.
531 Available matching clauses include ">", "<", ">=", "<=", "-like", and "-not_like".
533 We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
534 level will result in an "AND" query, whilst combinding them in an `ARRAY` wilth result in an
535 "OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
536 results with both field1 containing value2 AND field2 containing value2 for example.
538 Additionally, if you are requesting related data be embedded into the response one can query
539 on the related data using dot notation in the field names.
543 The following request would return any patron with firstname "Henry" and lastname "Acevedo";
545 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": "Acevedo", "firstname": "Henry" }"`
547 The following request would return any patron whose lastname begins with "Ace";
549 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": { "-like": "Ace%" }"`
551 The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
553 `curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw "{ "surname": [ "Acevedo", "Bernardo" ] }"`
555 The following request embeds the related patron extended attributes data and filters on it.
557 `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" }'`
563 This optional header allows the api consumer to request additional related data
564 to be returned in the api response. It also allows for cross referencing in the
565 queries as described above. It accepts a comma delimited list of relation names.
567 Relations may on occasion also support dot delimited nesting to allow traversal.
571 This optional header should be passed to give your api request a library
572 context; If it is not included in the request, then the request context
573 will default to using your api comsumer"s assigned home library.
575 - description: "Handle two factor authentication flows\n"
577 x-displayName: Two factor authentication
578 - description: "Manage article requests\n"
579 name: article_requests
580 x-displayName: Article requests
581 - description: "Manage baskets for the acquisitions module\n"
583 x-displayName: Baskets
584 - description: "Manage bibliographic records\n"
586 x-displayName: Biblios
587 - description: "Manage cash register cashups\n"
589 x-displayName: Cashups
590 - description: "Manage checkouts\n"
592 x-displayName: Checkouts
593 - description: "Manage circulation rules\n"
594 name: circulation_rules
595 x-displayName: Circulation rules
596 - description: "Manage cities\n"
598 x-displayName: Cities
599 - description: "Manage patron clubs\n"
602 - description: "Manage funds for the acquisitions module\n"
605 - description: "Manage holds\n"
608 - description: "Manage ILL module backends\n"
610 x-displayName: ILL backends
611 - description: "Manage ILL requests\n"
613 x-displayName: ILL requests
614 - description: "Manage import batches\n"
616 x-display-name: Import batches
617 - description: "Manage item groups\n"
619 x-displayName: Item groups
620 - description: "Manage items\n"
623 - description: "Manage jobs\n"
626 - description: "Manage libraries\n"
628 x-displayName: Libraries
629 - description: "Manage macros\n"
631 x-displayName: Macros
632 - description: "Manage acquisition orders\n"
634 x-displayName: Orders
635 - description: "Handle OAuth flows\n"
638 - description: "Manage patrons\n"
640 x-displayName: Patrons
641 - description: "Manage quotes\n"
643 x-displayName: Quotes
644 - description: "Manage return claims\n"
646 x-displayName: Return claims
647 - description: "Manage rotas\n"
650 - description: "Manage SMTP servers configurations\n"
652 x-displayName: SMTP servers
653 - description: "Manage transfer limits\n"
655 x-displayName: Transfer limits
656 - description: "Manage purchase suggestions\n"
658 x-displayName: Purchase suggestions
659 - description: "Manage vendors for the acquisitions module\n"
661 x-displayName: Vendors
662 - description: "Manage batch import profiles\n"
663 name: batch_import_profiles
664 x-displayName: Batch import profiles