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…).


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.