Timora ओपन API
विश्वविद्यालयों की समय-सारिणी अपने बॉट, वेबसाइट या ऐप से जोड़ें। छात्र का निजी डेटा — प्रोफ़ाइल, ग्रेड, डेडलाइन और प्रमाणपत्र — सिर्फ़ उसकी सहमति से, «Timora से साइन इन» के ज़रिए। सिर्फ़ पढ़ने की पहुँच।
क्या मिल सकता है
API कौन-सा डेटा देता है
सार्वजनिक
प्रोजेक्ट टोकन काफ़ी है। वही डेटा जो वेबसाइट पर बिना साइन इन के दिखता है।
institutionsविश्वविद्यालय और कॉलेज: नाम, शहर, क्या उपलब्ध हैgroupsविश्वविद्यालय के अध्ययन ग्रुपscheduleग्रुप की दिनवार कक्षाएँ — एक अनुरोध में 31 दिन तकteachersशिक्षक (SibSUTIS)examsपरीक्षाएँ, क्रेडिट टेस्ट और परामर्श
छात्र की सहमति से
छात्र खुद तय करता है कि किन सेक्शन की पहुँच देनी है, और इसे कभी भी वापस ले सकता है।
profileनाम, ग्रुप और विश्वविद्यालयscheduleछात्र के ग्रुप की समय-सारिणीgradesEIOS से ग्रेडdeadlinesEIOS कोर्स के बाकी असाइनमेंट और टेस्टcertificatesप्रमाणपत्र अनुरोध और उनकी स्थिति
पहुँच कैसे पाएँ
पहले अनुरोध तक चार कदम
प्रोजेक्ट के बारे में बताएँ: वह क्या करता है, कौन-सा डेटा चाहिए, कोड कहाँ होगा। अगर GitHub पर है — लिंक भेजें।
Timora का उल्लेख, GitHub पर सह-लेखन, सुरक्षा आवश्यकताएँ — इसी पेज पर नीचे।
tmr_… टोकन व्यक्तिगत रूप से दिया जाता है और एक बार दिखाया जाता है। Timora में सिर्फ़ उसका फ़िंगरप्रिंट रहता है — खो जाए तो नया देंगे।
API पता — https://mytimora.ru/api/v1, हेडर — Authorization: Bearer tmr_…।
Timora से साइन इन
निजी डेटा — सिर्फ़ सहमति से
छात्र साइन इन की पुष्टि वहीं करता है जहाँ वह पहले से किसी भी तरीके से Timora में साइन इन है: iOS और Android ऐप में, Telegram बॉट में या Telegram और VK मिनी ऐप में। आपका प्रोजेक्ट न पासवर्ड देखता है, न साइन इन का डेटा।
नियम
प्रोजेक्ट्स के लिए आवश्यकताएँ
टोकन लेकर आप ये शर्तें स्वीकार करते हैं। उल्लंघन होने पर टोकन बिना चेतावनी के रद्द कर दिया जाता है — आपके प्रोजेक्ट तक सभी छात्रों की पहुँच के साथ।
Timora का उल्लेख
- प्रोजेक्ट के इंटरफ़ेस में — mytimora.ru के लिंक के साथ «Timora द्वारा संचालित»: «ऐप के बारे में» स्क्रीन पर, वेबसाइट के फ़ुटर में या बॉट के विवरण में।
- README और विवरण में — कि प्रोजेक्ट Timora ओपन API उपयोग करता है।
- Timora का नाम, लोगो और डिज़ाइन अपना बताकर नहीं दिखाया जा सकता। प्रोजेक्ट Timora का आधिकारिक क्लाइंट जैसा नहीं दिखना चाहिए।
GitHub
- अगर प्रोजेक्ट का कोड GitHub पर है (सार्वजनिक या निजी रिपॉज़िटरी) — @y0rence को सहयोगी के रूप में जोड़ें: Settings → Collaborators → Add people।
- README में योगदानकर्ताओं (Contributors) के सेक्शन में @y0rence का उल्लेख करें।
टोकन की सुरक्षा
- प्रोजेक्ट टोकन एक रहस्य है। वह सिर्फ़ आपके सर्वर पर रहता है: एनवायरनमेंट वेरिएबल या सीक्रेट स्टोर में।
- कोड में नहीं, git में नहीं, मोबाइल ऐप में नहीं और ब्राउज़र या मिनी ऐप के JavaScript में नहीं।
- सिर्फ़ सर्टिफ़िकेट जाँच के साथ HTTPS। टोकन लीक हो जाए तो तुरंत @timora_support को लिखें: पुराना रद्द करेंगे, नया देंगे।
छात्रों का डेटा
- छात्रों से EIOS पासवर्ड और Timora साइन इन कोड न माँगें — सिर्फ़ «Timora से साइन इन»।
- सिर्फ़ ज़रूरी सेक्शन माँगें: छात्र उन्हें सहमति स्क्रीन पर देखता है।
- छात्र टोकन एन्क्रिप्टेड रूप में रखें। छात्र साइन आउट करे —
POST /me/disconnectकॉल करें और टोकन हटाएँ। - डेटा सिर्फ़ उसी सुविधा के लिए इस्तेमाल करें जिसके लिए पहुँच दी गई है। आगे न दें और न बेचें, विज्ञापन और मॉडल ट्रेनिंग के लिए इस्तेमाल न करें, छात्र के कहने पर हटाएँ। रूसी संघीय कानून 152-FZ का पालन करें।
- छात्र को दिखाएँ कि उसने Timora से साइन इन किया है, और साइन आउट बटन दें।
सीमाएँ और कैश
- सार्वजनिक डेटा कैश करें: ग्रुप की समय-सारिणी — 10–15 मिनट में एक बार से ज़्यादा नहीं।
- 429 जवाब पर —
Retry-Afterहेडर में बताए गए सेकंड तक प्रतीक्षा करें।
प्रतिबंधित
- सीमाओं से बचना: कई टोकन, पते बदलना।
- बड़ी मात्रा में डेटा निकालना।
- API की पहुँच दोबारा बेचना।
संदर्भ
जिनके पास पहले से टोकन है
पता — https://mytimora.ru/api/v1। जवाब JSON में, जवाबों में तारीखें — dd.mm.yyyy, पैरामीटर में — yyyy-mm-dd या dd.mm.yyyy। त्रुटियाँ — {"detail": "text"}।
हेडर
| हेडर | कब |
|---|---|
Authorization: Bearer tmr_… | हमेशा — प्रोजेक्ट टोकन |
X-Timora-User: tmu_… | /me/… के लिए — «Timora से साइन इन» से मिला छात्र टोकन |
सार्वजनिक डेटा
| मेथड | क्या देता है |
|---|---|
GET /institutions | विश्वविद्यालय: id, name, short, city, features |
GET /groups?institution=nstu | विश्वविद्यालय के ग्रुप |
GET /schedule?institution=nstu&group=ПМИ-31&from=2026-10-05&to=2026-10-11 | दिनवार कक्षाएँ, एक अनुरोध में 31 दिन तक |
GET /teachers?institution=sibsutis | शिक्षक (SibSUTIS) |
GET /exams?institution=sibsutis&group=ИП-514 | परीक्षाएँ, क्रेडिट टेस्ट, परामर्श |
«Timora से साइन इन»
POST /connect/start बॉडी {"scopes": ["profile", "schedule", "grades"]} के साथ → deviceCode, userCode (ABCD-EFGH जैसा), expiresIn (600 s), interval (3 s) और links: telegram, vk, app — लिंक जिनसे छात्र साइन इन की पुष्टि करेगा।
छात्र को कोड और «Telegram में पुष्टि करें», «Timora ऐप में» बटन दिखाएँ। हर interval सेकंड में {"deviceCode": "tmc_…"} के साथ POST /connect/poll कॉल करें: जवाब — pending, slow_down, denied, expired या userToken (tmu_…) के साथ approved, जो एक बार दिया जाता है।
scopes न हों तो profile और schedule माँगे जाते हैं।
छात्र का डेटा
दोनों हेडर ज़रूरी हैं। पहुँच — सिर्फ़ उन सेक्शन तक जिनकी छात्र ने अनुमति दी, वरना 403।
| मेथड | सेक्शन | क्या देता है |
|---|---|---|
GET /me | profile | id (हर प्रोजेक्ट के लिए अलग), नाम, उपनाम, ग्रुप, विश्वविद्यालय, साइन इन के तरीके |
GET /me/schedule?from=…&to=… | schedule | छात्र के ग्रुप की समय-सारिणी |
GET /me/grades | grades | ग्रेड (SibSUTIS, अगर छात्र EIOS पासवर्ड Timora में रखता है) |
GET /me/deadlines | deadlines | EIOS कोर्स के बाकी असाइनमेंट और टेस्ट |
GET /me/certificates | certificates | प्रमाणपत्र अनुरोध और उनकी स्थिति |
POST /me/disconnect | — | साइन आउट: छात्र के अकाउंट तक प्रोजेक्ट की पहुँच खत्म |
/me/… पर 401 — छात्र ने पहुँच वापस ले ली (Timora प्रोफ़ाइल में या बॉट में /apps कमांड से) या प्रोजेक्ट टोकन रद्द हो गया। 409 — छात्र के पास ज़रूरी डेटा नहीं: ग्रुप नहीं चुना या EIOS नहीं जुड़ा।
सीमाएँ
- सार्वजनिक डेटा के लिए प्रति टोकन प्रति मिनट 300 अनुरोध, हर छात्र के लिए अलग से;
- ग्रेड — 30, डेडलाइन — 40, प्रमाणपत्र — प्रति छात्र प्रति घंटे 20 अनुरोध: ये विश्वविद्यालय की वेबसाइट पर अनुरोध हैं;
connect/start— प्रति प्रोजेक्ट प्रति घंटे 600।
अनुरोध का उदाहरण
curl -s https://mytimora.ru/api/v1/schedule \ -H "Authorization: Bearer $TIMORA_TOKEN" \ --get --data-urlencode "institution=nstu" --data-urlencode "group=ПМИ-31" \ --data-urlencode "from=2026-10-05" --data-urlencode "to=2026-10-11"