Terrain Discovery Environment API website screenshot

Terrain Discovery Environment API

Terrain is the primary REST API gateway for CyVerse's Discovery Environment (DE), an open-source data science workbench. Terrain validates user authentication via Keycloak/JWT and orchestrates calls to backend microservices covering filesystem operations, application management, data analysis, metadata annotation, notifications, and persistent identifier management.

1 APIs 0 Features
BioinformaticsData ScienceLife SciencesFilesystemCloud ComputingOpen Source

APIs

Terrain API

The Terrain API is the main entry-point REST service for the CyVerse Discovery Environment. It handles authentication via Keycloak JWT tokens and orchestrates calls to backend s...

Collections

Pricing Plans

Rate Limits

FinOps

Semantic Vocabularies

Terrain Discovery Environment Api Context

29 classes · 0 properties

JSON-LD

API Governance Rules

Terrain Discovery Environment API API Rules

8 rules · 1 errors 5 warnings 2 info

SPECTRAL

JSON Structure

Terrain Filesystem Structure

0 properties

JSON STRUCTURE

Example Payloads

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
Repository
Repository
🌐
Portal
Portal
🔗
Webinar
Webinar
🔑
Authentication
Authentication

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Terrain Discovery Environment API
  version: '2026.04'
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Authentication
    type: folder
  items:
  - info:
      name: Get Keycloak Token
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/token/keycloak
    docs: Obtain an OAuth access token from Keycloak for authenticating with Terrain.
- info:
    name: Filesystem
    type: folder
  items:
  - info:
      name: List Directory
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/filesystem/directory
      params:
      - name: path
        value: ''
        type: query
        description: The iRODS path of the directory to list
      - name: limit
        value: ''
        type: query
        description: Maximum number of entries to return
      - name: offset
        value: ''
        type: query
        description: Pagination offset
      - name: sort-col
        value: ''
        type: query
        description: Column to sort by (name, size, date-created, date-modified)
      - name: sort-dir
        value: ''
        type: query
        description: Sort direction
    docs: Lists the contents of a directory in the iRODS data store.
  - info:
      name: Create Directory
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/directory/create
      body:
        type: json
        data: '{}'
    docs: Creates a new directory in the iRODS data store.
  - info:
      name: Get Root Directory
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/filesystem/root
    docs: Returns the root directory listing for the authenticated user.
  - info:
      name: Get File Stats
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/filesystem/stat
      params:
      - name: path
        value: ''
        type: query
        description: iRODS path of the file or directory
    docs: Returns metadata and statistics for one or more files or directories.
  - info:
      name: Check Path Exists
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/filesystem/exists
      params:
      - name: path
        value: ''
        type: query
        description: iRODS path to check
    docs: Checks whether one or more paths exist in iRODS.
  - info:
      name: Move Files
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/move
      body:
        type: json
        data: '{}'
    docs: Moves one or more files or directories to a new location in iRODS.
  - info:
      name: Rename File
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/rename
      body:
        type: json
        data: '{}'
    docs: Renames a file or directory in iRODS.
  - info:
      name: Delete Files
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/delete
      body:
        type: json
        data: '{}'
    docs: Moves one or more files or directories to the user's trash.
  - info:
      name: Empty Trash
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/delete-contents
    docs: Permanently deletes all items in the user's trash directory.
- info:
    name: Search
    type: folder
  items:
  - info:
      name: Search Filesystem
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/filesystem/search
      params:
      - name: search
        value: ''
        type: query
        description: Search query string
      - name: limit
        value: ''
        type: query
        description: Maximum results to return
      - name: offset
        value: ''
        type: query
        description: Pagination offset
      - name: type
        value: ''
        type: query
        description: Filter by object type
    docs: Performs a full-text search across the iRODS data store.
