1) JWT olish (SMS-kod orqali)
Bosqich: start → verify
POST /api/v1/user/auth/start/
{
"phone": "99890xxxxxxx",
"purpose": "login"
}
POST /api/v1/user/auth/verify/
{
"phone": "99890xxxxxxx",
"purpose": "login",
"code": "123456",
"first_name": "Ali", "last_name": "Valiyev" // register paytida ixtiyoriy
}
Javobda user va tokens qaytadi.
1) Получить JWT (через SMS-код)
Этапы: start → verify
POST /api/v1/user/auth/start/
{
"phone": "99890xxxxxxx",
"purpose": "login"
}
POST /api/v1/user/auth/verify/
{
"phone": "99890xxxxxxx",
"purpose": "login",
"code": "123456",
"first_name": "Ali", "last_name": "Valiyev" // опционально при регистрации
}
В ответе придут user и tokens.
2) Mahsulotlar va Do‘konlar
Katalog va do‘konlardagi narxlar (store-products) bilan ishlash.
GET /api/v1/products/items/?search=iphone
GET /api/v1/products/store-items/?store=1&installment_enabled=true
// Bearer <access_token> bilan
curl -H "Authorization: Bearer <token>" \
"<base_url>/api/v1/products/store-items/?store=1&installment_enabled=true"
2) Товары и Витрина Магазина
Каталог + позиции магазина (store-products).
GET /api/v1/products/items/?search=iphone
GET /api/v1/products/store-items/?store=1&installment_enabled=true
curl -H "Authorization: Bearer <token>" \
"<base_url>/api/v1/products/store-items/?store=1&installment_enabled=true"
3) Buyurtma yaratish (Nasiya/jami to‘lovlar)
Tovarlar tanlovi, kanal, reja va to‘lov turlari.
POST /api/v1/orders/
{
"store": 1,
"plan_id": 5,
"items": [{"store_product": 101, "qty": 1}],
"channel": "online",
"payment_types": ["installment"], // yoki ["card"], ["cash"]
"card_id": 12 // ixtiyoriy (card to'lovi uchun)
}
3) Создание заказа (Рассрочка/оплата)
Позиции, канал, план и способы оплаты.
POST /api/v1/orders/
{
"store": 1,
"plan_id": 5,
"items": [{"store_product": 101, "qty": 1}],
"channel": "online",
"payment_types": ["installment"],
"card_id": 12
}
4) To‘lovlar
Karta orqali bevosita yoki AmanCard limitidan.
POST /api/v1/payments/direct-pay/
{
"card_id": 1,
"amount": "500000",
"note": "iPhone 14 to'lovi"
}
GET /api/v1/payments/wallet/
POST /api/v1/payments/wallet/schedule-items/{id}/pay/
Eslatma: limit yetarli bo‘lmasa 400 keladi; muvaffaqiyatda 201.
4) Платежи
Прямая оплата картой или через лимит AmanCard.
POST /api/v1/payments/direct-pay/
{
"card_id": 1,
"amount": "500000",
"note": "Оплата iPhone 14"
}
GET /api/v1/payments/wallet/
POST /api/v1/payments/wallet/schedule-items/{id}/pay/
Если лимит недостаточен — 400; при успехе — 201.
5) Qidiruv, QR va Inventar
GET /api/v1/search/?q=iphone&type=product|store|store_product&city=Tashkent&store_id=1
GET /api/v1/qr/resolve?token=...
QR resolve auth talab qilmaydi; noto‘g‘ri yoki eskirgan tokenlarda 400.
POST /api/v1/inventory/stocks/adjust/
{
"store_product": 101,
"quantity": 10 // set/delta orqali o'zgartirish
}
5) Поиск, QR и Склад
GET /api/v1/search/?q=iphone&type=product|store|store_product&city=Tashkent&store_id=1
GET /api/v1/qr/resolve?token=...
QR resolve не требует авторизации; при неверном/просроченном токене — 400.
POST /api/v1/inventory/stocks/adjust/
{
"store_product": 101,
"quantity": 10
}