SCEDULY REST API Documentation
Introduction
SCEDULY REST API provides a standardized interface for interacting with the SCEDULY system. Communication is performed via the HTTPS version of the HTTP protocol using standard GET and POST methods for data transfer. Requests and responses are formatted using the JSON format.
Authentication
SCEDULY REST API uses the HMAC-SHA256 method to calculate the request signature. Each request must contain a minimum of 3 parameters required for authentication: user, institutionID, signature.
* HTTP_REQUEST_METHOD: GET or POST
* institutionID: institution ID in the SCEDULY system
* RequestURI: requested resource (ex: "/users/tuitions")
* Date: CEST (UTC+2), in format YYYY-MM-DD HH:ii (current: 2023-02-01 19:23)
* CRLF: Carriage return (char(13)) + Line feed (char(10))
Signature calculation:
data = HTTP_REQUEST_METHOD + CRLF institutionID + CRLF RequestURI + CRLF Date signature = HMAC-SHA256(data, password)
* institutionID: institution ID in the SCEDULY system
* RequestURI: requested resource (ex: "/users/tuitions")
* Date: CEST (UTC+2), in format YYYY-MM-DD HH:ii (current: 2023-02-01 19:23)
* CRLF: Carriage return (char(13)) + Line feed (char(10))
Example in PHP:
$data = 'GET' . "\r\n" . '999' . "\r\n" . '/users/tuitions' . "\r\n" . '2022-12-31 23:59'; $signature = hash_hmac('sha256', $data, '1234'); //6408cd6a53e6ecbfaa026c9f823dc36712d3dc810d366851d310570425b6a60c
Limitations
Only one connection at a time is allowed. Retrieving data with simultaneous (parallel/concurrent) connections can lead to account suspension!
Requests with network transmission time of up to 59 seconds will be accepted 100% of the time. Requests that arrive 2 or more minutes after they are signed will not be processed.
Requests with network transmission time of up to 59 seconds will be accepted 100% of the time. Requests that arrive 2 or more minutes after they are signed will not be processed.
/users/tuitions
Retrieves a list of tuition fees for accounting purposes (invoices).
Parameters:
Response:
Parameters:
Parameter | Type | Required | Description |
---|---|---|---|
user | string | Yes | Your Sceduly REST API username |
institutionID | integer | Yes | Data request for specified institution |
signature | string | Yes | HMAC-SHA256 signature |
personIDNumber | string | No | Data request for individual person |
year | integer | No | Academic year (when not specified - default value: current year) |
Example:
Request:https://api.sceduly.com/users/tuitions?user=test&institutionID=999&signature=7e745d74b69b7f69da11deb4bc24adccb69bc28138c95947a56e35826c62e8e2
Response:
[ { "personIDNumber": "00123456789", "firstName": "Ivona", "lastName": "Ivić", "address": "Dioklecijanova 1, Split", "email": "iivic@uniname.hr", "tuition": "8000.0000" }, { "personIDNumber": "11123456788", "firstName": "Mate", "lastName": "Matić", "address": null, "email": "mmatic@uniname.hr", "tuition": "7000.0000" } ]
/timetable/overview
Retrieves a timetable data for specified date interval and location.
Parameters:
Response:
Parameters:
Parameter | Type | Required | Description |
---|---|---|---|
user | string | Yes | Your Sceduly REST API username |
institutionID | integer | Yes | Data request for specified institution |
signature | string | Yes | HMAC-SHA256 signature |
location | string | Yes | Location (subsidiary) |
startDate | string | No | yyyy-mm-dd (when not specified - default value: current month) |
endDate | string | No | yyyy-mm-dd (when not specified - default value: current month) |
Example:
Request:https://api.sceduly.com/timetable/overview?user=test&institutionID=999&location=pmf-split&startDate=2022-01-01&endDate=2022-01-31&signature=7e745d74b69b7f69da11deb4bc24adccb69bc28138c95947a56e35826c62e8e2
Response:
[ { "eventID": "213512", "startDate": "2022-01-16", "endDate": "2022-02-21", "startTime": "09:15", "endTime": "12:00", "repetition": "1", "classroom": "A1", "subjectName": "Osnove elektrotehnike I", "teachingType": "P", "groupID": "988", "lecturers": [ { "userID": "498", "role": "1", "firstName": "Ivan", "lastName": "Horvat" } ], "notes": "Gost predavanje" } ]