Skip to content
Snippets Groups Projects

API Documentation_public

Implements API for IT4I SCS Information System.

  • api revision: 9eb0678f / 2017-12-08 11:06:12 +0100
  • api version: 0.9-11-g9eb0678
  • apidoc building date: 2017-12-08 15:01:48 +0100

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 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 {#post--api-v1-check-access}

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

Request JSON Object:

- **login** (*string*) – account id
- **queue** (*string*) – queue id
- **pid** (*string*) – project id, not required if querying projectless queue

Status Codes:

- [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1)
     – no error

**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/(cluster_type) {#get--api-v1-dedicated-time-cluster_type}

:   Returns list of times dedicated for HPC maintainance. It is not
possible to use HPC services during maintainance.

Query Parameters:

- **all** – returns all dedicated times for all clusters
- **salomon** – returns all times just for salomon cluster
- **anselm** – returns all times just for anselm 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

Status Codes:

- [200
    OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1)
     – no error
- [405 Method Not
    Allowed](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6)
     – invalid requested query parameter

**Example request**:

    curl -i curl 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/it4ifree/(login) {#post--api-v1-it4ifree-login}

:   A service to check resources of the projects on which the account
participate. If the calculation run on 1 cpu core during 1 hour, it
consumes 1 core-hour from the project resources. However, some
calculations (or their placement) can be cheaper. Actual consumed
core-hours are reduced by a cheaping factor and then deduct from the
project resources. See
<https://docs.it4i.cz/salomon/resources-allocation-policy/#normalized-core-hours-nch>
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)

Request JSON Object:

- **login** (*string*) – account id
- **it4ifreetoken** (*string*) – token

Response JSON Object:

- **login** (*string*) – account id
- **pid** (*string*) – project id
- **pi\_login** (*string*) – account id which is PI
- **days\_left** (*string*) – days to the end of project,
    `---` if project is inactive or not yet
    started
- **free** (*int*) – free core-hours which can be still 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:

- [200
    OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1)
     – no error
- [405 Method Not
    Allowed](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6)
     – token does not match

**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,
          "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,
          "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"
        },
        {
          "core_hours": 0,
          "core_hours_with_factor": 0,
          "login": "johnsm",
          "pi_login": "johnsm",
          "pid":"DD-13-6"
        }
      ]
    }
GET /api/v1/motd/(category) {#get--api-v1-motd-category}

Returns SCS messages of the day.

Query Parameters:

- **notice** – returns only notice messages
- **important** – returns only important messages
- **all** – returns all messages

Status Codes:

- [200
    OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1)
     – no error
- [405 Method Not
    Allowed](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6)
     – invalid requested query parameter

**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 {#get--api-v1-ping}

A service for testing connection to API.

  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 {#get--api-v1-version}

:   Returns basic information about API.

Status Codes:

- [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – no error

**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"
    }

©2017, IT4Innovations. | Powered by Sphinx 1.5.6 & Alabaster 0.7.10