---
/items:
  get:
    x-mojo-to: Items#list
    operationId: listItems
    tags:
      - items
    summary: List items
    parameters:
      - name: external_id
        in: query
        description: Search on the item's barcode
        required: false
        type: string
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - +strings
            - biblio
            - effective_bookable
        collectionFormat: csv
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
      - $ref: "../swagger.yaml#/parameters/request_id_header"
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "200":
        description: A list of item
        schema:
          type: array
          items:
            $ref: "../swagger.yaml#/definitions/item"
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        catalogue: "1"
"/items/{item_id}":
  get:
    x-mojo-to: Items#get
    operationId: getItem
    tags:
      - items
    summary: Get item
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - +strings
            - effective_bookable
        collectionFormat: csv
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "200":
        description: An item
        schema:
          $ref: "../swagger.yaml#/definitions/item"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Item not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        catalogue: "1"
  delete:
    x-mojo-to: Items#delete
    operationId: deleteItem
    tags:
      - items
    summary: Delete item
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "204":
        description: Deleted item
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Item not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "409":
        description: |
          Conflict. Possible `error_code` attribute values:

            * book_on_loan: The item is checked out
            * book_reserved: Waiting or in-transit hold for the item
            * last_item_for_hold: The item is the last one on a record on which a biblio-level hold is placed
            * linked_analytics: The item has linked analytic records
            * not_same_branch: The item is blocked by independent branches
            * item_has_holds: The item has holds
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        editcatalogue: edit_catalogue
"/items/{item_id}/bundled_items":
  post:
    x-mojo-to: Items#add_to_bundle
    operationId: addToBundle
    tags:
      - items
    summary: Add item to bundle
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
      - name: body
        in: body
        description: A JSON object containing information about the new bundle link
        required: true
        schema:
          $ref: "../swagger.yaml#/definitions/bundle_link"
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "201":
        description: A successfully created bundle link
        schema:
          items:
            $ref: "../swagger.yaml#/definitions/item"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Resource not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "409":
        description: Conflict in creating resource
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: Internal server error
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        catalogue: 1
  get:
    x-mojo-to: Items#bundled_items
    operationId: bundledItems
    tags:
      - items
    summary: List bundled items
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
      - name: external_id
        in: query
        description: Search on the item's barcode
        required: false
        type: string
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - biblio
            - checkout
            - return_claims
            - return_claim
            - return_claim.patron
        collectionFormat: csv
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "200":
        description: A list of item
        schema:
          type: array
          items:
            $ref: "../swagger.yaml#/definitions/item"
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: Internal server error
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        catalogue: "1"
"/items/{item_id}/bundled_items/{bundled_item_id}":
  delete:
    x-mojo-to: Items#remove_from_bundle
    operationId: removeFromBundle
    tags:
      - items
    summary: Remove item from bundle
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
      - name: bundled_item_id
        in: path
        description: Internal identifier for the bundled item
        required: true
        type: string
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "204":
        description: Bundle link deleted
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "409":
        description: Conflict in creating resource
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Resource not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: Internal server error
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        catalogue: 1
/items/{item_id}/bookings:
  get:
    x-mojo-to: Items#bookings
    operationId: getItemBookings
    summary: Get existing bookings for an item
    tags:
      - items
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "200":
        description: Item bookings
        schema:
          type: array
          items:
            $ref: ../swagger.yaml#/definitions/booking
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: ../swagger.yaml#/definitions/error
      "403":
        description: Access forbidden
        schema:
          $ref: ../swagger.yaml#/definitions/error
      "404":
        description: Item not found
        schema:
          $ref: ../swagger.yaml#/definitions/error
      "500":
        description: Internal server error
        schema:
          $ref: ../swagger.yaml#/definitions/error
      "503":
        description: Under maintenance
        schema:
          $ref: ../swagger.yaml#/definitions/error
    x-koha-authorization:
      permissions:
        circulation: 1
"/items/{item_id}/pickup_locations":
  get:
    x-mojo-to: Items#pickup_locations
    operationId: getItemPickupLocations
    summary: Get valid pickup locations for an item
    tags:
      - items
    parameters:
      - $ref: "../swagger.yaml#/parameters/item_id_pp"
      - name: patron_id
        in: query
        description: Internal patron identifier
        required: true
        type: integer
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
      - $ref: "../swagger.yaml#/parameters/request_id_header"
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "200":
        description: Item pickup locations
        schema:
          type: array
          items:
            $ref: "../swagger.yaml#/definitions/library"
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Bibliographic record not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        reserveforothers: place_holds
"/public/items":
  get:
    x-mojo-to: Items#list_public
    operationId: listItemsPublic
    tags:
      - items
    summary: List items publically visible
    parameters:
      - name: external_id
        in: query
        description: Search on the item's barcode
        required: false
        type: string
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
      - $ref: "../swagger.yaml#/parameters/request_id_header"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - +strings
            - biblio
        collectionFormat: csv
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "200":
        description: A list of item
        schema:
          type: array
          items:
            $ref: "../swagger.yaml#/definitions/item"
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
