24.05 23.11 23.05 22.11 22.05 21.11 21.05 20.11 20.05 19.11 Development

Koha REST API (1)

Download OpenAPI specification:Download

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.

Article requests

Manage article requests

Cancel article requests

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
path Parameters
article_request_id
required
integer

Article request identifier

query Parameters
cancellation_reason
string

Article request cancellation reason

notes
string

Article request custom cancellation reason

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

Cancel patron's article requests

koha-authorization: {"allow-owner":true}
path Parameters
patron_id
required
integer

Internal patron identifier

article_request_id
required
integer

Article request identifier

query Parameters
cancellation_reason
string

Article request cancellation reason

notes
string

Article request custom cancellation reason

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

Authorised value categories

Manage authorised value categories

List authorised value categories

koha-authorization: {"permissions":{"catalogue":1}}
query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-embed
Array of strings
Items Value: "authorised_values"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Authorised values

Manage authorised values

List authorised values for a given category

koha-authorization: {"permissions":{"catalogue":1}}
path Parameters
authorised_value_category_name
required
string

category name

query Parameters
authorised_value_id
integer

Case insensitive search on authorised value id

category_name
string

Case insensitive search on authorised value category name

value
string

Case insensitive search on value

description
string

Case insensitive search on description

opac_description
string

Case insensitive search on opac description

image_url
string

Case insensitive search on image url

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Batch import profiles

Manage batch import profiles

List batch import profiles

koha-authorization: {"permissions":{"tools":"stage_marc_import"}}
query Parameters
name
string

Search on profile's name

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Add batch import profile

koha-authorization: {"permissions":{"tools":"stage_marc_import"}}
Request Body schema: application/json
required

A JSON object containing a import batch profile

name
string

name of this profile

matcher_id
integer or null

the id of the match rule used (matchpoints.matcher_id)

template_id
integer or null

the id of the marc modification template

overlay_action
string or null

how to handle duplicate records

nomatch_action
string or null

how to handle records where no match is found

item_action
string or null

what to do with item records

parse_items
boolean or null

should items be parsed

record_type
string or null

type of record in the batch

encoding
string or null

file encoding

format
string or null

marc format

comments
string or null

any comments added when the file was uploaded

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "matcher_id": 0,
  • "template_id": 0,
  • "overlay_action": "string",
  • "nomatch_action": "string",
  • "item_action": "string",
  • "parse_items": true,
  • "record_type": "string",
  • "encoding": "string",
  • "format": "string",
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "profile_id": 0,
  • "name": "string",
  • "matcher_id": 0,
  • "template_id": 0,
  • "overlay_action": "string",
  • "nomatch_action": "string",
  • "item_action": "string",
  • "parse_items": true,
  • "record_type": "string",
  • "encoding": "string",
  • "format": "string",
  • "comments": "string"
}

Update batch import profile

koha-authorization: {"permissions":{"tools":"stage_marc_import"}}
path Parameters
import_batch_profile_id
required
integer

Internal profile identifier

Request Body schema: application/json
required

A JSON object containing a import batch profile

name
string

name of this profile

matcher_id
integer or null

the id of the match rule used (matchpoints.matcher_id)

template_id
integer or null

the id of the marc modification template

overlay_action
string or null

how to handle duplicate records

nomatch_action
string or null

how to handle records where no match is found

item_action
string or null

what to do with item records

parse_items
boolean or null

should items be parsed

record_type
string or null

type of record in the batch

encoding
string or null

file encoding

format
string or null

marc format

comments
string or null

any comments added when the file was uploaded

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "matcher_id": 0,
  • "template_id": 0,
  • "overlay_action": "string",
  • "nomatch_action": "string",
  • "item_action": "string",
  • "parse_items": true,
  • "record_type": "string",
  • "encoding": "string",
  • "format": "string",
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "profile_id": 0,
  • "name": "string",
  • "matcher_id": 0,
  • "template_id": 0,
  • "overlay_action": "string",
  • "nomatch_action": "string",
  • "item_action": "string",
  • "parse_items": true,
  • "record_type": "string",
  • "encoding": "string",
  • "format": "string",
  • "comments": "string"
}

Delete batch import profile

koha-authorization: {"permissions":{"tools":"stage_marc_import"}}
path Parameters
import_batch_profile_id
required
integer

Internal profile identifier

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

Baskets

Manage baskets for the acquisitions module

List possibe managers for baskets

This resource returns a list of patron allowed to be a manager for baskets

koha-authorization: {"permissions":{"acquisition":"order_manage"}}
query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-embed
Array of strings
Items Value: "extended_attributes"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Authorities

Manage Authority records

List authorities

koha-authorization: {"permissions":{"catalogue":"1"}}
query Parameters
_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
{
  • "error": "string",
  • "error_code": "string"
}

Add authority

Add an authority record to Koha. An optional x-authority-type may be passed to specify the cataloguing framework to be used (instead of the default).

The request body is expected to contain a MARC record in the format specified in the Content-type header you pass. Possible values for this header and the corresponding record formats expected are listed below:

  • application/marcxml+xml: MARCXML
  • application/marc-in-json: MARC-in-JSON
  • application/marc: Raw USMARC binary data
koha-authorization: {"permissions":{"editauthorities":"1"}}
header Parameters
x-authority-type
string

Authority type code. Use when content type is not application/json

x-koha-override
Array of strings
Items Enum: "any" "duplicate"

Overrides list sent as a request header

Responses

Get authority

