---
/sip2/institutions:
  get:
    x-mojo-to: SIP2::Institutions#list
    operationId: listSip2Institutions
    tags:
      - sip2_institutions
    summary: List institutions
    produces:
      - application/json
    parameters:
      - description: Case insensitive search on institution sip_institution_id
        in: query
        name: sip_institution_id
        required: false
        type: string
      - description: Case insensitive search on institution name
        in: query
        name: name
        required: false
        type: string
      - description: Case insensitive search on institution implementation
        in: query
        name: implementation
        required: false
        type: string #TODO: Put the rest of the attributes here: checkin, checkout, etc
      - $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"
    responses:
      200:
        description: A list of SIP2 institutions
        schema:
          items:
            $ref: "../swagger.yaml#/definitions/sip2_institution"
          type: array
      "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"
      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:
        sip2: 1
  post:
    x-mojo-to: SIP2::Institutions#add
    operationId: addSip2Institutions
    tags:
      - sip2_institutions
    summary: Add institutions
    consumes:
      - application/json
    produces:
      - application/json
    parameters:
      - description: A JSON object containing information about the new institution
        in: body
        name: body
        required: true
        schema:
            $ref: "../swagger.yaml#/definitions/sip2_institution"
    responses:
      201:
        description: A successfully created institution
        schema:
          items:
            $ref: "../swagger.yaml#/definitions/sip2_institution"
      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: Ressource not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      409:
        description: Conflict in creating resource
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      413:
        description: Payload too large
        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:
        sip2: 1
"/sip2/institutions/{sip_institution_id}":
  get:
    x-mojo-to: SIP2::Institutions#get
    operationId: getSip2Institutions
    tags:
      - sip2_institutions
    summary: Get SIP2 institution
    produces:
      - application/json
    parameters:
      - $ref: "../swagger.yaml#/parameters/sip_institution_id_pp"
    responses:
      200:
        description: A SIP2 institution
        schema:
          items:
            $ref: "../swagger.yaml#/definitions/sip2_institution"
      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: Ressource 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:
        sip2: 1
  put:
    x-mojo-to: SIP2::Institutions#update
    operationId: updateSip2Institutions
    tags:
      - sip2_institutions
    summary: Update institution
    consumes:
      - application/json
    produces:
      - application/json
    parameters:
      - $ref: "../swagger.yaml#/parameters/sip_institution_id_pp"
      - name: body
        in: body
        description: A JSON object containing new information about existing institution
        required: true
        schema:
          $ref: "../swagger.yaml#/definitions/sip2_institution"
    responses:
      200:
        description: A successfully updated institution
        schema:
          items:
            $ref: "../swagger.yaml#/definitions/sip2_institution"
      400:
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      403:
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      404:
        description: Ressource not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      409:
        description: Conflict in updating resource
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      413:
        description: Payload too large
        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:
        sip2: 1
  delete:
    x-mojo-to: SIP2::Institutions#delete
    operationId: deleteSip2Institutions
    tags:
      - sip2_institutions
    summary: Delete institution
    produces:
      - application/json
    parameters:
      - $ref: "../swagger.yaml#/parameters/sip_institution_id_pp"
    responses:
      204:
        description: Institution deleted
      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 deleting resource
        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:
        sip2: 1
