Stuudiumi API


API kasutamiseks vajad Stuudiumilt saadud CLIENT_ID ja CLIENT_SECRET võtmeid.

Oma rakenduse tuvastamiseks saada päringutega kaasa Authorization HTTP header, mille väärtuse genereerid allkirjeldatud loogika järgi:

timestamp = praegune_unix_timestamp() # näiteks: 1599100000

random = "10 kuni 30 märki pikk *iga päringu jaoks eraldi genereeritud* suvaline väärtus (nonce). Näiteks cMac6zfLOG08BeMvTpYK"

signature = "40 märgi pikkune HMAC-SHA1 allkiri, HEX kujul"

Authorization päise väärtus:
"Data v2 <CLIENT_ID> <timestamp> <random> <signature>"

Näiteks:

"Authorization: Data v2 SINU_RAKENDUSE_CLIENT_ID 1599100000 cMac6zfLOG08BeMvTpYK 1e4d2ca681396345d3e6b33675c3ee86f6e65e3c"

Allkirja genereerimine:

  • algorithm: SHA-1
  • allkirjastatavad andmed: <timestamp> + "tühik" + <random>
  • võti: rakenduse salajane võti ehk CLIENT_SECRET

Näiteks: kui timestamp on 1599100000 ja suvaline väärtus on cMac6zfLOG08BeMvTpYK, siis loo allkiri nii:

signature = hash_hmac("sha1", "1599100000 cMac6zfLOG08BeMvTpYK", "RAKENDUSE_SALAJANE_VÕTI")

Tulemus → 1e4d2ca681396345d3e6b33675c3ee86f6e65e3c

Kui testid siin lehel olevate näidis-väärtustega allkirja genereerimist, pead saama samade andmetega tulemuseks sama allkirja väärtuse (1e4d2…).


Uus Sama algoritmi järgi genereeritud (Data v2 …) allkiri on ka Stuudiumist sinu rakenduse suunal tulevate API päringute Stuudium-Auth päises, “sidumine päevikute/õppetööga” lehel alapunkt 7 all kirjeldatud webhook-ide puhul.

Allkirja kontrollimisel peaks sinu rakendus kontrollima, et timestamp väärtus ei ole päringu saamise hetkest liiga kaugel tulevikus/minevikus. Näiteks võid lubada päringud timestamp-iga, mis on päringu ajahetkest ±15 minuti kaugusel.