-
Marek Chrastina authoredMarek Chrastina authored
API Documentation
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-11 13:13:08 +0100
Summary
Resource | Operation | Description |
---|---|---|
account-expire | GET /api/v1/account-expire/(login) | Account expiration date |
accounts-to-close | GET /api/v1/accounts-to-close/(category) | Standard accounts close to expiration date |
check-access | POST /api/v1/check-access | Access check to queue |
dedicated-time | GET /api/v1/dedicated-time/(cluster_type) | HPC dedicated time |
graph_affiliation_stats | GET /api/v1/graph_affiliation_stats | Graph affiliation statistics |
graph_research_area_stats | GET /api/v1/graph_research_area_stats | Graph research area statistics |
graph_utilization_stats | GET /api/v1/graph_utilization_stats | Graph utilization statistics |
irregular-accounts-to-close | GET /api/v1/irregular-accounts-to-close | Special accounts close to expiration date |
it4ifree | POST /api/v1/it4ifree/(login) | Free account resources |
it4ifreetoken | GET /api/v1/it4ifreetoken/(login) | Free account token |
motd | GET /api/v1/motd/(category) | SCS messages of the day |
ping | GET /api/v1/ping | Connection test |
quota-extra | GET /api/v1/quota-extra | User extra quota |
version | GET /api/v1/version | API version |
API Details
GET /api/v1/account-expire/
(login)
Access to this service is restricted to just few source ipv4 addresses.
It returns the account expiration date. The account may participates on several projects. If all projects were already finished, there will come a time when the account expires as well. It will happen after:
- 365 days - for all standard accounts
- 31 days - for special (e.g. training) accounts
Query Parameters:
- login – account id
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 is not allowed
Example request:
curl -i https://scs.it4i.cz/api/v1/account-expire/chr0139
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"login": "chr0139",
"projectendtime": "2019-07-25 21:59:59"
}
]
GET /api/v1/accounts-to-close/
(category)
Access to this service is restricted to just few source ipv4 addresses.
The standard account expires 365 days after the date when the last project was finished. This service returns the list of standard accounts which are close to the expiration date. The closeness time interval depends on requested parameter.
Query Parameters:
- first – 93±2 days before expiration date
- second – 31±2 days before expiration date
- third – 7±2 days before expiration date
Response JSON Object:
- fullname (string) – user full name
- login (string) – account id
- projectendtime (string) – project end date
- userclosetime (string) – project end date shifted by 272/334/358 days
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 address is not allowed
Example request:
curl -i https://scs.it4i.cz/api/v1/accounts-to-close/second
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"fullname": "Smith John",
"login": "johnsm",
"projectendtime": "2017-01-08 22:59:59",
"userclosetime": "2017-11-09 22:59:59"
}
]
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 – 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)
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 – no error
- 405 Method Not Allowed – 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"
}
]
GET /api/v1/graph_affiliation_stats
Access to this service is restricted to just few source ipv4 addresses.
It returns graph data useful to plot statistics of using HPC by some affiliations.
Query Parameters:
- height – optional, graph height in pixels, default 300
- width – optional, graph width in pixels, default 420
- sizepct – optional, graph size in percents, default 40
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 address is not allowed
Example request:
curl -i -X GET --data height=50 -d sizepct=50 \
-G https://scs.it4i.cz/api/v1/graph_affiliation_stats
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
"
{
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
height: 50,
width: 420,
},
credits: {
text: 'IT4Innovations 2017-11-14 13:21'
},
title: {
text: ''
},
exporting: {
enabled: false
},
tooltip: {
pointFormat: '{point.percentage:.1f} %'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
size: '50%',
startAngle: 315,
dataLabels: {
enabled: true,
format: '{point.name}',
}
}
},
series: [
{
type: 'pie',
data: [
['IT4Innovations', 143320459.886 ],
['Akademie věd ČR', 67329442.8672 ],
['CEITEC', 41987818.0711 ],
['Masarykova univerzita', 22767491.1453 ],
['VUT Brno', 18184662.5402 ],
['Univerzita Karlova', 15544836.8455 ],
['ČVUT', 12383341.426 ],
['Matematicko-fyzikální fakulta', 4583152.32333 ],
['Uppsala University', 4562701.04 ],
['Others', 36525837.5894 ],
]
}
]
}
"
GET /api/v1/graph_research_area_stats
Access to this service is restricted to just few source ipv4 addresses.
It returns graph data useful to plot statistics of using HPC by various science fields.
Query Parameters:
- height – optional, graph height in pixels, default 300
- width – optional, graph width in pixels, default 420
- sizepct – optional, graph size in percents, default 40
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 address is not allowed
Example request:
curl -i -X GET -G https://scs.it4i.cz/api/v1/graph_research_area_stats
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
"
{
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
height: 300,
width: 420,
},
credits: {
text: 'IT4Innovations 2017-11-14 13:43'
},
title: {
text: ''
},
exporting: {
enabled: false
},
tooltip: {
pointFormat: '{point.percentage:.1f} %'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
size: '40%',
startAngle: 315,
dataLabels: {
enabled: true,
format: '{point.name}',
}
}
},
series: [
{
type: 'pie',
data: [
['Materials Science ', 205656805 ],
['Bio Sciences ', 65319185 ],
['Plasma & Particle Physics ', 21935334 ],
['Service', 20537970 ],
['Engineering ', 15691906 ],
['Informatics', 12335969 ],
['Applied Mathematics', 9458711 ],
['Earth Sciences ', 8804183 ],
['Astro Sciences ', 4229242 ],
['Other Research Areas', 2493851 ],
]
}
]
}
"
GET /api/v1/graph_utilization_stats
Access to this service is restricted to just few source ipv4 addresses.
It returns graph data to plot statistics of HPC week utilization during last 100 days.
Query Parameters:
- height – optional, graph height in pixels, default 300
- width – optional, graph width in pixels, default 420
- sizepct – optional, graph size in percents, default 40
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 address is not allowed
Example request:
curl -i -X GET -G https://scs.it4i.cz/api/v1/graph_utilization_stats
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
"
{
chart: {
zoomType: 'x',
plotBorderWidth: 0,
borderWidth: 0,
borderRadius: 0,
borderColor: '#DDDDDD',
height: 300,
width: 420
},
series: [
{
name: 'Cores utilized',
type: 'areaspline',
data: [
[ Date.UTC(2017,7,6), 18466],
[ Date.UTC(2017,7,7), 18606],
[ Date.UTC(2017,7,8), 19075],
[ Date.UTC(2017,7,9), 19962],
[ Date.UTC(2017,7,10), 20239],
[ Date.UTC(2017,7,11), 20425],
[ Date.UTC(2017,7,12), 20110],
[ Date.UTC(2017,7,13), 19413],
[ Date.UTC(2017,7,14), 20204],
[ Date.UTC(2017,7,15), 20058],
[ Date.UTC(2017,7,16), 19890],
[ Date.UTC(2017,7,17), 18102],
[ Date.UTC(2017,7,18), 18529],
[ Date.UTC(2017,7,19), 18871],
[ Date.UTC(2017,7,20), 18704],
[ Date.UTC(2017,7,21), 17106],
[ Date.UTC(2017,7,22), 17854],
[ Date.UTC(2017,7,23), 19541],
[ Date.UTC(2017,7,24), 19691],
[ Date.UTC(2017,7,25), 19335],
[ Date.UTC(2017,7,26), 20776],
[ Date.UTC(2017,7,27), 20856],
[ Date.UTC(2017,7,28), 21116],
[ Date.UTC(2017,7,29), 21705],
[ Date.UTC(2017,7,30), 17907],
[ Date.UTC(2017,7,31), 18085],
[ Date.UTC(2017,8,1), 18564],
[ Date.UTC(2017,8,2), 17449],
[ Date.UTC(2017,8,3), 17472],
[ Date.UTC(2017,8,4), 17173],
[ Date.UTC(2017,8,5), 14445],
[ Date.UTC(2017,8,6), 17952],
[ Date.UTC(2017,8,7), 18813],
[ Date.UTC(2017,8,8), 17847],
[ Date.UTC(2017,8,9), 16434],
[ Date.UTC(2017,8,10), 14957],
[ Date.UTC(2017,8,11), 15695],
[ Date.UTC(2017,8,12), 15495],
[ Date.UTC(2017,8,13), 11848],
[ Date.UTC(2017,8,14), 9612],
[ Date.UTC(2017,8,15), 9765],
[ Date.UTC(2017,8,16), 11730],
[ Date.UTC(2017,8,17), 12932],
[ Date.UTC(2017,8,18), 12296],
[ Date.UTC(2017,8,19), 11230],
],
color: '#AA4643'
}
],
title: {
text: ''
},
credits: {
text: 'IT4Innovations 2017-11-14 14:14'
},
exporting: {
enabled: false
},
plotOptions: {
areaspline: {
fillOpacity: 0.5
},
pie: {
dataLabels: {
enabled: false
},
showInLegend: true
},
series: {
turboThreshold: 0
},
line: {
marker: {
enabled: false
}
}
},
xAxis: {
type: 'datetime',
title: {
text: 'Date',
style: {
color: '#000000'
}
}
},
yAxis: {
min: 0,
tickInterval: 1000,
title: {
text: 'Cores [-]',
style: {
color: '#000000'
}
}
},
}
"
GET /api/v1/irregular-accounts-to-close
Access to this service is restricted to just few source ipv4 addresses.
The special (e.g. training) account expires 31 days after the date when the last project was finished. This service returns the list of special accounts which are already after this the expiration date.
Response JSON Object:
- login (string) – account id
- projectendtime (string) – project end date
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 address is not allowed
Example request:
curl -i https://scs.it4i.cz/api/v1/irregular-accounts-to-close
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"login": "dd-01",
"projectendtime": "2009-09-19 23:59:59"
}
]
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 – no error
- 405 Method Not Allowed – 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/it4ifreetoken/
(login)
Access to this service is restricted to just few source ipv4 addresses.
It returns free token for the account.
Query Parameters:
- login – account id
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 address is not allowed
Example request:
curl -i https://scs.it4i.cz/api/v1/it4ifreetoken/johnsm
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"it4ifreetoken": "abc"
}
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 – no error
- 405 Method Not Allowed – 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
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/quota-extra
Access to this service is restricted to just few source ipv4 addresses.
Returns all accounts which have active filesystem quotas bigger than standard.
Response JSON Object:
- login (string) – account id
- system_name (string) – computer system name
- filesystem (string) – folder name
- quota_gb (int) – disk usage quota for in GB
- quota_ki (int) – quota for number of files in thousands
- expiration (string) – expiration date
- description (string) – reason for allocation extra quotas
Status Codes:
- 200 OK – no error
- 405 Method Not Allowed – restricted access, your ipv4 is not allowed
Example request:
curl -i curl https://scs.it4i.cz/api/v1/quota-extra
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"login": "johnsm",
"system_name": "anselm",
"filesystem": "HOME",
"quota_gb": 500,
"quota_ki": 1500,
"expiration": "2017-12-31",
"description": "build SW"
}
]
GET /api/v1/version
Returns basic information about API.
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"
}
©2017, IT4Innovations. | Powered by Sphinx 1.5.6 & Alabaster 0.7.10