koha-authorization: {"permissions":{"catalogue":"1"}}
path Parameters
authority_id
required
integer

Authority identifier

Responses

Response samples

Content type
{
  • "error": "string",
  • "error_code": "string"
}

Delete authority

koha-authorization: {"permissions":{"editauthorities":"1"}}
path Parameters
authority_id
required
integer

Authority identifier

Responses

Response samples

Content type
application/json
"string"

Update authority

koha-authorization: {"permissions":{"editauthorities":"1"}}
path Parameters
authority_id
required
integer

Authority identifier

header Parameters
x-authority-type
string

Authority type code. Use when content type is not application/json

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

Biblios

Manage bibliographic records

Add biblio

Add a bibliographic record to Koha. An optional x-framework-id may be passed to specify the cataloguing framework to be used (instead of the default).

The request body is expected to contain a MARC record in the format specified in the Content-type header you pass. Possible values for this header and the corresponding record formats expected are listed below:

  • application/marcxml+xml: MARCXML
  • application/marc-in-json: MARC-in-JSON
  • application/marc: Raw USMARC binary data
koha-authorization: {"permissions":{"editcatalogue":"edit_catalogue"}}
header Parameters
x-framework-id
string

Framework id. Use when content type is not application/json

x-record-schema
string
Enum: "MARC21" "UNIMARC"

March schema. One of MARC21 or UNIMARC

x-confirm-not-duplicate
integer

Confirm the posted element is not a duplicate

x-record-source-id
string

Internal record source identifier.

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

List biblios

koha-authorization: {"permissions":{"catalogue":"1"}}
query Parameters
_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
{
  • "error": "string",
  • "error_code": "string"
}

Get biblio

koha-authorization: {"permissions":{"catalogue":"1"}}
path Parameters
biblio_id
required
integer

Record internal identifier

Responses

Response samples

Content type
{
  • "error": "string",
  • "error_code": "string"
}

Delete biblio

koha-authorization: {"permissions":{"editcatalogue":"edit_catalogue"}}
path Parameters
biblio_id
required
integer

Record internal identifier

Responses

Response samples

Content type
application/json
"string"

Update biblio

Updates a bibliographic record to Koha. An optional x-framework-id may be passed, to specify the cataloguing framework to be used (instead of the default).

The request body is expected to contain a MARC record in the format specified by the Content-type header passed. Possible values for this headers and the corresponding record formats expected are listed below:

  • application/marcxml+xml: MARCXML
  • application/marc-in-json: MARC-in-JSON
  • application/marc: Raw USMARC binary data
koha-authorization: {"permissions":{"editcatalogue":"edit_catalogue"}}
path Parameters
biblio_id
required
integer

Record internal identifier

header Parameters
x-framework-id
string

Framework id. Use when content type is not application/json

x-record-schema
string
Enum: "MARC21" "UNIMARC"

March schema. One of MARC21 or UNIMARC

x-confirm-not-duplicate
integer

Confirm the posted element is not a duplicate

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

Get items for a biblio

koha-authorization: {"permissions":{"catalogue":"1"}}
path Parameters
biblio_id
required
integer

Record internal identifier

query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

bookable
boolean

Limit to items that are bookable

header Parameters
x-koha-embed
Array of strings
Items Enum: "+strings" "home_library" "holding_library" "biblio.title" "checkout" "checkout.patron" "transfer" "transfer+strings" "first_hold" "first_hold+strings" "first_hold.patron" "first_hold.desk" "recall" "recall+strings" "recall.patron" "item_type" "in_bundle" "bundle_host" "bundle_items_lost+count" "bundle_items_not_lost+count" "course_item.course_reserves.course" "analytics_count" "cover_image_ids" "item_group_item.item_group.description" "serial_item.serial"

Embed list sent as a request header

x-koha-request-id
integer

Request id header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Add an item for a biblio

koha-authorization: {"permissions":{"editcatalogue":"edit_catalogue"}}
path Parameters
biblio_id
required
integer

Record internal identifier

Request Body schema: application/json
required

A JSON object containing information about the new item

item_id
integer

Internal item identifier

biblio_id
integer

Internal identifier for the parent bibliographic record

external_id
string or null

The item's barcode

acquisition_date
string or null <date>

The date the item was acquired

acquisition_source
string or null

Information about the acquisition source (it is not really a vendor id)

bookable
boolean

Allow bookings on this item.

home_library_id
string or null

Internal library id for the library the item belongs to

purchase_price
number or null

Purchase price

replacement_price
number or null

Cost the library charges to replace the item (e.g. if lost)

replacement_price_date
string or null <date>

The date the replacement price is effective from

last_checkout_date
string or null <date>

The date the item was last checked out

last_seen_date
string or null <date-time>

The date the item barcode was last scanned

not_for_loan_status
integer

Authorized value defining why this item is not for loan

effective_not_for_loan_status
integer

Authorized value defining why this item is not for not_for_loan_status

damaged_status
integer

Authorized value defining this item as damaged

damaged_date
string or null

The date and time an item was last marked as damaged, NULL if not damaged

lost_status
integer

Authorized value defining this item as lost

lost_date
string or null <date-time>

The date and time an item was last marked as lost, NULL if not lost

withdrawn
integer

Authorized value defining this item as withdrawn

withdrawn_date
string or null <date-time>

The date and time an item was last marked as withdrawn, NULL if not withdrawn

callnumber
string or null

Call number for this item

coded_location_qualifier
string or null

Coded location qualifier

checkouts_count
integer or null

Number of times this item has been checked out/issued

