---
/checkouts:
  get:
    x-mojo-to: Checkouts#list
    operationId: listCheckouts
    tags:
      - checkouts
    summary: List checkouts
    parameters:
      - $ref: "../swagger.yaml#/parameters/patron_id_qp"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
      - $ref: "../swagger.yaml#/parameters/request_id_header"
      - name: checked_in
        in: query
        description: By default, current checkouts are returned, when this is true then
          checked in checkouts are returned as result.
        type: boolean
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - issuer
            - renewals
        collectionFormat: csv
    produces:
      - application/json
    responses:
      "200":
        description: A list of checkouts
        schema:
          $ref: "../swagger.yaml#/definitions/checkouts"
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Patron 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:
        - circulate: circulate_remaining_permissions
        - circulate: manage_bookings
  post:
    x-mojo-to: Checkouts#add
    operationId: addCheckout
    tags:
      - checkouts
      - patrons
    summary: Add a new checkout
    parameters:
      - name: body
        in: body
        description: A JSON object containing information about the new checkout
        required: true
        schema:
          $ref: "../swagger.yaml#/definitions/checkout"
      - name: confirmation
        in: query
        description: A JWT confirmation token
        required: false
        type: string
    consumes:
      - application/json
    produces:
      - application/json
    responses:
      "201":
        description: Created checkout
        schema:
          $ref: "../swagger.yaml#/definitions/checkout"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Cannot create checkout
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "409":
        description: Conflict in creating checkout
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "412":
        description: Precondition failed
        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:
        circulate: circulate_remaining_permissions
"/checkouts/{checkout_id}":
  get:
    x-mojo-to: Checkouts#get
    operationId: getCheckout
    tags:
      - checkouts
    summary: Get checkout
    parameters:
      - $ref: "../swagger.yaml#/parameters/checkout_id_pp"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - issuer
            - renewals
        collectionFormat: csv
    produces:
      - application/json
    responses:
      "200":
        description: Updated borrower's checkout
        schema:
          $ref: "../swagger.yaml#/definitions/checkout"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Checkout 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:
        circulate: circulate_remaining_permissions
"/checkouts/{checkout_id}/renewal":
  post:
    x-mojo-to: Checkouts#renew
    operationId: renewCheckout
    tags:
      - checkouts
    summary: Renew a checkout
    parameters:
      - $ref: "../swagger.yaml#/parameters/checkout_id_pp"
      - $ref: "../swagger.yaml#/parameters/seen_pp"
    produces:
      - application/json
    responses:
      "201":
        description: Updated borrower's checkout
        schema:
          $ref: "../swagger.yaml#/definitions/checkout"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Cannot renew checkout
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Checkout 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:
        circulate: circulate_remaining_permissions
"/checkouts/{checkout_id}/renewals":
  post:
    x-mojo-to: Checkouts#renew
    operationId: renewsCheckout
    tags:
      - checkouts
    summary: Renew a checkout
    parameters:
      - $ref: "../swagger.yaml#/parameters/checkout_id_pp"
      - $ref: "../swagger.yaml#/parameters/seen_pp"
    produces:
      - application/json
    responses:
      "201":
        description: Updated borrower's checkout
        schema:
          $ref: "../swagger.yaml#/definitions/checkout"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Cannot renew checkout
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Checkout 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:
        circulate: circulate_remaining_permissions
  get:
    x-mojo-to: Checkouts#get_renewals
    operationId: getRenewals
    tags:
      - checkouts
    summary: List renewals for a checkout
    parameters:
      - $ref: "../swagger.yaml#/parameters/checkout_id_pp"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - renewer
        collectionFormat: csv
    produces:
      - application/json
    responses:
      "200":
        description: List of checkouts renewals
        schema:
          $ref: "../swagger.yaml#/definitions/renewals"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Checkout 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:
        circulate: circulate_remaining_permissions
"/checkouts/{checkout_id}/allows_renewal":
  get:
    x-mojo-to: Checkouts#allows_renewal
    operationId: allows_renewalCheckout
    tags:
      - checkouts
    summary: Get renewability for a checkout
    parameters:
      - $ref: "../swagger.yaml#/parameters/checkout_id_pp"
    produces:
      - application/json
    responses:
      "200":
        description: Checkout renewability information
        schema:
          $ref: "../swagger.yaml#/definitions/allows_renewal"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Checkout 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:
        circulate: circulate_remaining_permissions
"/checkouts/availability":
  get:
    x-mojo-to: Checkouts#get_availability
    operationId: availabilityCheckouts
    tags:
      - checkouts
    summary: Get checkout availability
    parameters:
      - $ref: "../swagger.yaml#/parameters/patron_id_qp"
      - $ref: "../swagger.yaml#/parameters/item_id_qp"
    produces:
      - application/json
    responses:
      "200":
        description: Availability
        schema:
          $ref: "../swagger.yaml#/definitions/checkout_availability"
      "400":
        description: Bad request
        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:
        circulate: circulate_remaining_permissions
"/public/checkouts/availability":
  get:
    x-mojo-to: Checkouts#get_availability
    operationId: availabilityCheckoutsPublic
    tags:
      - checkouts
    summary: Get checkout availability
    parameters:
      - $ref: "../swagger.yaml#/parameters/patron_id_qp"
      - $ref: "../swagger.yaml#/parameters/item_id_qp"
    produces:
      - application/json
    responses:
      "200":
        description: Availability
        schema:
          type: "object"
          properties:
            blockers:
              type: object
            confirms:
              type: object
            warnings:
              type: object
            confirmation_token:
              type: string
          additionalProperties: false
      "400":
        description: Bad request
        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:
      allow-owner: true
