Xabarlar API¶
Barcha endpointlar Authorization: Bearer <token> talab qiladi.
Real vaqtli xabarlar Socket.IO orqali ham uzatiladi — bu sahifa faqat REST API ni qamraydi.
Foydalanuvchi qidirish¶
Yangi suhbat boshlash uchun foydalanuvchi qidirish:
Javob:
{
"ok": true,
"users": [
{
"id": 55,
"username": "vali5678",
"first_name": "Vali",
"last_name": "Karimov",
"avatar_url": null
}
]
}
Suhbatlar¶
Suhbatlar ro'yxati¶
Javob:
{
"ok": true,
"conversations": [
{
"id": 10,
"other_user": {
"id": 55,
"username": "vali5678",
"first_name": "Vali",
"avatar_url": null
},
"last_message": {
"body": "Salom!",
"sender_id": 55,
"created_at": "2026-06-11T09:00:00Z"
},
"unread_count": 2
}
]
}
Suhbat boshlash / mavjud suhbatni olish¶
Agar bu ikkala foydalanuvchi o'rtasidagi suhbat allaqachon mavjud bo'lsa — mavjud suhbatni qaytaradi.
Javob (200 yoki 201):
Xabarlar¶
Xabarlar ro'yxati¶
GET /api/v1/messages/conversations/<conversation_id>/messages?limit=50&before=<message_id>
Authorization: Bearer <token>
| Parametr | Tavsif |
|---|---|
limit |
Xabarlar soni (standart: 50, maks: 100) |
before |
Paginatsiya — bu ID dan oldingi xabarlar |
Javob:
{
"ok": true,
"messages": [
{
"id": 200,
"sender_id": 42,
"body": "Salom!",
"media_url": null,
"reply_to_id": null,
"is_edited": false,
"reactions": [],
"created_at": "2026-06-11T09:00:00Z"
}
],
"has_more": true
}
Xabar yuborish (matn)¶
POST /api/v1/messages/conversations/<conversation_id>/messages
Authorization: Bearer <token>
Content-Type: application/json
reply_to_id belgilansa — o'sha xabarga reply bo'ladi.
Rasm xabar yuborish¶
POST /api/v1/messages/conversations/<conversation_id>/media
Authorization: Bearer <token>
Content-Type: multipart/form-data
| Maydon | Turi | Tavsif |
|---|---|---|
file |
File | JPEG, PNG, WebP, GIF — maks. 5 MB |
body |
string | Ixtiyoriy matn |
Javob:
{
"ok": true,
"message": {
"id": 201,
"body": null,
"media_url": "/static/uploads/messages/201.jpg",
"created_at": "2026-06-11T09:01:00Z"
}
}
Xabar tahrirlash¶
PATCH /api/v1/messages/messages/<message_id>
Authorization: Bearer <token>
Content-Type: application/json
Faqat o'z xabarlarini tahrirlash mumkin.
Xabar o'chirish¶
Xabarni o'qilgan deb belgilash¶
POST /api/v1/messages/conversations/<conversation_id>/read
Authorization: Bearer <token>
Content-Type: application/json
Suhbatni tozalash¶
Barcha xabarlarni o'chiradi (faqat o'z tomoni uchun):
Xabarlarda qidiruv¶
GET /api/v1/messages/conversations/<conversation_id>/search?q=<so'rov>
Authorization: Bearer <token>
Emoji reaksiyalar¶
Reaksiya qo'shish¶
POST /api/v1/messages/messages/<message_id>/reactions
Authorization: Bearer <token>
Content-Type: application/json
Reaksiya olib tashlash¶
DELETE /api/v1/messages/messages/<message_id>/reactions
Authorization: Bearer <token>
Content-Type: application/json
Video / Ovozli qo'ng'iroqlar¶
Qo'ng'iroqlar WebRTC texnologiyasi bilan amalga oshiriladi. Signal almashish Socket.IO orqali bo'ladi — bu API hujjatida qamralgan emas.
Android ilovasi uchun:
- Kiruvchi qo'ng'iroq FCM data xabari orqali yuboriladi
- Qabul qiluvchi qurilmada IncomingCallService foreground service sifatida ishga tushadi
- Kamera va mikrofon faqat qo'ng'iroq vaqtida ishlatiladi
Xato kodlari¶
| Kod | Sabab |
|---|---|
conversation_not_found |
Suhbat topilmadi yoki sizga tegishli emas |
message_not_found |
Xabar topilmadi |
not_message_owner |
Faqat o'z xabarlarini tahrirlash/o'chirish mumkin |
user_blocked |
Foydalanuvchi sizni bloklagan yoki siz uni |
message_permission_denied |
Foydalanuvchining maxfiylik sozlamasiga ko'ra xabar yuborib bo'lmaydi |