renewals_count
integer or null

Number of times this item has been renewed

localuse
integer or null

Number of times this item has been recorded for localuse

holds_count
integer or null

Number of times this item has been placed on hold/reserved

restricted_status
integer or null

Authorized value defining use restrictions for this item

public_notes
string or null

Public notes on this item

internal_notes
string or null

Non-public notes on this item

holding_library_id
string or null

Library that is currently in possession item

timestamp
string <date-time>

Date and time this item was last altered

location
string or null

Authorized value for the shelving location for this item

permanent_location
string or null

Linked to the CART and PROC temporary locations feature, stores the permanent shelving location

checked_out_date
string or null <date>

Defines if item is checked out (NULL for not checked out, and checkout date for checked out)

call_number_source
string or null

Classification source used on this item

call_number_sort
string or null

?

collection_code
string or null

Authorized value for the collection code associated with this item

materials_notes
string or null

Materials specified

uri
string or null

URL for the item

item_type_id
string or null

Itemtype defining the type for this item

effective_item_type_id
string or null

Effective itemtype defining the type for this item_id

extended_subfields
string or null

Additional 952 subfields in XML format

serial_issue_number
string or null

serial enumeration/chronology for the item

copy_number
string or null

Copy number

inventory_number
string or null

Inventory number

new_status
string or null

'new' value, whatever free-text information.

exclude_from_local_holds_priority
boolean

Exclude this item from local holds priority.

return_claims
Array of any

An array of all return claims associated with this item

return_claim
object or null
home_library
object or null
holding_library
object or null
cover_image_ids
Array of any or null
item_group_item
object or null
serial_item
object or null
biblio
object or null
checkout
object or null
transfer
object or null
first_hold
object or null
recall
object or null
item_type
object or null
in_bundle
boolean or null
bundle_host
object or null
bundle_items_lost_count
integer or null

Number of lost items in the bundle

bundle_items_not_lost_count
integer or null

Number of items not lost in the bundle

course_item
object or null
analytics_count
integer or null
_strings
object or null

A return claims object if one exists that's unresolved

Responses

Request samples

Content type
application/json
{
  • "item_id": 0,
  • "biblio_id": 0,
  • "external_id": "string",
  • "acquisition_date": "2019-08-24",
  • "acquisition_source": "string",
  • "bookable": true,
  • "home_library_id": "string",
  • "purchase_price": 0,
  • "replacement_price": 0,
  • "replacement_price_date": "2019-08-24",
  • "last_checkout_date": "2019-08-24",
  • "last_seen_date": "2019-08-24T14:15:22Z",
  • "not_for_loan_status": 0,
  • "effective_not_for_loan_status": 0,
  • "damaged_status": 0,
  • "damaged_date": "string",
  • "lost_status": 0,
  • "lost_date": "2019-08-24T14:15:22Z",
  • "withdrawn": 0,
  • "withdrawn_date": "2019-08-24T14:15:22Z",
  • "callnumber": "string",
  • "coded_location_qualifier": "string",
  • "checkouts_count": 0,
  • "renewals_count": 0,
  • "localuse": 0,
  • "holds_count": 0,
  • "restricted_status": 0,
  • "public_notes": "string",
  • "internal_notes": "string",
  • "holding_library_id": "string",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "permanent_location": "string",
  • "checked_out_date": "2019-08-24",
  • "call_number_source": "string",
  • "call_number_sort": "string",
  • "collection_code": "string",
  • "materials_notes": "string",
  • "uri": "string",
  • "item_type_id": "string",
  • "effective_item_type_id": "string",
  • "extended_subfields": "string",
  • "serial_issue_number": "string",
  • "copy_number": "string",
  • "inventory_number": "string",
  • "new_status": "string",
  • "exclude_from_local_holds_priority": true,
  • "return_claims": [
    ],
  • "return_claim": { },
  • "home_library": { },
  • "holding_library": { },
  • "cover_image_ids": [
    ],
  • "item_group_item": { },
  • "serial_item": { },
  • "biblio": { },
  • "checkout": { },
  • "transfer": { },
  • "first_hold": { },
  • "recall": { },
  • "item_type": { },
  • "in_bundle": true,
  • "bundle_host": { },
  • "bundle_items_lost_count": 0,
  • "bundle_items_not_lost_count": 0,
  • "course_item": { },
  • "analytics_count": 0,
  • "_strings": { }
}

Response samples