- info:
    name: Metadata
    type: folder
  items:
  - info:
      name: Get File Metadata
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/filesystem/metadata
      params:
      - name: path
        value: ''
        type: query
        description: iRODS path of the object
    docs: Returns metadata AVU (attribute-value-unit) triples for a file or directory.
  - info:
      name: Set File Metadata
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/metadata
      body:
        type: json
        data: '{}'
    docs: Sets metadata AVU triples on a file or directory.
- info:
    name: Sharing
    type: folder
  items:
  - info:
      name: Share Data with Users
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/share
      body:
        type: json
        data: '{}'
    docs: Shares files or directories with specified users.
  - info:
      name: Unshare Data
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/filesystem/unshare
      body:
        type: json
        data: '{}'
    docs: Removes sharing permissions for specified users on files or directories.
- info:
    name: Apps
    type: folder
  items:
  - info:
      name: List Apps
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/apps
      params:
      - name: search
        value: ''
        type: query
        description: Filter apps by name or description
      - name: limit
        value: ''
        type: query
        description: Maximum number of apps to return
      - name: offset
        value: ''
        type: query
        description: Pagination offset
      - name: sort-field
        value: ''
        type: query
        description: Field to sort by
      - name: sort-dir
        value: ''
        type: query
        description: Sort direction
    docs: Lists available applications in the Discovery Environment.
  - info:
      name: Get App
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/apps/:app-id
      params:
      - name: app-id
        value: ''
        type: path
        description: The application UUID
      - name: system-id
        value: ''
        type: query
        description: The app system (e.g., de, tapis)
    docs: Returns details for a specific application.
  - info:
      name: List App Categories
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/apps/categories
    docs: Returns a list of application categories for browsing.
- info:
    name: Analyses
    type: folder
  items:
  - info:
      name: List Analyses
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/analyses
      params:
      - name: limit
        value: ''
        type: query
        description: Maximum number of analyses to return
      - name: offset
        value: ''
        type: query
        description: Pagination offset
      - name: sort-field
        value: ''
        type: query
        description: Field to sort by
      - name: filter
        value: ''
        type: query
        description: JSON filter expression
    docs: Lists job analyses (runs) for the current user.
  - info:
      name: Submit Analysis
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/analyses
      body:
        type: json
        data: '{}'
    docs: Submits a new analysis job for execution.
  - info:
      name: Get Analysis
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/analyses/:analysis-id
      params:
      - name: analysis-id
        value: ''
        type: path
        description: The analysis UUID
    docs: Returns details and status for a specific analysis job.
  - info:
      name: Delete Analysis
      type: http
    http:
      method: DELETE
      url: https://de.cyverse.org/terrain/secured/analyses/:analysis-id
      params:
      - name: analysis-id
        value: ''
        type: path
    docs: Deletes a completed analysis from the user's history.
  - info:
      name: Stop Analysis
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/analyses/:analysis-id/stop
      params:
      - name: analysis-id
        value: ''
        type: path
        description: The analysis UUID
    docs: Stops a running analysis job.
- info:
    name: Notifications
    type: folder
  items:
  - info:
      name: List Notifications
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/notifications
      params:
      - name: limit
        value: ''
        type: query
        description: Maximum notifications to return
      - name: offset
        value: ''
        type: query
        description: Pagination offset
      - name: seen
        value: ''
        type: query
        description: Filter by read/unread status
    docs: Returns a list of notifications for the current user.
  - info:
      name: Mark All Notifications Seen
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/notifications/mark-all-seen
    docs: Marks all notifications as read for the current user.
- info:
    name: Identifiers
    type: folder
  items:
  - info:
      name: List Permanent Id Requests
      type: http
    http:
      method: GET
      url: https://de.cyverse.org/terrain/secured/permanent-id-requests
    docs: Lists all permanent identifier (DOI) requests for the current user.
  - info:
      name: Create Permanent Id Request
      type: http
    http:
      method: POST
      url: https://de.cyverse.org/terrain/secured/permanent-id-requests
      body:
        type: json
        data: '{}'
    docs: Submits a request to assign a DOI or other permanent identifier to a dataset.
bundled: true