Shaxsiy Daftar API¶
Barcha endpointlar Authorization: Bearer <token> talab qiladi.
Zero-Knowledge arxitekturasi
Daftar yozuvlari foydalanuvchi qurilmasida shifrlangan holda serverga yuboriladi. Server faqat shifrlangan ma'lumot saqlaydi — parolsiz mazmunni o'qish texnik jihatdan imkonsiz. API dan foydalanishdan oldin shifrlash va kalit chiqarish algoritmlarini tushunib oling.
Daftar tizimi haqida¶
Daftar uchta qadam orqali ishlaydi:
- Materiallar — server shifrlash uchun zarur parametrlarni (tuz, iteratsiyalar va h.k.) beradi
- Ochish (Unlock) — parol asosida kalit yaratiladi va daftar tokeni olinadi
- Yozuvlar — daftar tokeni bilan yozuvlar olinadi va yaratiladi
Barcha shifrlash/deshifrlash client tomonda amalga oshiriladi.
Materiallar (shifrlash parametrlari)¶
Javob:
{
"ok": true,
"is_setup": true,
"salt": "base64_encoded_salt",
"iterations": 310000,
"has_secondary": false
}
is_setup: false bo'lsa — daftar hali sozlanmagan, avval /setup kerak.
Daftarni sozlash (birinchi marta)¶
verifier — client tomonda paroldan PBKDF2 + HKDF orqali hosil qilingan tekshiruvchi qiymat.
Daftarni ochish¶
mode |
Tavsif |
|---|---|
primary |
A-parol — barcha yozuvlarga kirish |
secondary |
B-parol — faqat "ochiq" deb belgilangan yozuvlar |
Javob (200):
diary_token — keyingi so'rovlarda X-Diary-Token sarlavhasida yuboriladi.
Yozuvlar ro'yxati¶
So'rov parametrlari:
| Parametr | Tavsif |
|---|---|
limit |
Soni (standart: 20) |
offset |
Paginatsiya |
date |
YYYY-MM-DD — muayyan kun yozuvlari |
Javob:
{
"ok": true,
"entries": [
{
"id": 50,
"encrypted_content": "base64_encrypted_data",
"mood": "happy",
"word_count": 150,
"is_public": false,
"entry_date": "2026-06-11",
"created_at": "2026-06-11T09:00:00Z"
}
]
}
encrypted_content — client tomonda deshifrlash kerak.
Yozuv yaratish¶
POST /api/v1/diary/entries
Authorization: Bearer <token>
X-Diary-Token: <diary_token>
Content-Type: application/json
{
"encrypted_content": "base64_encrypted_data",
"mood": "happy",
"word_count": 150,
"is_public": false,
"entry_date": "2026-06-11"
}
| Maydon | Turi | Tavsif |
|---|---|---|
encrypted_content |
string | Client tomonda shifrlangan yozuv (base64) |
mood |
string | neutral, happy, sad, angry, anxious, calm, excited |
word_count |
integer | Deshifrlangan matnning so'zlar soni |
is_public |
boolean | B-parol bilan ko'rish mumkinmi |
entry_date |
string | YYYY-MM-DD formatida |
Javob (201):
{
"ok": true,
"entry": {
"id": 51,
"mood": "happy",
"entry_date": "2026-06-11",
"created_at": "2026-06-11T10:00:00Z"
}
}
Yozuv ma'lumotlari¶
Yozuv o'chirish¶
Daftar eksporti¶
Barcha yozuvlarni shifrlangan JSON formatida yuklab olish:
Kayfiyat (mood) qiymatlari¶
| Qiymat | Emoji | O'zbekcha |
|---|---|---|
neutral |
😐 | Neytral |
happy |
😊 | Xursand |
sad |
😢 | Xafa |
angry |
😠 | G'azablangan |
anxious |
😰 | Xavotirli |
calm |
😌 | Tinch |
excited |
🤩 | Hayajonli |
Xato kodlari¶
| Kod | Sabab |
|---|---|
diary_not_setup |
Daftar hali sozlanmagan |
invalid_verifier |
Parol noto'g'ri |
diary_token_required |
X-Diary-Token sarlavhasi yetishmaydi |
diary_token_invalid |
Daftar tokeni noto'g'ri yoki muddati o'tgan |
entry_not_found |
Yozuv topilmadi |
secondary_not_setup |
B-parol sozlanmagan |