Content type
application/json
{
  • "item_id": 0,
  • "biblio_id": 0,
  • "external_id": "string",
  • "acquisition_date": "2019-08-24",
  • "acquisition_source": "string",
  • "bookable": true,
  • "home_library_id": "string",
  • "purchase_price": 0,
  • "replacement_price": 0,
  • "replacement_price_date": "2019-08-24",
  • "last_checkout_date": "2019-08-24",
  • "last_seen_date": "2019-08-24T14:15:22Z",
  • "not_for_loan_status": 0,
  • "effective_not_for_loan_status": 0,
  • "damaged_status": 0,
  • "damaged_date": "string",
  • "lost_status": 0,
  • "lost_date": "2019-08-24T14:15:22Z",
  • "withdrawn": 0,
  • "withdrawn_date": "2019-08-24T14:15:22Z",
  • "callnumber": "string",
  • "coded_location_qualifier": "string",
  • "checkouts_count": 0,
  • "renewals_count": 0,
  • "localuse": 0,
  • "holds_count": 0,
  • "restricted_status": 0,
  • "public_notes": "string",
  • "internal_notes": "string",
  • "holding_library_id": "string",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "permanent_location": "string",
  • "checked_out_date": "2019-08-24",
  • "call_number_source": "string",
  • "call_number_sort": "string",
  • "collection_code": "string",
  • "materials_notes": "string",
  • "uri": "string",
  • "item_type_id": "string",
  • "effective_item_type_id": "string",
  • "extended_subfields": "string",
  • "serial_issue_number": "string",
  • "copy_number": "string",
  • "inventory_number": "string",
  • "new_status": "string",
  • "exclude_from_local_holds_priority": true,
  • "return_claims": [
    ],
  • "return_claim": { },
  • "home_library": { },
  • "holding_library": { },
  • "cover_image_ids": [
    ],
  • "item_group_item": { },
  • "serial_item": { },
  • "biblio": { },
  • "checkout": { },
  • "transfer": { },
  • "first_hold": { },
  • "recall": { },
  • "item_type": { },
  • "in_bundle": true,
  • "bundle_host": { },
  • "bundle_items_lost_count": 0,
  • "bundle_items_not_lost_count": 0,
  • "course_item": { },
  • "analytics_count": 0,
  • "_strings": { }
}

Update an item for a biblio

koha-authorization: {"permissions":{"editcatalogue":"edit_catalogue"}}
path Parameters
biblio_id
required
integer

Record internal identifier

item_id
required
integer

Internal item identifier

Request Body schema: application/json
required

A JSON object containing information about the item

item_id
integer

Internal item identifier

biblio_id
integer

Internal identifier for the parent bibliographic record

external_id
string or null

The item's barcode

acquisition_date
string or null <date>

The date the item was acquired

acquisition_source
string or null

Information about the acquisition source (it is not really a vendor id)

bookable
boolean

Allow bookings on this item.

home_library_id
string or null

Internal library id for the library the item belongs to

purchase_price
number or null

Purchase price

replacement_price
number or null

Cost the library charges to replace the item (e.g. if lost)

replacement_price_date
string or null <date>

The date the replacement price is effective from

last_checkout_date
string or null <date>

The date the item was last checked out

last_seen_date
string or null <date-time>

The date the item barcode was last scanned

not_for_loan_status
integer

Authorized value defining why this item is not for loan

effective_not_for_loan_status
integer

Authorized value defining why this item is not for not_for_loan_status

damaged_status
integer

Authorized value defining this item as damaged

damaged_date
string or null

The date and time an item was last marked as damaged, NULL if not damaged

lost_status
integer

Authorized value defining this item as lost

lost_date
string or null <date-time>

The date and time an item was last marked as lost, NULL if not lost

withdrawn
integer

Authorized value defining this item as withdrawn

withdrawn_date
string or null <date-time>

The date and time an item was last marked as withdrawn, NULL if not withdrawn

callnumber
string or null

Call number for this item

coded_location_qualifier
string or null

Coded location qualifier

checkouts_count
integer or null

Number of times this item has been checked out/issued

renewals_count
integer or null

Number of times this item has been renewed

localuse
integer or null

Number of times this item has been recorded for localuse

holds_count
integer or null

Number of times this item has been placed on hold/reserved

restricted_status
integer or null

Authorized value defining use restrictions for this item

public_notes
string or null

Public notes on this item

internal_notes
string or null

Non-public notes on this item

holding_library_id
string or null

Library that is currently in possession item

timestamp
string <date-time>

Date and time this item was last altered

location
string or null

Authorized value for the shelving location for this item

permanent_location
string or null

Linked to the CART and PROC temporary locations feature, stores the permanent shelving location

checked_out_date
string or null <date>

Defines if item is checked out (NULL for not checked out, and checkout date for checked out)

call_number_source
string or null

Classification source used on this item

call_number_sort
string or null

?

collection_code
string or null

Authorized value for the collection code associated with this item

materials_notes
string or null

Materials specified

uri
string or null

URL for the item

item_type_id
string or null

Itemtype defining the type for this item

effective_item_type_id
string or null

Effective itemtype defining the type for this item_id

extended_subfields
string or null

Additional 952 subfields in XML format

serial_issue_number
string or null

serial enumeration/chronology for the item

copy_number
string or null

Copy number

inventory_number
string or null

Inventory number

new_status
string or null

'new' value, whatever free-text information.

exclude_from_local_holds_priority
boolean

Exclude this item from local holds priority.

return_claims
Array of any

An array of all return claims associated with this item

return_claim
object or null
home_library
object or null
holding_library
object or null
cover_image_ids
Array of any or null
item_group_item
object or null
serial_item
object or null
biblio
object or null
checkout
object or null
transfer
object or null
first_hold
object or null
recall
object or null
item_type
object or null
in_bundle
boolean or null
bundle_host
object or null
bundle_items_lost_count
integer or null

Number of lost items in the bundle

bundle_items_not_lost_count
integer or null

Number of items not lost in the bundle

course_item
object or null
analytics_count
integer or null
_strings
object or null

A return claims object if one exists that's unresolved

Responses

Request samples

