Skip to content

API Documentation

Implements API for IT4I SCS Information System.

There is a PyPI package, which provides a simple user-friendly shell interface to call API requests and display their response. The package is available on https://pypi.org/project/it4i.portal.clients

The number of requests you may make to IT4I API is limited. The rate limit can be changed without prior notice at any time, but the default is 6 requests per minute. Exceeding the limit will lead to your IP address being temporarily blocked from making further requests. The block will automatically be lifted by waiting an hour.

  • api revision: e511caad / 2020-09-03 13:48:04 +0200

  • api version: 0.9-248-ge511caa

  • apidoc building date: 2020-09-03 11:49:01 +0000

Summary

Resource

Operation

Description

check-access

POST /api/v1/check-access

Access check to queue

dedicated-time

GET /api/v1/dedicated-time/(cluster_type)

HPC dedicated time

dedicated-time-calendar

GET /api/v1/dedicated-time-calendar

Dedicated time calendar

fs-usage

POST /api/v1/fs-usage

Shows filesystem usage

it4ifree

POST /api/v1/it4ifree/(login)

Free account resources

motd

GET /api/v1/motd/(category)

SCS messages of the day

ping

GET /api/v1/ping

Connection test

version

GET /api/v1/version

API version

API Details

POST /api/v1/check-access

A service to check if an account and/or related project has an access to a specified queue.

Terminal implementation is available at it4icheckaccess

Request JSON Object

  • login (string) – account id

  • queue (string) – queue id

  • pid (string) – project id, not required if querying a projectless queue

Status Codes

Example request:

curl -i -H "Content-Type:application/json" -X POST \
  --data '{"pid":"DD-13-5","login":"johnsm","queue":"qfat"}' \
  https://scs.it4i.cz/api/v1/check-access

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

  "OK Access granted for regular queue."

GET /api/v1/dedicated-time-calendar

A service with a public dedicated time calendar.

GET /api/v1/dedicated-time/(cluster_type)

Returns a list of times dedicated for HPC maintenance. During maintenance, HPC services are not available.

Terminal implementation is available at it4idedicatedtime

Query Parameters

  • all – returns all dedicated times for all clusters

  • salomon – returns all times just for the Salomon cluster

  • anselm – returns all times just for the Anselm cluster

  • barbora – returns all times just for the Barbora cluster

  • dgx – returns all times just for the DGX-2 cluster

  • active – returns dedicated times for all clusters which are now active

  • planned – returns dedicated times for all clusters which are now active or scheduled in the future

Response JSON Object

  • cluster_type (string) – cluster id

  • dateEfficiency (string) – maintenance start date

  • dateExpiration (string) – maintenance end date

  • updated_at (string) – date of the list’s last update

Status Codes

Example request:

curl -i https://scs.it4i.cz/api/v1/dedicated-time/all

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

[
  {
    "cluster_type": "salomon",
    "dateEfficiency": "2017-11-21 09:45:00",
    "dateExpiration": "2017-11-21 23:59:00",
    "updated_at": "2017-11-21 09:45:00"
  }
]

POST /api/v1/fs-usage

A service to show filesystem usage.

Terminal implementation is available at it4ifsusage

Request JSON Object

  • login (string) – account id

  • it4ifreetoken (string) – token

  • cluster (string) – cluster id or ‘all’

Response JSON Object

  • cluster (string) – cluster id or ‘all’

  • fs (string) – filesystem name

  • hard_quota_files (int) – file number quota

  • hard_quota_space (int) – space quota (in Kb)

  • ldapuser (string) – user id

  • updated_at (string) – date of last update

  • usage_files (int) – number of files on filesystem

  • usage_space (int) – amount of space used

Status Codes

Example request:

curl -i -H "Content-Type:application/json" -X POST \
  --data '{"login":"johnsm", "it4ifreetoken": "abc","cluster":"all"}' \
  https://scs.it4i.cz/api/v1/fs-usage

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

  [
    {
      "cluster": "anselm",
      "fs": "/home",
      "hard_quota_files": 500000,
      "hard_quota_space": 250000000,
      "ldapuser": "johnsm",
      "updated_at": "2019-03-11 13:25:16",
      "usage_files": 19,
      "usage_space": 2620
    }
  ]

POST /api/v1/it4ifree/(login)

A service to check resources of the projects on which the account participates. If the calculation runs on 1 CPU core for 1 hour, it consumes 1 core-hour from the project’s resources. However, some calculations (or their placement) can be cheaper. Actual consumed core-hours are reduced by a cheapening factor and then deducted from the project’s resources. See link for more details about so-called normalized core-hours. The JSON response contains two parts:

  • me – data from projects, where the account has access
  • me_as_pi – data from projects, where the account is PI (primary investigator)

    Terminal implementation is available at it4ifree

