Tez start & Integratsiya

Quyidagi endpointlar orqali roʻyxatdan oʻtish, mahsulotlar bilan ishlash, buyurtma yaratish va toʻlovlarni amalga oshiring.

Auth: /api/v1/user/auth/* Products: /api/v1/products/* Orders: /api/v1/orders/* Payments: /api/v1/payments/* Search/QR/Inventory

1) JWT olish (SMS-kod orqali)

Bosqich: startverify
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-код)

Этапы: startverify
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
}

Autentifikatsiya eslatmalari