Content type
application/json
{
  • "item_id": 0,
  • "biblio_id": 0,
  • "external_id": "string",
  • "acquisition_date": "2019-08-24",
  • "acquisition_source": "string",
  • "bookable": true,
  • "home_library_id": "string",
  • "purchase_price": 0,
  • "replacement_price": 0,
  • "replacement_price_date": "2019-08-24",
  • "last_checkout_date": "2019-08-24",
  • "last_seen_date": "2019-08-24T14:15:22Z",
  • "not_for_loan_status": 0,
  • "effective_not_for_loan_status": 0,
  • "damaged_status": 0,
  • "damaged_date": "string",
  • "lost_status": 0,
  • "lost_date": "2019-08-24T14:15:22Z",
  • "withdrawn": 0,
  • "withdrawn_date": "2019-08-24T14:15:22Z",
  • "callnumber": "string",
  • "coded_location_qualifier": "string",
  • "checkouts_count": 0,
  • "renewals_count": 0,
  • "localuse": 0,
  • "holds_count": 0,
  • "restricted_status": 0,
  • "public_notes": "string",
  • "internal_notes": "string",
  • "holding_library_id": "string",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "permanent_location": "string",
  • "checked_out_date": "2019-08-24",
  • "call_number_source": "string",
  • "call_number_sort": "string",
  • "collection_code": "string",
  • "materials_notes": "string",
  • "uri": "string",
  • "item_type_id": "string",
  • "effective_item_type_id": "string",
  • "extended_subfields": "string",
  • "serial_issue_number": "string",
  • "copy_number": "string",
  • "inventory_number": "string",
  • "new_status": "string",
  • "exclude_from_local_holds_priority": true,
  • "return_claims": [
    ],
  • "return_claim": { },
  • "home_library": { },
  • "holding_library": { },
  • "cover_image_ids": [
    ],
  • "item_group_item": { },
  • "serial_item": { },
  • "biblio": { },
  • "checkout": { },
  • "transfer": { },
  • "first_hold": { },
  • "recall": { },
  • "item_type": { },
  • "in_bundle": true,
  • "bundle_host": { },
  • "bundle_items_lost_count": 0,
  • "bundle_items_not_lost_count": 0,
  • "course_item": { },
  • "analytics_count": 0,
  • "_strings": { }
}

Response samples

Content type
application/json
{
  • "item_id": 0,
  • "biblio_id": 0,
  • "external_id": "string",
  • "acquisition_date": "2019-08-24",
  • "acquisition_source": "string",
  • "bookable": true,
  • "home_library_id": "string",
  • "purchase_price": 0,
  • "replacement_price": 0,
  • "replacement_price_date": "2019-08-24",
  • "last_checkout_date": "2019-08-24",
  • "last_seen_date": "2019-08-24T14:15:22Z",
  • "not_for_loan_status": 0,
  • "effective_not_for_loan_status": 0,
  • "damaged_status": 0,
  • "damaged_date": "string",
  • "lost_status": 0,
  • "lost_date": "2019-08-24T14:15:22Z",
  • "withdrawn": 0,
  • "withdrawn_date": "2019-08-24T14:15:22Z",
  • "callnumber": "string",
  • "coded_location_qualifier": "string",
  • "checkouts_count": 0,
  • "renewals_count": 0,
  • "localuse": 0,
  • "holds_count": 0,
  • "restricted_status": 0,
  • "public_notes": "string",
  • "internal_notes": "string",
  • "holding_library_id": "string",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "permanent_location": "string",
  • "checked_out_date": "2019-08-24",
  • "call_number_source": "string",
  • "call_number_sort": "string",
  • "collection_code": "string",
  • "materials_notes": "string",
  • "uri": "string",
  • "item_type_id": "string",
  • "effective_item_type_id": "string",
  • "extended_subfields": "string",
  • "serial_issue_number": "string",
  • "copy_number": "string",
  • "inventory_number": "string",
  • "new_status": "string",
  • "exclude_from_local_holds_priority": true,
  • "return_claims": [
    ],
  • "return_claim": { },
  • "home_library": { },
  • "holding_library": { },
  • "cover_image_ids": [
    ],
  • "item_group_item": { },
  • "serial_item": { },
  • "biblio": { },
  • "checkout": { },
  • "transfer": { },
  • "first_hold": { },
  • "recall": { },
  • "item_type": { },
  • "in_bundle": true,
  • "bundle_host": { },
  • "bundle_items_lost_count": 0,
  • "bundle_items_not_lost_count": 0,
  • "course_item": { },
  • "analytics_count": 0,
  • "_strings": { }
}

Get valid pickup locations for a biblio

koha-authorization: {"permissions":{"reserveforothers":"place_holds"}}
path Parameters
biblio_id
required
integer

Record internal identifier

query Parameters
patron_id
required
integer

Internal patron identifier

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Merge Biblios

koha-authorization: {"permissions":{"catalogue":"editcatalogue"}}
path Parameters
biblio_id
required
string

Bilblionumber

Request Body schema: application/json
required

JSON Object with params and an optional marc record in MARC-in-JSON format

biblio_id_to_merge
required
integer

Biblionumber from which to merge

rules
string or null

Internally identifier of a merge algoritm. Now two identifier are supported, 'override' and 'override_ext'. 'override' is to use when you the bibliographic data of biblio_id as resulting bibliographic data. The null value is equivalent of 'override'. 'override_ext' is to use only with a value in datarecord field. In fact is mandatory to use if you insert a record inside datarecord field.

framework_to_use
string or null

Framework code, you can use it only with a value in datarecord field. With null value it uses the framework code of record to be merged into.

datarecord
object or null

Bibliographic record used as result of the merge. It uses the format MARC-in-JSON

Responses

Request samples

Content type
application/json
{
  • "biblio_id_to_merge": 0,
  • "rules": "string",
  • "framework_to_use": "string",
  • "datarecord": { }
}

Response samples

