# 2. Birinchi so'rov

> Kalitni tokenga almashtirib, mahsulotlar katalogini o'qiymiz.

## Kirish tokenini olish

```bash
curl -X POST 'https://api-admin.billz.ai/v1/auth/login' \
  -H 'Content-Type: application/json' \
  -d '{"secret_token": "MAXFIY_KALIT"}'
```

Javob:

```json
{
  "code": 200,
  "message": "ok",
  "error": null,
  "data": {
    "access_token": "eyJhbGciOi...",
    "refresh_token": "eyJhbGciOi...",
    "token_type": "Bearer",
    "expires_in": 1296000
  }
}
```

`expires_in` — soniya: kalit orqali kirilganda bu muddat **15 kun**. U bilan birga `refresh_token` ham saqlanadi (yaroqlilik muddati — 30 kun): u orqali tokenlar juftligi maxfiy kalitga murojaat qilmasdan yangilanadi.

![Token chiqarish: ilova maxfiy kalitni POST-so’rovda yuboradi /v1/auth/login, API esa access\_token, refresh\_token va expires\_in tokenlarini qaytaradi, ilova bu juftlikni saqlab qo’yadi](/_astro/03-issue-token.DNaVqB9R_Z2bRBuq.webp)

> **Yaroqlilik muddati javobdan olinadi**
>
> `POST /v2/auth/refresh` so’ng muddat server konfiguratsiyasidan olinadi va 15 kundan farq qilishi mumkin. Batafsil — [autentifikatsiya va ruxsatlar](/uz/concepts/auth/).

## Katalogni o’qish

```bash
curl -X GET 'https://api-admin.billz.ai/v2/products?limit=5&search=Nike' \
  -H 'Authorization: Bearer ACCESS_TOKEN'
```

Javob — ikkita maydonga ega obyekt:

```json
{
  "count": 134,
  "products": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "Air Jordan 1 High",
      "barcode": "978020137962",
      "sku": "THY-1232",
      "shop_measurement_values": [
        { "shop_id": "...", "shop_name": "Nike Store", "active_measurement_value": 5 }
      ],
      "shop_prices": [
        { "shop_id": "...", "shop_name": "Nike Store",
          "retail_price": 1000000, "retail_currency": "UZS",
          "supply_price": 600000, "supply_currency": "UZS",
          "promo_price": 0, "promos": [] }
      ]
    }
  ]
}
```

Qoldiqlar va narxlar **do’konlar kesimida** keladi.

## Foydali parametrlar

| Parametr        | Izoh                                                                                                                    |
| --------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `limit`, `page` | sahifalash; sukut bo’yicha sahifada 100 ta yozuv                                                                        |
| `search`        | qidiruv satri; qism satr, harflar kattaligi muhim emas. Sukut bo’yicha nom, SKU, shtrix-kod va tavsif bo’yicha qidiradi |

Katalogning qolgan parametrlari — sanalar, do’konlar va qidiruv maydonlari bo’yicha filtrlar — [katalogni sinxronlash](/uz/guides/sync-catalog/) bo’limida ko’rib chiqilgan.

Keyingi: [birinchi sotuv](/uz/start/first-sale/).