From cf32111bc1267c854bc184f97a3c482139afeb69 Mon Sep 17 00:00:00 2001 From: Marek Chrastina <marek.chrastina@vsb.cz> Date: Fri, 8 Dec 2017 15:13:40 +0100 Subject: [PATCH] is/scs-api#4 Added apidocs --- docs.it4i/apidocs.md | 379 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 379 insertions(+) create mode 100644 docs.it4i/apidocs.md diff --git a/docs.it4i/apidocs.md b/docs.it4i/apidocs.md new file mode 100644 index 000000000..141eae58d --- /dev/null +++ b/docs.it4i/apidocs.md @@ -0,0 +1,379 @@ + + + + +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](#post--api-v1-check-access) | Access check to queue + dedicated-time | [GET /api/v1/dedicated-time/(cluster\_type)](#get--api-v1-dedicated-time-cluster_type) | HPC dedicated time + it4ifree | [POST /api/v1/it4ifree/(login)](#post--api-v1-it4ifree-login) | Free account resources + motd | [GET /api/v1/motd/(category)](#get--api-v1-motd-category) | SCS messages of the day + ping | [GET /api/v1/ping](#get--api-v1-ping) | Connection test + version | [GET /api/v1/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: - [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/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](http://sphinx-doc.org/) & [Alabaster +0.7.10](https://github.com/bitprophet/alabaster) + -- GitLab