Content type
application/marc-in-json
{
  • "error": "string",
  • "error_code": "string"
}

List deleted biblios

koha-authorization: {"permissions":{"catalogue":"1"}}
query Parameters
_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
{
  • "error": "string",
  • "error_code": "string"
}

Get deleted biblio

koha-authorization: {"permissions":{"catalogue":"1"}}
path Parameters
biblio_id
required
integer

Record internal identifier

Responses

Response samples

Content type
{
  • "error": "string",
  • "error_code": "string"
}

Get biblio (public)

path Parameters
biblio_id
required
integer

Record internal identifier

Responses

Response samples

Content type
No sample

getBiblioItemsPublic

path Parameters
biblio_id
required
integer

Record internal identifier

query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-embed
Array of strings
Items Value: "+strings"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

set biblio rating (public)

path Parameters
biblio_id
required
integer

Record internal identifier

Request Body schema: application/json

A JSON object containing rating information

rating
required
integer or null

the rating

Responses

Request samples

Content type
application/json
{
  • "rating": 0
}

Response samples

Content type
application/json
{
  • "rating": 0,
  • "average": 0,
  • "count": 0
}

Bookings

Manage bookings

List bookings

koha-authorization: {"permissions":{"catalogue":1}}
query Parameters
biblio_id
string

Case insensative search on booking biblio_id

item_id
string

Case insensative search on booking item_id

patron_id
string

Case insensative search on booking patron_id

start_date
string

Case Insensative search on booking start_date

end_date
string

Case Insensative search on booking end_date

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-embed
Array of strings
Items Enum: "biblio" "item" "patron" "pickup_library"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Add booking

koha-authorization: {"permissions":{"circulate":"manage_bookings"}}
Request Body schema: application/json
required

A JSON object containing informations about the new booking

biblio_id
required
integer

Internal identifier for the parent bibliographic record

biblio
object

Embedable biblio representation

booking_id
integer

Internal booking identifier

end_date
required
string <date-time>

Start date and time of this booking

item_id
required
integer or null

Internal item identifier

item
object or null

Embedable item representation

patron_id
required
integer

Internal patron identifier

patron
object or null

Embedable patron representation

pickup_library_id
required
string

Internal pickup_library identifier

pickup_library
object or null

Embedable pickup_library representation

start_date
required
string <date-time>

Start date and time of this booking

Responses

Request samples

Content type
application/json
{
  • "biblio_id": 0,
  • "biblio": { },
  • "booking_id": 0,
  • "end_date": "2019-08-24T14:15:22Z",
  • "item_id": 0,
  • "item": { },
  • "patron_id": 0,
  • "patron": { },
  • "pickup_library_id": "string",
  • "pickup_library": { },
  • "start_date": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "biblio_id": 0,
  • "biblio": { },
  • "booking_id": 0,
  • "end_date": "2019-08-24T14:15:22Z",
  • "item_id": 0,
  • "item": { },
  • "patron_id": 0,
  • "patron": { },
  • "pickup_library_id": "string",
  • "pickup_library": { },
  • "start_date": "2019-08-24T14:15:22Z"
}

Delete booking

koha-authorization: {"permissions":{"circulate":"manage_bookings"}}
path Parameters
booking_id
required
integer

Booking identifier

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "error_code": "string"
}

Get booking

koha-authorization: {"permissions":{"catalogue":1}}
path Parameters
booking_id
required
integer

Booking identifier

Responses

Response samples

Content type
application/json
{
  • "biblio_id": 0,
  • "biblio": { },
  • "booking_id": 0,
  • "end_date": "2019-08-24T14:15:22Z",
  • "item_id": 0,
  • "item": { },
  • "patron_id": 0,
  • "patron": { },
  • "pickup_library_id": "string",
  • "pickup_library": { },
  • "start_date": "2019-08-24T14:15:22Z"
}

Update booking

koha-authorization: {"permissions":{"circulate":"manage_bookings"}}
path Parameters
booking_id
required
integer

Booking identifier

Request Body schema: application/json
required

A booking object

biblio_id
required
integer

Internal identifier for the parent bibliographic record

biblio
object

Embedable biblio representation

booking_id
integer

Internal booking identifier

end_date
required
string <date-time>

Start date and time of this booking

item_id
required
integer or null

Internal item identifier

item
object or null

Embedable item representation

patron_id
required
integer

Internal patron identifier

patron
object or null

Embedable patron representation

pickup_library_id
required
string

Internal pickup_library identifier

pickup_library
object or null

Embedable pickup_library representation

start_date
required
string <date-time>

Start date and time of this booking

Responses

Request samples

Content type
application/json
{
  • "biblio_id": 0,
  • "biblio": { },
  • "booking_id": 0,
  • "end_date": "2019-08-24T14:15:22Z",
  • "item_id": 0,
  • "item": { },
  • "patron_id": 0,
  • "patron": { },
  • "pickup_library_id": "string",
  • "pickup_library": { },
  • "start_date": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "biblio_id": 0,
  • "biblio": { },
  • "booking_id": 0,
  • "end_date": "2019-08-24T14:15:22Z",
  • "item_id": 0,
  • "item": { },
  • "patron_id": 0,
  • "patron": { },
  • "pickup_library_id": "string",
  • "pickup_library": { },
  • "start_date": "2019-08-24T14:15:22Z"
}

Get bookings for a biblio

koha-authorization: {"permissions":{"circulate":"manage_bookings"}}
path Parameters
biblio_id
required
integer

Record internal identifier

