Koha/api/v1/swagger/swagger.yaml
Martin Renvoize f7aabc532a
Bug 37018: Clarify operators
This patch clarifies the list of operators both in the validate routine
and in the swagger descrption block where we document this feature for
the end user.

JD amended patch: tidy

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-08-01 17:26:44 +02:00

1279 lines
47 KiB
YAML

---
swagger: "2.0"
basePath: /api/v1
definitions:
account_line:
$ref: ./definitions/account_line.yaml
advancededitormacro:
$ref: ./definitions/advancededitormacro.yaml
allows_renewal:
$ref: ./definitions/allows_renewal.yaml
authorised_value:
$ref: ./definitions/authorised_value.yaml
authorised_value_category:
$ref: ./definitions/authorised_value_category.yaml
identity_provider:
$ref: ./definitions/identity_provider.yaml
identity_provider_domain:
$ref: ./definitions/identity_provider_domain.yaml
basket:
$ref: ./definitions/basket.yaml
booking:
$ref: ./definitions/booking.yaml
bundle_link:
$ref: ./definitions/bundle_link.yaml
cash_register:
$ref: ./definitions/cash_register.yaml
cashup:
$ref: ./definitions/cashup.yaml
checkout:
$ref: ./definitions/checkout.yaml
checkouts:
$ref: ./definitions/checkouts.yaml
checkout_availability:
$ref: ./definitions/checkout_availability.yaml
circ-rule-kind:
$ref: ./definitions/circ-rule-kind.yaml
city:
$ref: ./definitions/city.yaml
credit:
$ref: ./definitions/credit.yaml
debit:
$ref: ./definitions/debit.yaml
desk:
$ref: ./definitions/desk.yaml
edifact_file:
$ref: ./definitions/edifact_file.yaml
erm_config:
$ref: ./definitions/erm_config.yaml
erm_agreement:
$ref: ./definitions/erm_agreement.yaml
erm_counter_file:
$ref: ./definitions/erm_counter_file.yaml
erm_counter_registry:
$ref: ./definitions/erm_counter_registry.yaml
erm_counter_log:
$ref: ./definitions/erm_counter_log.yaml
erm_custom_report:
$ref: ./definitions/erm_custom_report.yaml
erm_default_usage_report:
$ref: ./definitions/erm_default_usage_report.yaml
erm_eholdings_title:
$ref: ./definitions/erm_eholdings_title.yaml
erm_eholdings_package:
$ref: ./definitions/erm_eholdings_package.yaml
erm_eholdings_resource:
$ref: ./definitions/erm_eholdings_resource.yaml
erm_license:
$ref: ./definitions/erm_license.yaml
erm_sushi_service:
$ref: ./definitions/erm_sushi_service.yaml
erm_usage_data_provider:
$ref: ./definitions/erm_usage_data_provider.yaml
erm_usage_database:
$ref: ./definitions/erm_usage_database.yaml
erm_usage_item:
$ref: ./definitions/erm_usage_item.yaml
erm_usage_mus:
$ref: ./definitions/erm_usage_mus.yaml
erm_usage_platform:
$ref: ./definitions/erm_usage_platform.yaml
erm_usage_title:
$ref: ./definitions/erm_usage_title.yaml
erm_usage_yus:
$ref: ./definitions/erm_usage_yus.yaml
error:
$ref: ./definitions/error.yaml
extended_attribute_type:
$ref: ./definitions/extended_attribute_type.yaml
fund:
$ref: ./definitions/fund.yaml
hold:
$ref: ./definitions/hold.yaml
holds:
$ref: ./definitions/holds.yaml
ill_backend:
$ref: ./definitions/ill_backend.yaml
ill_backends:
$ref: ./definitions/ill_backends.yaml
ill_status:
$ref: ./definitions/ill_status.yaml
ill_request:
$ref: ./definitions/ill_request.yaml
ill_batch:
$ref: ./definitions/ill_batch.yaml
ill_batches:
$ref: ./definitions/ill_batches.yaml
ill_batchstatus:
$ref: ./definitions/ill_batchstatus.yaml
ill_batchstatuses:
$ref: ./definitions/ill_batchstatuses.yaml
import_batch_profile:
$ref: ./definitions/import_batch_profile.yaml
import_batch_profiles:
$ref: ./definitions/import_batch_profiles.yaml
import_record_match:
$ref: ./definitions/import_record_match.yaml
record_source:
$ref: ./definitions/record_source.yaml
invoice:
$ref: ./definitions/invoice.yaml
item:
$ref: ./definitions/item.yaml
item_group:
$ref: ./definitions/item_group.yaml
item_type:
$ref: ./definitions/item_type.yaml
job:
$ref: ./definitions/job.yaml
library:
$ref: ./definitions/library.yaml
merge_biblios:
$ref: ./definitions/merge_biblios.yaml
order:
$ref: ./definitions/order.yaml
patron:
$ref: ./definitions/patron.yaml
patron_account_credit:
$ref: ./definitions/patron_account_credit.yaml
patron_balance:
$ref: ./definitions/patron_balance.yaml
patron_category:
$ref: ./definitions/patron_category.yaml
patron_extended_attribute:
$ref: ./definitions/patron_extended_attribute.yaml
preservation_config:
$ref: ./definitions/preservation_config.yaml
preservation_train:
$ref: ./definitions/preservation_train.yaml
preservation_train_item:
$ref: ./definitions/preservation_train_item.yaml
preservation_processing:
$ref: ./definitions/preservation_processing.yaml
quote:
$ref: ./definitions/quote.yaml
recall:
$ref: ./definitions/recall.yaml
recalls:
$ref: ./definitions/recalls.yaml
renewal:
$ref: ./definitions/renewal.yaml
renewals:
$ref: ./definitions/renewals.yaml
return_claim:
$ref: ./definitions/return_claim.yaml
rota:
$ref: ./definitions/rota.yaml
search_filter:
$ref: ./definitions/search_filter.yaml
smtp_server:
$ref: ./definitions/smtp_server.yaml
suggestion:
$ref: ./definitions/suggestion.yaml
ticket:
$ref: ./definitions/ticket.yaml
ticket_update:
$ref: ./definitions/ticket_update.yaml
transfer_limit:
$ref: ./definitions/transfer_limit.yaml
vendor:
$ref: ./definitions/vendor.yaml
vendor_issue:
$ref: ./definitions/vendor_issue.yaml
paths:
/acquisitions/baskets/managers:
$ref: ./paths/acquisitions_baskets.yaml#/~1acquisitions~1baskets~1managers
/acquisitions/edifiles:
$ref: ./paths/acquisitions_edifiles.yaml#/~1acquisitions~1edifiles
/acquisitions/funds:
$ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds
/acquisitions/funds/owners:
$ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1owners
/acquisitions/funds/users:
$ref: ./paths/acquisitions_funds.yaml#/~1acquisitions~1funds~1users
/acquisitions/orders:
$ref: ./paths/acquisitions_orders.yaml#/~1acquisitions~1orders
"/acquisitions/orders/{order_id}":
$ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
/acquisitions/vendors:
$ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
"/acquisitions/vendors/{vendor_id}":
$ref: "./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors~1{vendor_id}"
"/acquisitions/vendors/{vendor_id}/issues":
$ref: "./paths/acquisitions_vendor_issues.yaml#/~1acquisitions~1vendors~1{vendor_id}~1issues"
/advanced_editor/macros:
$ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros
/advanced_editor/macros/shared:
$ref: ./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared
/bookings:
$ref: ./paths/bookings.yaml#/~1bookings
"/bookings/{booking_id}":
$ref: ./paths/bookings.yaml#/~1bookings~1{booking_id}
/search_filters:
$ref: ./paths/search_filters.yaml#/~1search_filters
"/search_filters/{search_filter_id}":
$ref: "./paths/search_filters.yaml#/~1search_filters~1{search_filter_id}"
"/advanced_editor/macros/shared/{advancededitormacro_id}":
$ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1shared~1{advancededitormacro_id}"
"/advanced_editor/macros/{advancededitormacro_id}":
$ref: "./paths/advancededitormacros.yaml#/~1advanced_editor~1macros~1{advancededitormacro_id}"
"/article_requests/{article_request_id}":
$ref: "./paths/article_requests.yaml#/~1article_requests~1{article_request_id}"
/auth/otp/token_delivery:
$ref: "./paths/auth.yaml#/~1auth~1otp~1token_delivery"
"/auth/password/validation":
$ref: "./paths/auth.yaml#/~1auth~1password~1validation"
/auth/two-factor/registration:
$ref: ./paths/auth.yaml#/~1auth~1two-factor~1registration
/auth/two-factor/registration/verification:
$ref: ./paths/auth.yaml#/~1auth~1two-factor~1registration~1verification
/auth/identity_providers:
$ref: ./paths/auth.yaml#/~1auth~1identity_providers
"/auth/identity_providers/{identity_provider_id}":
$ref: ./paths/auth.yaml#/~1auth~1identity_providers~1{identity_provider_id}
"/auth/identity_providers/{identity_provider_id}/domains":
$ref: ./paths/auth.yaml#/~1auth~1identity_providers~1{identity_provider_id}~1domains
"/auth/identity_providers/{identity_provider_id}/domains/{identity_provider_domain_id}":
$ref: ./paths/auth.yaml#/~1auth~1identity_providers~1{identity_provider_id}~1domains~1{identity_provider_domain_id}
/authorised_value_categories:
$ref: ./paths/authorised_value_categories.yaml#/~1authorised_value_categories
"/authorised_value_categories/{authorised_value_category_name}/authorised_values":
$ref: "./paths/authorised_values.yaml#/~1authorised_value_categories~1{authorised_value_category_name}~1authorised_values"
"/authorities":
$ref: paths/authorities.yaml#/~1authorities
"/authorities/{authority_id}":
$ref: "./paths/authorities.yaml#/~1authorities~1{authority_id}"
"/biblios":
$ref: "./paths/biblios.yaml#/~1biblios"
"/biblios/{biblio_id}":
$ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}"
"/biblios/{biblio_id}/bookings":
$ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1bookings"
"/biblios/{biblio_id}/checkouts":
$ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1checkouts"
"/biblios/{biblio_id}/items":
$ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items"
"/biblios/{biblio_id}/items/{item_id}":
$ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1items~1{item_id}"
"/biblios/{biblio_id}/pickup_locations":
$ref: "./paths/biblios.yaml#/~1biblios~1{biblio_id}~1pickup_locations"
"/biblios/{biblio_id}/item_groups":
$ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups"
"/biblios/{biblio_id}/item_groups/{item_group_id}":
$ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}"
"/biblios/{biblio_id}/item_groups/{item_group_id}/items":
$ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items"
"/biblios/{biblio_id}/item_groups/{item_group_id}/items/{item_id}":
$ref: "./paths/biblios_item_groups.yaml#/~1biblios~1{biblio_id}~1item_groups~1{item_group_id}~1items~1{item_id}"
"/biblios/{biblio_id}/merge":
$ref: "./paths/biblios_merge.yaml#/~1biblios~1{biblio_id}~1merge"
"/cash_registers/{cash_register_id}/cashups":
$ref: "./paths/cash_registers.yaml#/~1cash_registers~1{cash_register_id}~1cashups"
"/cashups/{cashup_id}":
$ref: "./paths/cash_registers.yaml#/~1cashups~1{cashup_id}"
/checkouts:
$ref: ./paths/checkouts.yaml#/~1checkouts
"/checkouts/{checkout_id}":
$ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}"
"/checkouts/{checkout_id}/allows_renewal":
$ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1allows_renewal"
"/checkouts/{checkout_id}/renewals":
$ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewals"
"/checkouts/{checkout_id}/renewal":
$ref: "./paths/checkouts.yaml#/~1checkouts~1{checkout_id}~1renewal"
"/checkouts/availability":
$ref: "./paths/checkouts.yaml#/~1checkouts~1availability"
/circulation_rules:
$ref: ./paths/circulation_rules.yaml#/~1circulation_rules
/circulation_rules/kinds:
$ref: ./paths/circulation_rules.yaml#/~1circulation_rules~1kinds
/cities:
$ref: ./paths/cities.yaml#/~1cities
"/cities/{city_id}":
$ref: "./paths/cities.yaml#/~1cities~1{city_id}"
"/clubs/{club_id}/holds":
$ref: "./paths/clubs.yaml#/~1clubs~1{club_id}~1holds"
/config/smtp_servers:
$ref: ./paths/config_smtp_servers.yaml#/~1config~1smtp_servers
"/config/smtp_servers/{smtp_server_id}":
$ref: "./paths/config_smtp_servers.yaml#/~1config~1smtp_servers~1{smtp_server_id}"
"/deleted/biblios":
$ref: "./paths/deleted_biblios.yaml#/~1deleted~1biblios"
"/deleted/biblios/{biblio_id}":
$ref: "./paths/deleted_biblios.yaml#/~1deleted~1biblios~1{biblio_id}"
/erm/config:
$ref: ./paths/erm_config.yaml#/~1erm~1config
/erm/agreements:
$ref: ./paths/erm_agreements.yaml#/~1erm~1agreements
"/erm/agreements/{agreement_id}":
$ref: "./paths/erm_agreements.yaml#/~1erm~1agreements~1{agreement_id}"
"/erm/documents/{document_id}/file/content":
$ref: "./paths/erm_documents.yaml#/~1erm~1documents~1{document_id}~1file~1content"
/erm/counter_files:
$ref: ./paths/erm_counter_files.yaml#/~1erm~1counter_files
"/erm/counter_files/{erm_counter_files_id}":
$ref: "./paths/erm_counter_files.yaml#/~1erm~1counter_files~1{erm_counter_files_id}"
"/erm/counter_files/{erm_counter_files_id}/file/content":
$ref: "./paths/erm_counter_files.yaml#/~1erm~1counter_files~1{erm_counter_files_id}~1file~1content"
/erm/counter_logs:
$ref: ./paths/erm_counter_logs.yaml#/~1erm~1counter_logs
/erm/counter_registry:
$ref: ./paths/erm_counter_registries.yaml#/~1erm~1counter_registry
/erm/default_usage_reports:
$ref: ./paths/erm_default_usage_reports.yaml#/~1erm~1default_usage_reports
"/erm/default_usage_reports/{erm_default_usage_report_id}":
$ref: "./paths/erm_default_usage_reports.yaml#/~1erm~1default_usage_reports~1{erm_default_usage_report_id}"
"/erm/eholdings/{provider}/titles":
$ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles"
/erm/eholdings/local/titles/import:
$ref: ./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1local~1titles~1import
/erm/eholdings/local/titles/import_kbart:
$ref: ./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1local~1titles~1import_kbart
"/erm/eholdings/{provider}/titles/{title_id}":
$ref: "./paths/erm_eholdings_titles.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}"
"/erm/eholdings/{provider}/titles/{title_id}/resources":
$ref: "./paths/erm_eholdings_titles_resources.yaml#/~1erm~1eholdings~1{provider}~1titles~1{title_id}~1resources"
"/erm/eholdings/{provider}/packages":
$ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages"
"/erm/eholdings/{provider}/resources":
$ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources"
"/erm/eholdings/{provider}/resources/{resource_id}":
$ref: "./paths/erm_eholdings_resources.yaml#/~1erm~1eholdings~1{provider}~1resources~1{resource_id}"
"/erm/eholdings/{provider}/packages/{package_id}":
$ref: "./paths/erm_eholdings_packages.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}"
"/erm/eholdings/{provider}/packages/{package_id}/resources":
$ref: "./paths/erm_eholdings_packages_resources.yaml#/~1erm~1eholdings~1{provider}~1packages~1{package_id}~1resources"
"/erm/eUsage/monthly_report/{data_type}":
$ref: "./paths/erm_custom_reports.yaml#/~1erm~1eUsage~1monthly_report~1{data_type}"
"/erm/eUsage/yearly_report/{data_type}":
$ref: "./paths/erm_custom_reports.yaml#/~1erm~1eUsage~1yearly_report~1{data_type}"
"/erm/eUsage/metric_types_report/{data_type}":
$ref: "./paths/erm_custom_reports.yaml#/~1erm~1eUsage~1metric_types_report~1{data_type}"
"/erm/eUsage/provider_rollup_report/{data_type}":
$ref: "./paths/erm_custom_reports.yaml#/~1erm~1eUsage~1provider_rollup_report~1{data_type}"
/erm/licenses:
$ref: ./paths/erm_licenses.yaml#/~1erm~1licenses
"/erm/licenses/{license_id}":
$ref: "./paths/erm_licenses.yaml#/~1erm~1licenses~1{license_id}"
/erm/sushi_service:
$ref: ./paths/erm_sushi_services.yaml#/~1erm~1sushi_service
/erm/usage_data_providers:
$ref: ./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers
"/erm/usage_data_providers/{erm_usage_data_provider_id}":
$ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}"
"/erm/usage_data_providers/{erm_usage_data_provider_id}/process_SUSHI_response":
$ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}~1process_SUSHI_response"
"/erm/usage_data_providers/{erm_usage_data_provider_id}/process_COUNTER_file":
$ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}~1process_COUNTER_file"
"/erm/usage_data_providers/{erm_usage_data_provider_id}/test_connection":
$ref: "./paths/erm_usage_data_providers.yaml#/~1erm~1usage_data_providers~1{erm_usage_data_provider_id}~1test_connection"
/erm/usage_databases:
$ref: ./paths/erm_usage_databases.yaml#/~1erm~1usage_databases
/erm/usage_items:
$ref: ./paths/erm_usage_items.yaml#/~1erm~1usage_items
/erm/usage_platforms:
$ref: ./paths/erm_usage_platforms.yaml#/~1erm~1usage_platforms
/erm/usage_titles:
$ref: ./paths/erm_usage_titles.yaml#/~1erm~1usage_titles
/erm/users:
$ref: ./paths/erm_users.yaml#/~1erm~1users
/extended_attribute_types:
$ref: ./paths/extended_attribute_types.yaml#/~1extended_attribute_types
/holds:
$ref: ./paths/holds.yaml#/~1holds
"/holds/{hold_id}":
$ref: "./paths/holds.yaml#/~1holds~1{hold_id}"
"/holds/{hold_id}/pickup_location":
$ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_location"
"/holds/{hold_id}/pickup_locations":
$ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1pickup_locations"
"/holds/{hold_id}/priority":
$ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1priority"
"/holds/{hold_id}/suspension":
$ref: "./paths/holds.yaml#/~1holds~1{hold_id}~1suspension"
/ill/backends:
$ref: ./paths/ill_backends.yaml#/~1ill~1backends
"/ill/backends/{ill_backend_id}":
$ref: "./paths/ill_backends.yaml#/~1ill~1backends~1{ill_backend_id}"
/ill/requests:
$ref: ./paths/ill_requests.yaml#/~1ill~1requests
/ill/batches:
$ref: ./paths/ill_batches.yaml#/~1ill~1batches
"/ill/batches/{ill_batch_id}":
$ref: "./paths/ill_batches.yaml#/~1ill~1batches~1{ill_batch_id}"
/ill/batchstatuses:
$ref: ./paths/ill_batchstatuses.yaml#/~1ill~1batchstatuses
"/ill/batchstatuses/{ill_batchstatus_code}":
$ref: "./paths/ill_batchstatuses.yaml#/~1ill~1batchstatuses~1{ill_batchstatus_code}"
"/import_batches/{import_batch_id}/records/{import_record_id}/matches/chosen":
$ref: "./paths/import_batches.yaml#/~1import_batches~1{import_batch_id}~1records~1{import_record_id}~1matches~1chosen"
/import_batch_profiles:
$ref: ./paths/import_batch_profiles.yaml#/~1import_batch_profiles
"/import_batch_profiles/{import_batch_profile_id}":
$ref: "./paths/import_batch_profiles.yaml#/~1import_batch_profiles~1{import_batch_profile_id}"
/item_types:
$ref: ./paths/item_types.yaml#/~1item_types
/items:
$ref: ./paths/items.yaml#/~1items
"/items/{item_id}":
$ref: "./paths/items.yaml#/~1items~1{item_id}"
"/items/{item_id}/bookings":
$ref: "./paths/items.yaml#/~1items~1{item_id}~1bookings"
"/items/{item_id}/bundled_items":
$ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items
"/items/{item_id}/bundled_items/{bundled_item_id}":
$ref: ./paths/items.yaml#/~1items~1{item_id}~1bundled_items~1{bundled_item_id}
"/items/{item_id}/pickup_locations":
$ref: "./paths/items.yaml#/~1items~1{item_id}~1pickup_locations"
/jobs:
$ref: ./paths/jobs.yaml#/~1jobs
"/jobs/{job_id}":
$ref: "./paths/jobs.yaml#/~1jobs~1{job_id}"
/libraries:
$ref: ./paths/libraries.yaml#/~1libraries
"/libraries/{library_id}":
$ref: "./paths/libraries.yaml#/~1libraries~1{library_id}"
"/libraries/{library_id}/cash_registers":
$ref: "./paths/libraries.yaml#/~1libraries~1{library_id}~1cash_registers"
"/libraries/{library_id}/desks":
$ref: "./paths/libraries.yaml#/~1libraries~1{library_id}~1desks"
"/oauth/login/{provider_code}/{interface}":
$ref: ./paths/oauth.yaml#/~1oauth~1login~1{provider_code}~1{interface}
/oauth/token:
$ref: ./paths/oauth.yaml#/~1oauth~1token
/patrons:
$ref: ./paths/patrons.yaml#/~1patrons
"/patrons/{patron_id}":
$ref: "./paths/patrons.yaml#/~1patrons~1{patron_id}"
"/patrons/{patron_id}/account":
$ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account"
"/patrons/{patron_id}/account/credits":
$ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1credits"
"/patrons/{patron_id}/account/debits":
$ref: "./paths/patrons_account.yaml#/~1patrons~1{patron_id}~1account~1debits"
"/patrons/{patron_id}/extended_attributes":
$ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes"
"/patrons/{patron_id}/extended_attributes/{extended_attribute_id}":
$ref: "./paths/patrons_extended_attributes.yaml#/~1patrons~1{patron_id}~1extended_attributes~1{extended_attribute_id}"
"/patrons/{patron_id}/holds":
$ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
"/patrons/{patron_id}/checkouts":
$ref: "./paths/patrons_checkouts.yaml#/~1patrons~1{patron_id}~1checkouts"
"/patrons/{patron_id}/password":
$ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
"/patrons/{patron_id}/password/expiration_date":
$ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
"/patrons/{patron_id}/recalls":
$ref: "./paths/patrons_recalls.yaml#/~1patrons~1{patron_id}~1recalls"
/patron_categories:
$ref: ./paths/patron_categories.yaml#/~1patron_categories
/preservation/config:
$ref: ./paths/preservation_config.yaml#/~1preservation~1config
/preservation/trains:
$ref: ./paths/preservation_trains.yaml#/~1preservation~1trains
"/preservation/trains/{train_id}":
$ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}"
"/preservation/trains/{train_id}/items":
$ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items"
"/preservation/trains/{train_id}/items/batch":
$ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items~1batch"
"/preservation/trains/{train_id}/items/{train_item_id}":
$ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items~1{train_item_id}"
"/preservation/trains/{train_id}/items/{train_item_id}/copy":
$ref: "./paths/preservation_trains.yaml#/~1preservation~1trains~1{train_id}~1items~1{train_item_id}~1copy"
/preservation/processings:
$ref: ./paths/preservation_processings.yaml#/~1preservation~1processings
"/preservation/processings/{processing_id}":
$ref: "./paths/preservation_processings.yaml#/~1preservation~1processings~1{processing_id}"
/preservation/waiting-list/items:
$ref: ./paths/preservation_waiting_list.yaml#/~1preservation~1waiting-list~1items
"/preservation/waiting-list/items/{item_id}":
$ref: "./paths/preservation_waiting_list.yaml#/~1preservation~1waiting-list~1items~1{item_id}"
"/public/biblios/{biblio_id}":
$ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
"/public/checkouts/availability":
$ref: ./paths/checkouts.yaml#/~1public~1checkouts~1availability
"/public/items":
$ref: "./paths/items.yaml#/~1public~1items"
"/public/biblios/{biblio_id}/items":
$ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1items"
"/public/biblios/{biblio_id}/ratings":
$ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}~1ratings"
/public/libraries:
$ref: ./paths/libraries.yaml#/~1public~1libraries
"/public/libraries/{library_id}":
$ref: "./paths/libraries.yaml#/~1public~1libraries~1{library_id}"
"/public/oauth/login/{provider_code}/{interface}":
$ref: ./paths/public_oauth.yaml#/~1public~1oauth~1login~1{provider_code}~1{interface}
"/public/patrons/{patron_id}/article_requests/{article_request_id}":
$ref: "./paths/article_requests.yaml#/~1public~1patrons~1{patron_id}~1article_requests~1{article_request_id}"
"/public/patrons/{patron_id}/checkouts":
$ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1checkouts"
"/public/patrons/{patron_id}/guarantors/can_see_charges":
$ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_charges"
"/public/patrons/{patron_id}/guarantors/can_see_checkouts":
$ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1guarantors~1can_see_checkouts"
"/public/patrons/{patron_id}/holds/{hold_id}":
$ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1holds~1{hold_id}"
"/public/patrons/{patron_id}/password":
$ref: "./paths/public_patrons.yaml#/~1public~1patrons~1{patron_id}~1password"
"/public/tickets":
$ref: "./paths/tickets.yaml#/~1public~1tickets"
/quotes:
$ref: ./paths/quotes.yaml#/~1quotes
"/quotes/{quote_id}":
$ref: "./paths/quotes.yaml#/~1quotes~1{quote_id}"
/record_sources:
$ref: ./paths/record_sources.yaml#/~1record_sources
"/record_sources/{record_source_id}":
$ref: ./paths/record_sources.yaml#/~1record_sources~1{record_source_id}
/return_claims:
$ref: ./paths/return_claims.yaml#/~1return_claims
"/return_claims/{claim_id}":
$ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}"
"/return_claims/{claim_id}/notes":
$ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1notes"
"/return_claims/{claim_id}/resolve":
$ref: "./paths/return_claims.yaml#/~1return_claims~1{claim_id}~1resolve"
"/rotas":
$ref: "./paths/rotas.yaml#/~1rotas"
"/rotas/{rota_id}":
$ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}"
"/rotas/{rota_id}/stages/{stage_id}/position":
$ref: "./paths/rotas.yaml#/~1rotas~1{rota_id}~1stages~1{stage_id}~1position"
/suggestions:
$ref: ./paths/suggestions.yaml#/~1suggestions
"/suggestions/{suggestion_id}":
$ref: "./paths/suggestions.yaml#/~1suggestions~1{suggestion_id}"
/suggestions/managers:
$ref: "./paths/suggestions.yaml#/~1suggestions~1managers"
"/tickets":
$ref: "./paths/tickets.yaml#/~1tickets"
"/tickets/{ticket_id}":
$ref: "./paths/tickets.yaml#/~1tickets~1{ticket_id}"
"/tickets/{ticket_id}/updates":
$ref: "./paths/tickets.yaml#/~1tickets~1{ticket_id}~1updates"
/transfer_limits:
$ref: ./paths/transfer_limits.yaml#/~1transfer_limits
/transfer_limits/batch:
$ref: ./paths/transfer_limits.yaml#/~1transfer_limits~1batch
"/transfer_limits/{limit_id}":
$ref: "./paths/transfer_limits.yaml#/~1transfer_limits~1{limit_id}"
parameters:
advancededitormacro_id_pp:
description: Advanced editor macro internal identifier
in: path
name: advancededitormacro_id
required: true
type: integer
agreement_id_pp:
description: Agreement internal identifier
in: path
name: agreement_id
required: true
type: integer
agreement_period_id_pp:
description: Agreement period internal identifier
in: path
name: agreement_period_id
required: true
type: integer
authorised_value_id_pp:
description: Authorised value internal identifier
in: path
name: authorised_value_id
required: true
type: integer
authority_id_pp:
description: Authority identifier
in: path
name: authority_id
required: true
type: integer
authority_type_header:
description: Authority type code. Use when content type is not application/json
name: x-authority-type
in: header
required: false
type: string
booking_id_pp:
description: Booking identifier
in: path
name: booking_id
required: true
type: integer
framework_id_header:
description: Framework id. Use when content type is not application/json
name: x-framework-id
in: header
required: false
type: string
marc_schema_header:
description: March schema. One of MARC21 or UNIMARC
name: x-record-schema
in: header
required: false
type: string
enum:
- MARC21
- UNIMARC
confirm_not_duplicate_header:
description: Confirm the posted element is not a duplicate
name: x-confirm-not-duplicate
in: header
required: false
type: integer
identity_provider_id_pp:
description: Identity provider internal identifier
in: path
name: identity_provider_id
required: true
type: integer
identity_provider_domain_id_pp:
description: Identity provider domain internal identifier
in: path
name: identity_provider_domain_id
required: true
type: integer
biblio_id_pp:
description: Record internal identifier
in: path
name: biblio_id
required: true
type: integer
candidate_match_id_pp:
description: Internal import record match identifier
in: path
name: candidate_match_id
required: true
type: integer
cash_register_id_pp:
description: Cash register internal identifier
in: path
name: cash_register_id
required: true
type: integer
cashup_id_pp:
description: Cashup internal identifier
in: path
name: cashup_id
required: true
type: integer
checkout_id_pp:
description: Internal checkout identifier
in: path
name: checkout_id
required: true
type: integer
city_id_pp:
description: City internal identifier
in: path
name: city_id
required: true
type: integer
club_id_pp:
description: Internal club identifier
in: path
name: club_id
required: true
type: integer
eholdings_title_id_pp:
description: Title internal identifier
in: path
name: title_id
required: true
type: integer
eholdings_package_id_pp:
description: Package internal identifier
in: path
name: package_id
required: true
type: string
eholdings_resource_id_pp:
description: Resource internal identifier
in: path
name: resource_id
required: true
type: string
erm_counter_files_id_pp:
description: ERM counter_files internal identifier
in: path
name: erm_counter_files_id
required: true
type: integer
erm_counter_log_id_pp:
description: ERM counter_log internal identifier
in: path
name: erm_counter_log_id
required: true
type: integer
erm_default_usage_report_id_pp:
description: ERM default_usage_report internal identifier
in: path
name: erm_default_usage_report_id
required: true
type: integer
erm_usage_data_provider_id_pp:
description: ERM usage_data_provider internal identifier
in: path
name: erm_usage_data_provider_id
required: true
type: integer
data_type_pp:
description: ERM custom report data type
in: path
name: data_type
required: true
type: string
fund_id_pp:
description: Fund id
in: path
name: fund_id
required: true
type: integer
hold_id_pp:
description: Internal hold identifier
in: path
name: hold_id
required: true
type: integer
ill_batch_id_pp:
description: Internal ILL batch identifier
in: path
name: ill_batch_id
required: true
type: integer
ill_batchstatus_code_pp:
description: Internal ILL batch status identifier
in: path
name: ill_batchstatus_code
required: true
type: string
import_batch_profile_id_pp:
description: Internal profile identifier
in: path
name: import_batch_profile_id
required: true
type: integer
import_record_id_pp:
description: Internal import record identifier
in: path
name: import_record_id
required: true
type: integer
record_source_id_pp:
description: Internal record source identifier
in: path
name: record_source_id
required: true
type: integer
item_id_pp:
description: Internal item identifier
in: path
name: item_id
required: true
type: integer
item_id_qp:
description: Internal item identifier
in: query
name: item_id
type: integer
job_id_pp:
description: Job internal identifier
in: path
name: job_id
required: true
type: integer
library_id_pp:
description: Internal library identifier
in: path
name: library_id
required: true
type: string
license_id_pp:
description: License internal identifier
in: path
name: license_id
required: true
type: integer
match:
description: Matching criteria
enum:
- contains
- exact
- starts_with
- ends_with
in: query
name: _match
required: false
type: string
order_by:
collectionFormat: csv
description: Sorting criteria
in: query
items:
type: string
name: _order_by
required: false
type: array
order_id_pp:
description: Internal order identifier
in: path
name: order_id
required: true
type: integer
page:
description: "Page number, for paginated object listing"
in: query
name: _page
required: false
type: integer
patron_id_pp:
description: Internal patron identifier
in: path
name: patron_id
required: true
type: integer
patron_id_qp:
description: Internal patron identifier
in: query
name: patron_id
type: integer
per_page:
description: "Page size, for paginated object listing"
in: query
name: _per_page
required: false
type: integer
preservation_processing_id_pp:
description: processing internal identifier
in: path
name: processing_id
required: true
type: integer
preservation_train_id_pp:
description: train internal identifier
in: path
name: train_id
required: true
type: integer
preservation_train_item_id_pp:
description: train item internal identifier
in: path
name: train_item_id
required: true
type: integer
q_body:
description: Query filter sent through request"s body
in: body
name: query
required: false
schema:
type: object
q_param:
description: Query filter sent as a request parameter
in: query
name: q
required: false
type: array
items:
type: string
collectionFormat: multi
quote_id_pp:
description: Quote internal identifier
in: path
name: quote_id
required: true
type: integer
record_source_id_header:
description: Internal record source identifier.
name: x-record-source-id
in: header
required: false
type: string
request_id_header:
description: Request id header
in: header
name: x-koha-request-id
required: false
type: integer
rota_id_pp:
description: Rota internal identifier
in: path
name: rota_id
required: true
type: integer
search_filter_id_pp:
name: search_filter_id
in: path
description: Search filter internal identifier
required: true
type: integer
seen_pp:
description: Item was seen flag
in: query
name: seen
required: false
type: integer
smtp_server_id_pp:
description: SMTP server internal identifier
in: path
name: smtp_server_id
required: true
type: integer
suggestion_id_pp:
description: Internal suggestion identifier
in: path
name: suggestion_id
required: true
type: integer
ticket_id_pp:
description: Internal ticket identifier
in: path
name: ticket_id
required: true
type: integer
transfer_limit_id_pp:
description: Internal transfer limit identifier
in: path
name: limit_id
required: true
type: string
vendor_id_pp:
description: Vendor id
in: path
name: vendor_id
required: true
type: integer
info:
title: Koha REST API
version: "1"
license:
name: "GPL v3,"
url: http://www.gnu.org/licenses/gpl.txt
contact:
name: Koha Development Team
url: https://koha-community.org/
description: |
## Background
The API supports two sets of endpoints, one targetted at library staff and the other at at library users.
Those endpoints under the `/public` path are aimed at delivering functionality tailored to library users and offer
a more restricted set of functions, overrides and data in thier responses for data privacy and library policy
reasons. Many of these endpoints do not require authentication for fetching public data, though an authenticated
session will expose additional options and allow users to see more data where it is part of their own record.
All other endpoints are targetted at the staff interface level and allow for additional functionality and a more
unrestricted view of data. These endpoints, however, have a level of redaction built in for resources that the
api consumer should not have access to. For example, user data for users who do not belong to the same library
or library group of your api user will be reduced to just minimum neccesary for a valid response. Object keys will
be consistent for all responses, but their values may be removed depending on access.
## Authentication
The API supports the following authentication mechanisms
* HTTP Basic authentication
* OAuth2 (client credentials grant)
* Cookie-based
Both _Basic authentication_ and the _OAuth2_ flow, need to be enabled
by system preferences.
## Authorization
The API uses existing user profiles to restrict access to resources based on user permissions and the library the
API user is assigned to. This may result, at times, in resources being returned in a redacted form with all keys
present but sensative values nulled.
We do not yet support OAuth Scopes or the Authorization Code grant flow.
## Errors
The API uses standard HTTP status codes to indicate the success or failure
of the API call. The body of the response will be JSON in the following format:
```
{
"error": "Current settings prevent the passed due date to be applied",
"error_code": "invalid_due_date"
}
```
Note: Some routes might offer additional attributes in their error responses but that"s
subject to change and thus not documented.
## Filtering responses
The API allows for some advanced response filtering using a JSON based query syntax. The
query can be added to the requests:
* as a query parameter `q=`
* in the request body
For simple field equality matches we can use `{ "fieldname": "value" }` where the fieldname
matches one of the fields as described in the particular endpoints response object.
We can refine that with more complex matching clauses by nesting a the clause into the
object; `{ "fieldname": { "clause": "value" } }`.
Available matching clauses include `=`, `!=`, `<`, `>`, `<=`, `>=` and `-not`. We also support `-like`
and `-not_like` string comparisons with `%` used to denote wildcards, thus you can pass
`{ "fieldname": { "-like": "value%" } }` to do a 'starts with' string match for example.
We can filter on multiple fields by adding them to the JSON respresentation. Adding at `HASH`
level will result in an "AND" query, whilst combinding them in an `ARRAY` will result in an
"OR" query: `{ "field1": "value2", "field2": "value2" }` will filter the response to only those
results with both field1 containing value2 AND field2 containing value2 for example.
There is a collection of special operators also available to you, including:
* `-in` - Expects an array of values to perform an OR match against
* `-not_in` - Expects an array of values to perform a NOR match against
* `-between` - Expects two values which the value of the field is expected to fall between
* `-not_between` - Expects two values which the value of the field is expected to fall outside of
* `-ident` - Expects a second field name to match the two field values against
* `-regexp` - Expects a perl compatible regular expression for which the value should match
Logic and nesting is also supported and you may use `-and` and `-or` to change the logic of an ARRAY
or HASH as described above.
Additionally, if you are requesting related data be embedded into the response one can query
on the related data using dot notation in the field names.
### Examples
The following request would return any patron with firstname "Henry" and lastname "Acevedo";
`curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw '{ "surname": "Acevedo", "firstname": "Henry" }'`
The following request would return any patron whose lastname begins with "Ace";
`curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw '{ "surname": { "-like": "Ace%" }'`
The following request would return any patron whose lastname is "Acevedo" OR "Bernardo"
`curl -u koha:koha --request GET "http://127.0.0.1:8081/api/v1/patrons/" --data-raw '{ "surname": [ "Acevedo", "Bernardo" ] }'`
The following request embeds the related patron extended attributes data and filters on it.
`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" }'`
## Special headers
### x-koha-embed
This optional header allows the api consumer to request additional related data
to be returned in the api response. It also allows for cross referencing in the
queries as described above. It accepts a comma delimited list of relation names.
Relations may on occasion also support dot delimited nesting to allow traversal.
### x-koha-library
This optional header should be passed to give your api request a library
context; If it is not included in the request, then the request context
will default to using your api comsumer"s assigned home library.
tags:
- description: "Manage additional fields\n"
name: additional_fields
x-displayName: Additional fields
- description: "Manage article requests\n"
name: article_requests
x-displayName: Article requests
- description: "Manage authorised value categories\n"
name: authorised_value_categories
x-displayName: Authorised value categories
- description: "Manage authorised values\n"
name: authorised_values
x-displayName: Authorised values
- description: "Manage batch import profiles\n"
name: batch_import_profiles
x-displayName: Batch import profiles
- description: "Manage baskets for the acquisitions module\n"
name: baskets
x-displayName: Baskets
- description: "Manage Authority records\n"
name: authorities
x-displayName: Authorities
- description: "Manage bibliographic records\n"
name: biblios
x-displayName: Biblios
- description: "Manage bookings\n"
name: bookings
x-displayName: Bookings
- description: "Manage cash registers\n"
name: cash_registers
x-displayName: Cash registers
- description: "Manage cash register cashups\n"
name: cashups
x-displayName: Cashups
- description: "Manage checkouts\n"
name: checkouts
x-displayName: Checkouts
- description: "Manage circulation desks\n"
name: desks
x-displayName: Circulation desks
- description: "Manage circulation rules\n"
name: circulation_rules
x-displayName: Circulation rules
- description: "Manage cities\n"
name: cities
x-displayName: Cities
- description: "Manage patron clubs\n"
name: clubs
x-displayName: Clubs
- description: "Manage EDI files\n"
name: edi_files
x-displayName: EDI files
- description: "Manage ERM agreements\n"
name: erm_agreements
x-displayName: ERM agreements
- description: "Manage ERM configuration\n"
name: erm_config
x-displayName: ERM configuration
- description: "Manage ERM counter files\n"
name: erm_counter_files
x-displayName: ERM counter files
- description: "Manage ERM counter logs\n"
name: erm_counter_logs
x-displayName: ERM counter logs
- description: "Retrieve counter registry data\n"
name: erm_counter_registry
x-displayName: ERM counter registry
- description: "Manage ERM saved reports\n"
name: erm_default_usage_reports
x-displayName: ERM saved reports
- description: "Manage ERM docuemnts\n"
name: erm_documents
x-displayName: ERM documents
- description: "Manage ERM eHoldings packages\n"
name: erm_eholdings_packages
x-displayName: ERM eHoldings packages
- description: "Manage ERM eHoldings resources\n"
name: erm_eholdings_resources
x-displayName: ERM eHoldings resources
- description: "Manage ERM eHoldings titles\n"
name: erm_eholdings_titles
x-displayName: ERM eHoldings titles
- description: "Manage ERM licences\n"
name: erm_licences
x-displayName: ERM licences
- description: "Retrieve SUSHI service data\n"
name: erm_sushi_service
x-displayName: ERM SUSHI services
- description: "Manage ERM usage data providers\n"
name: erm_usage_data_providers
x-displayName: ERM usage data providers
- description: "Manage ERM usage databases\n"
name: erm_usage_databases
x-displayName: ERM usage databases
- description: "Manage ERM usage items\n"
name: erm_usage_items
x-displayName: ERM usage items
- description: "Manage ERM usage platforms\n"
name: erm_usage_platforms
x-displayName: ERM usage platforms
- description: "Manage ERM usage titles\n"
name: erm_usage_titles
x-displayName: ERM usage titles
- description: "Manage ERM usage reports\n"
name: erm_usage_reports
x-displayName: ERM usage reports
- description: "Manage ERM users\n"
name: erm_users
x-displayName: ERM users
- description: "Manage funds for the acquisitions module\n"
name: funds
x-displayName: Funds
- description: "Manage holds\n"
name: holds
x-displayName: Holds
- description: "Manage identity providers\n"
name: identity_providers
x-displayName: Identity providers
- description: "Manage ILL module backends\n"
name: ill_backends
x-displayName: ILL backends
- description: "Manage ILL module batches\n"
name: ill_batches
x-displayName: ILL batches
- description: "Manage ILL module batch statuses\n"
name: ill_batchstatuses
x-displayName: ILL batch statuses
- description: "Manage ILL requests\n"
name: ill_requests
x-displayName: ILL requests
- description: "Manage import batches\n"
name: import_batches
x-displayName: Import batches
- description: "Manage item groups\n"
name: item_groups
x-displayName: Item groups
- description: "Manage record sources\n"
name: record_sources
x-displayName: Record source
- description: "Manage items\n"
name: items
x-displayName: Items
- description: "Manage item types\n"
name: item_types
x-displayName: Item Types
- description: "Manage jobs\n"
name: jobs
x-displayName: Jobs
- description: "Manage libraries\n"
name: libraries
x-displayName: Libraries
- description: "Manage macros\n"
name: macros
x-displayName: Macros
- description: "Manage acquisition orders\n"
name: orders
x-displayName: Orders
- description: "Handle OAuth flows\n"
name: oauth
x-displayName: OAuth
- description: "Manage patron categories\n"
name: patron_categories
x-displayName: Patron categories
- description: "Manage patrons\n"
name: patrons
x-displayName: Patrons
- description: "Manage preservation tasks\n"
name: preservation
x-displayName: Preservation
- description: "Manage purchase suggestions\n"
name: suggestions
x-displayName: Purchase suggestions
- description: "Manage quotes\n"
name: quotes
x-displayName: Quotes
- description: "Manage recalls\n"
name: recalls
x-displayName: Recalls
- description: "Manage return claims\n"
name: return_claims
x-displayName: Return claims
- description: "Manage stock rotation\n"
name: stockrotation
x-displayName: Rotas
- description: "Manage search filters"
name: search_filters
x-displayName: Search filters
- description: "Manage SMTP servers configurations\n"
name: smtp_servers
x-displayName: SMTP servers
- description: "Manage tickets\n"
name: tickets
x-displayName: Tickets
- description: "Manage transfer limits\n"
name: transfer_limits
x-displayName: Transfer limits
- description: "Handle two factor authentication flows\n"
name: 2fa
x-displayName: Two factor authentication
- description: "Manage vendors for the acquisitions module\n"
name: vendors
x-displayName: Vendors