Utrecht University Research API

The research API from Utrecht University — 13 operation(s) for research.

Operations 13

POST /research_folder_add Add a new folder to a research folder #
POST /research_folder_copy Copy a folder in a research folder #
POST /research_folder_move Move a folder in a research folder #
POST /research_folder_rename Rename an existing research folder #
POST /research_folder_delete Delete a research folder #
POST /research_list_temporary_files Get list of temporary files to be cleaned up #
POST /research_file_copy Copy a file in a research folder #
POST /research_file_rename Rename a file in a research folder #
POST /research_file_move Move a file in a research folder #
POST /research_file_delete Delete a file in a research folder #
POST /research_system_metadata Return collection statistics as JSON #
POST /research_collection_details Return details of a research collection #
POST /research_manifest Produce a manifest of data objects in a collection #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/utrecht-research-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

utrecht-research-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Yoda core ruleset containing iRODS and Python rules and policies useful for all Yoda environments.
  contact:
    email: l.r.westerhof@uu.nl
  version: 2.1.0
  title: Yoda core Research API
servers:
- url: https://portal.yoda.test/api
  description: Local Yoda development server
security:
- cookieAuth: []
- basicAuth: []
tags:
- name: Research
paths:
  /research_folder_add:
    post:
      tags:
      - Research
      summary: Add a new folder to a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - coll
              - new_folder_name
              properties:
                coll:
                  type: string
                  description: Collection to create new folder in
                  default: null
                new_folder_name:
                  type: string
                  description: Name of the new folder
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFolderAdd
      x-operation-id-source: derived
  /research_folder_copy:
    post:
      tags:
      - Research
      summary: Copy a folder in a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - folder_path
              - new_folder_path
              properties:
                folder_path:
                  type: string
                  description: Path to the folder to copy
                  default: null
                new_folder_path:
                  type: string
                  description: Path to the new copy of the folder
                  default: null
                overwrite:
                  type: boolean
                  description: Overwrite folder if it already exists
                  default: 'False'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFolderCopy
      x-operation-id-source: derived
  /research_folder_move:
    post:
      tags:
      - Research
      summary: Move a folder in a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - folder_path
              - new_folder_path
              properties:
                folder_path:
                  type: string
                  description: Path to the folder to move
                  default: null
                new_folder_path:
                  type: string
                  description: Path to the new folder
                  default: null
                overwrite:
                  type: boolean
                  description: Overwrite folder if it already exists
                  default: 'False'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFolderMove
      x-operation-id-source: derived
  /research_folder_rename:
    post:
      tags:
      - Research
      summary: Rename an existing research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - new_folder_name
              - coll
              - org_folder_name
              properties:
                new_folder_name:
                  type: string
                  description: New folder name
                  default: null
                coll:
                  type: string
                  description: Parent collection of folder
                  default: null
                org_folder_name:
                  type: string
                  description: Current name of the folder
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFolderRename
      x-operation-id-source: derived
  /research_folder_delete:
    post:
      tags:
      - Research
      summary: Delete a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - coll
              - folder_name
              properties:
                coll:
                  type: string
                  description: Parent collection of folder to delete
                  default: null
                folder_name:
                  type: string
                  description: Name of folder to delete
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFolderDelete
      x-operation-id-source: derived
  /research_list_temporary_files:
    post:
      tags:
      - Research
      summary: Get list of temporary files to be cleaned up
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - coll
              properties:
                coll:
                  type: string
                  description: Parent collection of folder to delete
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchListTemporaryFiles
      x-operation-id-source: derived
  /research_file_copy:
    post:
      tags:
      - Research
      summary: Copy a file in a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - filepath
              - new_filepath
              properties:
                filepath:
                  type: string
                  description: Path to the file to copy
                  default: null
                new_filepath:
                  type: string
                  description: Path to the new copy of the file
                  default: null
                overwrite:
                  type: boolean
                  description: Overwrite file if it already exists
                  default: 'False'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFileCopy
      x-operation-id-source: derived
  /research_file_rename:
    post:
      tags:
      - Research
      summary: Rename a file in a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - new_file_name
              - coll
              - org_file_name
              properties:
                new_file_name:
                  type: string
                  description: New file name
                  default: null
                coll:
                  type: string
                  description: Parent collection of file
                  default: null
                org_file_name:
                  type: string
                  description: Current name of the file
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFileRename
      x-operation-id-source: derived
  /research_file_move:
    post:
      tags:
      - Research
      summary: Move a file in a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - filepath
              - new_filepath
              properties:
                filepath:
                  type: string
                  description: Path to the file to move
                  default: null
                new_filepath:
                  type: string
                  description: Path to the new location of the file
                  default: null
                overwrite:
                  type: boolean
                  description: Overwrite file if it already exists
                  default: 'False'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFileMove
      x-operation-id-source: derived
  /research_file_delete:
    post:
      tags:
      - Research
      summary: Delete a file in a research folder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - coll
              - file_name
              properties:
                coll:
                  type: string
                  description: Parent collection of file to delete
                  default: null
                file_name:
                  type: string
                  description: Name of file to delete
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchFileDelete
      x-operation-id-source: derived
  /research_system_metadata:
    post:
      tags:
      - Research
      summary: Return collection statistics as JSON
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - coll
              properties:
                coll:
                  type: string
                  description: Research collection
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchSystemMetadata
      x-operation-id-source: derived
  /research_collection_details:
    post:
      tags:
      - Research
      summary: Return details of a research collection
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - path
              properties:
                path:
                  type: string
                  description: Path to research collection
                  default: null
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchCollectionDetails
      x-operation-id-source: derived
  /research_manifest:
    post:
      tags:
      - Research
      summary: Produce a manifest of data objects in a collection
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - coll
              properties:
                coll:
                  type: string
                  description: Parent collection of data objects to include
                  default: null
                empty_colls:
                  type: boolean
                  description: Include empty collections in manifest
                  default: 'False'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  status_info:
                    type:
                    - string
                    - 'null'
                  data: {}
        '400':
          $ref: '#/components/responses/status_400'
        '500':
          $ref: '#/components/responses/status_500'
      operationId: postResearchManifest
      x-operation-id-source: derived
components:
  responses:
    status_400:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/result_error'
    status_500:
      description: Internal error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/result_error'
  schemas:
    result_error:
      type: object
      properties:
        status:
          type: string
          description: Holds an error ID
        status_info:
          type: string
          description: Holds a human-readable error description
        data:
          description: empty
          type:
          - object
          - 'null'
  securitySchemes:
    cookieAuth:
      in: cookie
      type: apiKey
      name: yoda_session
    basicAuth:
      type: http
      scheme: basic