query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-embed
Array of strings
Items Enum: "item" "patron" "pickup_library"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Cash registers

Manage cash registers

List the library's cash registers

koha-authorization: {"permissions":{"catalogue":1}}
path Parameters
library_id
required
string

Internal library identifier

query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Cashups

Manage cash register cashups

List cashups for the cash register

koha-authorization: {"permissions":{"cash_management":"cashup"}}
path Parameters
cash_register_id
required
integer

Cash register internal identifier

query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

x-koha-embed
Array of strings
Items Value: "manager"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Get cashup

koha-authorization: {"permissions":{"cash_management":"cashup"}}
path Parameters
cashup_id
required
integer

Cashup internal identifier

header Parameters
x-koha-embed
Array of strings
Items Value: "summary"

Embed list sent as a request header

Responses

Response samples

Content type
application/json
{
  • "cashup_id": 0,
  • "cash_register_id": 0,
  • "manager_id": 0,
  • "manager": { },
  • "amount": 0,
  • "timestamp": "2019-08-24T14:15:22Z",
  • "summary": { }
}

Checkouts

Manage checkouts

List checkouts for a biblio

koha-authorization: {"permissions":[{"circulate":"circulate_remaining_permissions"},{"circulate":"manage_bookings"}]}
path Parameters
biblio_id
required
integer

Record internal identifier

query Parameters
_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

q
Array of strings

Query filter sent as a request parameter

checked_in
boolean

By default, current checkouts are returned, when this is true then checked in checkouts are returned as result.

header Parameters
x-koha-request-id
integer

Request id header

x-koha-embed
Array of strings
Items Enum: "issuer" "item" "patron" "library"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

List checkouts

koha-authorization: {"permissions":[{"circulate":"circulate_remaining_permissions"},{"circulate":"manage_bookings"}]}
query Parameters
patron_id
integer

Internal patron identifier

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

q
Array of strings

Query filter sent as a request parameter

checked_in
boolean

By default, current checkouts are returned, when this is true then checked in checkouts are returned as result.

header Parameters
x-koha-request-id
integer

Request id header

x-koha-embed
Array of strings
Items Enum: "issuer" "renewals"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Add a new checkout

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
query Parameters
confirmation
string

A JWT confirmation token

Request Body schema: application/json
required

A JSON object containing information about the new checkout

checkout_id
integer

internally assigned checkout identifier

patron_id
integer

Internal patron identifier

item_id
integer or null

internal identifier of checked out item

due_date
string <date-time>

Due date

library_id
string or null

code of the library the item was checked out

issuer_id
integer or null

internally assigned for the user that processed the checkout

checkin_date
string or null <date-time>

Date the item was returned

last_renewed_date
string or null <date-time>

Date the item was last renewed

renewals_count
integer or null

Number of renewals

unseen_renewals
integer or null

Number of consecutive unseen renewals

auto_renew
boolean

Auto renewal

auto_renew_error
string or null

Auto renewal error

timestamp
string

Last update time

checkout_date
string <date-time>

Date the item was issued

onsite_checkout
boolean

On site checkout

note
string or null

Issue note text

note_date
string or null <date>

Datetime of the issue note

note_seen
boolean or null

has the note been seen already

issuer
object or null

The object representing the checkout issuer

item
object or null

The object representing the checked out item

library
object or null

The object representing the checkout library

patron
object or null

The object representing the checkout patron

Responses

Request samples

Content type
application/json
{
  • "checkout_id": 0,
  • "patron_id": 0,
  • "item_id": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "library_id": "string",
  • "issuer_id": 0,
  • "checkin_date": "2019-08-24T14:15:22Z",
  • "last_renewed_date": "2019-08-24T14:15:22Z",
  • "renewals_count": 0,
  • "unseen_renewals": 0,
  • "auto_renew": true,
  • "auto_renew_error": "string",
  • "timestamp": "string",
  • "checkout_date": "2019-08-24T14:15:22Z",
  • "onsite_checkout": true,
  • "note": "string",
  • "note_date": "2019-08-24",
  • "note_seen": true,
  • "issuer": { },
  • "item": { },
  • "library": { },
  • "patron": { }
}

Response samples

Content type
application/json
{
  • "checkout_id": 0,
  • "patron_id": 0,
  • "item_id": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "library_id": "string",
  • "issuer_id": 0,
  • "checkin_date": "2019-08-24T14:15:22Z",
  • "last_renewed_date": "2019-08-24T14:15:22Z",
  • "renewals_count": 0,
  • "unseen_renewals": 0,
  • "auto_renew": true,
  • "auto_renew_error": "string",
  • "timestamp": "string",
  • "checkout_date": "2019-08-24T14:15:22Z",
  • "onsite_checkout": true,
  • "note": "string",
  • "note_date": "2019-08-24",
  • "note_seen": true,
  • "issuer": { },
  • "item": { },
  • "library": { },
  • "patron": { }
}

Get checkout

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
path Parameters
checkout_id
required
integer

Internal checkout identifier

header Parameters
x-koha-embed
Array of strings
Items Enum: "issuer" "renewals"

Embed list sent as a request header

Responses

Response samples

Content type
application/json
{
  • "checkout_id": 0,
  • "patron_id": 0,
  • "item_id": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "library_id": "string",
  • "issuer_id": 0,
  • "checkin_date": "2019-08-24T14:15:22Z",
  • "last_renewed_date": "2019-08-24T14:15:22Z",
  • "renewals_count": 0,
  • "unseen_renewals": 0,
  • "auto_renew": true,
  • "auto_renew_error": "string",
  • "timestamp": "string",
  • "checkout_date": "2019-08-24T14:15:22Z",
  • "onsite_checkout": true,
  • "note": "string",
  • "note_date": "2019-08-24",
  • "note_seen": true,
  • "issuer": { },
  • "item": { },
  • "library": { },
  • "patron": { }
}

