TSUE Connect API v1 openapi.yaml

Kamera integratsiyasi API

Xonada hozir qaysi dars ketyapti va unda nechta odam bo'lishi kerakligini beradi. Kamera sanagan sonni qabul qiladi.

Vaqtlar Toshkent vaqtida (UTC+05:00), ISO 8601 formatida. Xona nomlari dars jadvalidagidek, masalan 10-103-54. Ro'yxatini GET /rooms beradi.

Ulanish
Base URL   https://api.abdunodir.uz/partner/v1
Format     JSON (UTF-8)
Protokol   faqat HTTPS
Spec       openapi.yaml

Avtorizatsiya

Har so'rovda kalit Authorization: Bearer sarlavhasida yuboriladi. Kalitni biz beramiz. Kalit sizning server IP manzilingizga bog'lanadi.

Chegara: kalit uchun daqiqasiga 60 ta so'rov. Chegaradan oshsa 429 qaytadi, Retry-After soniya kuting.

Sinab ko'rish uchun kalit

Bu yerga kiritilgan kalit faqat shu brauzer oynasida turadi va pastdagi "Sinab ko'rish" panellarida ishlatiladi.

Sarlavha
Authorization: Bearer tsue_pk_xxxxxxxxxxxx_xxxxxxxx…
# har javobda
X-RateLimit-Remaining: 57
get/rooms

Xonalar ro'yxati

Jadvaldagi barcha xonalar. capacity xona nomidan olinadi (oxirgi -54 qismi), nomda bo'lmasa null.

Parametrlar

Parametr yo'q.

Javob namunasi · 200
{
  "data": [
    { "name": "10-103-54", "building": "10-bino", "capacity": 54 },
    { "name": "1/111", "building": "1-bino", "capacity": null }
  ]
}
get/lessons/current

Xonadagi joriy dars

Berilgan xonada hozir (yoki at vaqtida) ketayotgan dars.

Parametrlar

roomstringmajburiy
Xona nomi, GET /rooms dagidek.
atstring · ISO 8601ixtiyoriy
Shu vaqtdagi dars. Berilmasa, hozirgi vaqt olinadi.

Javob

expected_peopleinteger | null
Xonada bo'lishi kerak bo'lgan odamlar: talabalar + o'qituvchi. Kamera soni shu bilan solishtiriladi.
students_count_statusstring
complete: son aniq. partial: bir qism guruhlarniki noma'lum. unavailable: son yo'q.

Xonada dars bo'lmasa lesson: null qaytadi (kod 200).

Javob namunasi · 200
{
  "room": "10-103-54",
  "at": "2026-11-03T11:15:00+05:00",
  "lesson": {
    "room": "10-103-54",
    "starts_at": "11:00",
    "ends_at": "12:20",
    "teacher": "Rustamov Akmal",
    "teachers_count": 1,
    "groups_count": 2,
    "students_count": 42,
    "students_count_status": "complete",
    "expected_people": 43,
    "source": "hemis"
  }
}
get/lessons

Kunlik jadval

Bir kundagi barcha darslar. Kun boshida bir marta olib, keshlab qo'yish uchun qulay. Ro'yxat starts_at, keyin room bo'yicha tartiblangan.

Parametrlar

datestring · YYYY-MM-DDixtiyoriy
Berilmasa, bugungi sana.
roomstringixtiyoriy
Faqat shu xonadagi darslar.
Javob namunasi · 200
{
  "date": "2026-11-03",
  "data": [
    {
      "room": "1/111",
      "starts_at": "08:00",
      "ends_at": "09:20",
      "teacher": "Karimova Nodira",
      "teachers_count": 1,
      "groups_count": 1,
      "students_count": 27,
      "students_count_status": "complete",
      "expected_people": 28,
      "source": "edupage"
    }
  ]
}
post/occupancy

Kamera o'lchovlarini yuborish

Bitta so'rovda 100 tagacha o'lchov. Har o'lchovga alohida natija qaytadi, tartibi so'rovdagidek.

Tana (JSON) — readings[]

roomstringmajburiy
Xona nomi, GET /rooms dagidek.
counted_atstring · ISO 8601majburiy
Sanalgan vaqt. 24 soatdan eski yoki 5 daqiqadan ko'proq kelajakdagi vaqt qabul qilinmaydi.
people_countinteger · 0–1000majburiy
Xonadagi jami odamlar soni, o'qituvchi bilan birga.
camera_idstringixtiyoriy
Sizdagi kamera identifikatori. Muammoni tekshirishda kerak bo'ladi, yuborishingizni so'raymiz.

alert: true — davomatdagi talabalar soni kamera ko'rganidan sezilarli ko'p (kamida 2 kishi yoki 10%). Bunda xonadagi doskada o'qituvchiga ogohlantirish chiqadi.

Javob namunasi · 202
{
  "data": [
    { "room": "10-103-54", "accepted": true, "expected_people": 43, "checked_in": 35, "alert": false },
    { "room": "B-404", "accepted": false, "error": "room_not_found" }
  ]
}

Xatolar

Kodda code maydoniga tayaning, message o'zgarishi mumkin.

HTTPcodeNima qilish kerak
401unauthorizedKalit yo'q, noto'g'ri yoki formati buzilgan
401key_revokedKalit bekor qilingan, yangisini so'rang
403ip_not_allowedSo'rov ruxsat berilmagan IP manzildan keldi
404room_not_foundXona nomini GET /rooms bilan tekshiring
422validation_failedParametrlar noto'g'ri, sababi message da yozilgan
429rate_limitedRetry-After da ko'rsatilgan soniyani kuting
503schedule_unavailableJadval manbasi vaqtincha ishlamayapti, Retry-After dan keyin qayta urining
500—Xato bizning tomonda. So'rov vaqti va xona nomi bilan xabar bering
Xato javobi
{
  "error": {
    "code": "room_not_found",
    "message": "Bunday xona topilmadi. Ro'yxat: GET /rooms"
  }
}