Request JSON Object

  • login (string) – account id

  • it4ifreetoken (string) – token

Response JSON Object

  • login (string) – account id

  • pi_login (string) – PI account id

  • pid (string) – project id

  • type (string) – project type, S for standard, M-1, M-2, M-3, M-4 for multiyear project in particular period

  • days_left (string) – days to the end of project, or inactive, expired, forthcoming, upcoming, unlimited

  • free (int) – free core-hours which can still be consumed

  • total (int) – total core-hours assigned to the project

  • used (int) – actual consumed core-hours

  • used_with_factor (int) – consumed normalized core-hours

  • used_by_me (int) – core-hours consumed by the account

  • used_by_me_with_factor (int) – normalized core-hours consumed by the account

  • corehours (int) – core-hours consumed by the account

  • core_hours_with_factor (int) – normalized core-hours consumed by the account

Status Codes

Example request:

curl -i -H "Content-Type:application/json" -X POST \
  --data '{"login":"johnsm", "it4ifreetoken": "abc"}' \
  https://scs.it4i.cz/api/v1/it4ifree/johnsm

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "me": [
    {
      "days_left": "---",
      "free": 17124,
      "login": "johnsm",
      "pid": "DD-13-6",
      "total": 100000,
      "type": "S",
      "used": 82876,
      "used_by_me": 0,
      "used_by_me_with_factor": 0,
      "used_with_factor":82876
    },
    {
      "days_left": "---",
      "free": 0,
      "login": "johnsm",
      "pid": "DD-14-12",
      "total": 1000,
      "used": 8641,
      "type": "S",
      "used_by_me": 0,
      "used_by_me_with_factor": 0,
      "used_with_factor": 8641
    }
  ],
  "me_as_pi": [
    {
      "core_hours": 82876,
      "core_hours_with_factor": 82876,
      "login":"abc",
      "pi_login": "johnsm",
      "pid": "DD-13-6",
      "type": "S"
    },
    {
      "core_hours": 0,
      "core_hours_with_factor": 0,
      "login": "johnsm",
      "pi_login": "johnsm",
      "pid":"DD-13-6",
      "type": "S"
    },
    {
      "core_hours": 0,
      "core_hours_with_factor": 0,
      "login": "johnsm",
      "pi_login": "johnsm",
      "pid":"DD-1-1",
      "type": "M-1"
    }
  ]
}

GET /api/v1/motd/(category)

Returns SCS messages of the day.

Terminal implementation is available at it4imotd

Query Parameters

  • notice – returns only notice messages

  • important – returns only important messages

  • all – returns all messages

Response JSON Object

  • author (string) – author of the message

  • category (string) – message category

  • created_at (string) – creation date

  • dateEfficiency (string) – effective date

  • dateExpiration (string) – expiration date

  • dateModification (string) – date the message was modified

  • deleted_at (string) – date the message was deleted

  • id (int) – message id

  • messageBody (string) – the text of the message

  • state (string) – obsolete, no longer used

  • title (string) – the title of the message

  • typeMotd (string) – obsolete, no longer used

  • updated_at (string) – date of the list’s last update

Status Codes

Example request:

curl -i https://scs.it4i.cz/api/v1/motd/notice

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

[
  {
    "author": "svi47",
    "category": "notice",
    "created_at": "2017-10-12 11:44:51",
    "dateEfficiency": "2017-10-12 11:41:00",
    "dateExpiration": "2017-11-28 14:30:00",
    "dateModification": "2017-10-12 13:44:51",
    "deleted_at": null,
    "id": 169,
    "messageBody": "For more information about the course,
      please visit its web page: https://goo.gl/cvFsFH",
    "state": null,
    "title": "Invitation to the Course Productivity Tools
      for High Performance Computing (2017-11-27 to 2017-11-28)",
    "typeMotd": null,
    "updated_at": "2017-10-12 11:44:51"
  }
]

GET /api/v1/ping

A service for testing connection to API.

Response JSON Object

  • message (string) – reply message ‘pong’

Status Codes

Example request:

curl -i https://scs.it4i.cz/api/v1/ping

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

{
   "message": "pong"
}

GET /api/v1/version

Returns basic information about the API.

Response JSON Object

  • hostname (string) – system hostname

  • revision (string) – API revision / build time

  • version (string) – API version

Status Codes

Example request:

curl -i https://scs.it4i.cz/api/v1/version

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

{
   "hostname": "scs.it4i.cz",
   "revision": "ceac8aa / 2017-11-01 12:25:27 +0100",
   "version": "0.8.2-34-gceac8aa"
}

Comments