Get renewability for a checkout

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
path Parameters
checkout_id
required
integer

Internal checkout identifier

Responses

Response samples

Content type
application/json
{
  • "allows_renewal": true,
  • "max_renewals": 0,
  • "current_renewals": 0,
  • "unseen_renewals": 0,
  • "error": "string"
}

Renew a checkout

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
path Parameters
checkout_id
required
integer

Internal checkout identifier

query Parameters
seen
integer

Item was seen flag

Responses

Response samples

Content type
application/json
{
  • "checkout_id": 0,
  • "patron_id": 0,
  • "item_id": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "library_id": "string",
  • "issuer_id": 0,
  • "checkin_date": "2019-08-24T14:15:22Z",
  • "last_renewed_date": "2019-08-24T14:15:22Z",
  • "renewals_count": 0,
  • "unseen_renewals": 0,
  • "auto_renew": true,
  • "auto_renew_error": "string",
  • "timestamp": "string",
  • "checkout_date": "2019-08-24T14:15:22Z",
  • "onsite_checkout": true,
  • "note": "string",
  • "note_date": "2019-08-24",
  • "note_seen": true,
  • "issuer": { },
  • "item": { },
  • "library": { },
  • "patron": { }
}

List renewals for a checkout

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
path Parameters
checkout_id
required
integer

Internal checkout identifier

header Parameters
x-koha-embed
Array of strings
Items Value: "renewer"

Embed list sent as a request header

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Renew a checkout

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
path Parameters
checkout_id
required
integer

Internal checkout identifier

query Parameters
seen
integer

Item was seen flag

Responses

Response samples

Content type
application/json
{
  • "checkout_id": 0,
  • "patron_id": 0,
  • "item_id": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "library_id": "string",
  • "issuer_id": 0,
  • "checkin_date": "2019-08-24T14:15:22Z",
  • "last_renewed_date": "2019-08-24T14:15:22Z",
  • "renewals_count": 0,
  • "unseen_renewals": 0,
  • "auto_renew": true,
  • "auto_renew_error": "string",
  • "timestamp": "string",
  • "checkout_date": "2019-08-24T14:15:22Z",
  • "onsite_checkout": true,
  • "note": "string",
  • "note_date": "2019-08-24",
  • "note_seen": true,
  • "issuer": { },
  • "item": { },
  • "library": { },
  • "patron": { }
}

Get checkout availability

koha-authorization: {"permissions":{"circulate":"circulate_remaining_permissions"}}
query Parameters
patron_id
integer

Internal patron identifier

item_id
integer

Internal item identifier

Responses

Response samples

Content type
application/json
{
  • "blockers": { },
  • "confirms": { },
  • "warnings": { },
  • "confirmation_token": "string"
}

List checkouts for a patron

koha-authorization: {"permissions":[{"circulate":"circulate_remaining_permissions"},{"circulate":"manage_bookings"}]}
path Parameters
patron_id
required
integer

Internal patron identifier

query Parameters
_match
string
Enum: "contains" "exact" "starts_with" "ends_with"

Matching criteria

_order_by
Array of strings

Sorting criteria

_page
integer

Page number, for paginated object listing

_per_page
integer

Page size, for paginated object listing

q
Array of strings

Query filter sent as a request parameter

header Parameters
x-koha-request-id
integer

Request id header

x-koha-embed
Array of strings
Items Value: "cancellation_requested"

Embed list sent as a request header

Request Body schema: application/json

Query filter sent through request"s body

object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]

Get checkout availability

koha-authorization: {"allow-owner":true}
query Parameters
patron_id
integer

Internal patron identifier

item_id
integer

Internal item identifier

Responses

Response samples

Content type
application/json
{
  • "blockers": { },
  • "confirms": { },
  • "warnings": { },
  • "confirmation_token": "string"
}

Add a new checkout (public)

koha-authorization: {"allow-owner":true}
path Parameters
patron_id
required
integer

Internal patron identifier

query Parameters
confirmation
string

A JWT confirmation token

Request Body schema: application/json
required

A JSON object containing information about the new checkout

checkout_id
integer

internally assigned checkout identifier

patron_id
integer

Internal patron identifier

item_id
integer or null

internal identifier of checked out item

due_date
string <date-time>

Due date

library_id
string or null

code of the library the item was checked out

issuer_id
integer or null

internally assigned for the user that processed the checkout

checkin_date
string or null <date-time>

Date the item was returned

last_renewed_date
string or null <date-time>

Date the item was last renewed

renewals_count
integer or null

Number of renewals

unseen_renewals
integer or null

Number of consecutive unseen renewals

auto_renew
boolean

Auto renewal

auto_renew_error
string or null

Auto renewal error

timestamp
string

Last update time

checkout_date
string <date-time>

Date the item was issued

onsite_checkout
boolean

On site checkout

note
string or null

Issue note text

note_date
string or null <date>

Datetime of the issue note

note_seen
boolean or null

has the note been seen already

issuer
object or null

The object representing the checkout issuer

item
object or null

The object representing the checked out item

library
object or null

The object representing the checkout library

patron
object or null

The object representing the checkout patron

Responses