> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API bo‘yicha qisqa qo‘llanma

> Developer Hub bo‘limida xizmat hisobi (service account) va API kalitini yarating, Basic auth orqali autentifikatsiyadan o‘ting va Living Security Public API’ga birinchi so‘rovingizni yuboring.

Developer Hub bo‘limida xizmat hisobi (service account) va API kalitini yarating, so‘ng
birinchi so‘rovingizni yuboring. Ushbu qisqa qo‘llanmada API kaliti orqali autentifikatsiya qo‘llaniladi; OAuth
klienti talab qilinmaydi. Agar integratsiyangiz qisqa muddatli OAuth kirish tokenlarini talab qilsa, [Authentication](/uz/developers/v1/authentication) bo‘limiga qarang.

## Oldindan talablar

* Living Security Dashboard’ga administrator huquqi bilan kirish.
* **Settings → Integrations & Developers →
  Developer Hub** yo‘li orqali ko‘rinadigan Developer Hub.

## Hisob ma’lumotlarini yaratish

<Steps>
  <Step title="Xizmat hisobini yarating">
    Developer Hub bo‘limida **Service accounts** yorlig‘ini oching va hisob
    yarating. Unga tavsiflovchi nom bering (masalan, `reporting-pipeline`) va
    uning kalitlari foydalanishi mumkin bo‘lgan ruxsatlarni bering — ushbu qo‘llanma uchun `organization:read`
    yetarli.

    Hisobning ruxsatlari uning ostida yaratilgan har bir kalit uchun yuqori chegara hisoblanadi:
    kalit hech qachon o‘zining xizmat hisobi ruxsat berganidan ko‘proq amallarni bajara olmaydi.
  </Step>

  <Step title="API kalitini yarating">
    Xizmat hisobining tafsilotlar sahifasini oching va kalit yarating. Ushbu kalit uchun zarur
    ruxsatlarni (hisob ruxsatlarining bir qismi) hamda amal qilish muddatini tanlang —
    30, 90 yoki 365 kun, yoki moslashtirilgan muddat. Amal qilish muddatini belgilash
    majburiy.

    Kalitning maxfiy qiymati `lsk_live_` bilan boshlanadi va **bir marta** ko‘rsatiladi. Uni darhol
    maxfiy ma’lumotlar menejeriga nusxalang; keyinchalik uni qayta olish imkoni yo‘q.

    <Warning>
      API kalitlarining maxfiy qiymatlarini hech qachon versiyalarni boshqarish tizimiga joylamang va mijoz tomonidagi
      kodga kiritmang. Maxfiy qiymatga ega bo‘lgan har kim kalitning ruxsatlari doirasida harakat qila oladi.
    </Warning>
  </Step>

  <Step title="Mintaqangizni tanlang">
    Tashkilotning ma’lumotlar joylashuviga mos keladigan mintaqaviy `/v1` hostini
    chaqiring. Kalitlar faqat shu hostda autentifikatsiyadan o‘tadi.

    | Region | Base URL |
    | - | - |
    | US | `https://api.us-east-1.livingsecurity.ai/v1` |
    | EU | `https://api.eu-west-1.livingsecurity.ai/v1` |

    Qaysi hostdan foydalanishni bilmasangiz, [Regions](/uz/developers/v1/regions) bo‘limiga qarang. Yaroqli kalit boshqa mintaqaga yuborilsa, `unauthorized` xatosi bilan rad etiladi. Hostni almashtirish uchun quyidagi namunadagi mintaqa ochiladigan ro‘yxatidan foydalaning.
  </Step>

  <Step title="Birinchi so‘rovingizni yuboring">
    `LIVING_SECURITY_API_KEY` qiymatini maxfiy ma’lumotlar menejeringizdan so‘rovni yuborayotgan jarayonning muhitiga
    yuklang. Quyidagi misollar uni manba kodiga maxfiy qiymatni kiritmasdan o‘qiydi. Python uchun avval `requests` ni o‘rnating.

    API’ni maxfiy qiymatni HTTP Basic auth parol yoki foydalanuvchi nomi
    maydonida yuborib chaqiring — ikkalasi ham ishlaydi, shuning uchun ikkala maydon ham to‘ldirilishini talab qiladigan klientlar (masalan,
    Power BI’ning Web connector’i) ikkinchi maydonga `apikey` kabi o‘rinbosarni kiritishi mumkin.

    <CodeGroup>
      ```bash cURL theme={null}
      curl --fail-with-body --connect-timeout 5 --max-time 30 \
        https://api.eu-west-1.livingsecurity.ai/v1/organization \
        -u "apikey:${LIVING_SECURITY_API_KEY:?Set LIVING_SECURITY_API_KEY}" \
        -H "Living-Security-Version: 2026-07-01"
      ```

      ```bash cURL (key as username) theme={null}
      curl --fail-with-body --connect-timeout 5 --max-time 30 \
        https://api.eu-west-1.livingsecurity.ai/v1/organization \
        -u "${LIVING_SECURITY_API_KEY:?Set LIVING_SECURITY_API_KEY}:" \
        -H "Living-Security-Version: 2026-07-01"
      ```

      ```python Python theme={null}
      import os
      import requests

      BASE = "https://api.eu-west-1.livingsecurity.ai/v1"

      response = requests.get(
          f"{BASE}/organization",
          auth=("apikey", os.environ["LIVING_SECURITY_API_KEY"]),
          headers={"Living-Security-Version": "2026-07-01"},
          timeout=(5, 30),
          allow_redirects=False,
      )
      response.raise_for_status()
      if response.status_code != 200:
          raise RuntimeError("Unexpected response; check your regional API URL")
      print(response.json())
      ```
    </CodeGroup>

    Muvaffaqiyatli javob tashkilotingiz haqidagi ma’lumotni qaytaradi:

    ```json Response theme={null}
    {
      "id": "1e2f3a4b-5c6d-4e7f-8a9b-0c1d2e3f4a5b",
      "object": "organization",
      "name": "Example Corp",
      "region": "eu",
      "plan": "enterprise",
      "subscription_status": "active",
      "created_at": "2024-03-12T18:04:11.000Z"
    }
    ```

    <Check>
      Agar siz ushbu javobni olsangiz, hisob ma’lumotlaringiz ishlayapti. So‘rov bir necha lahzadan so‘ng
      Developer Hub’dagi **Request logs** yorlig‘ida ham ko‘rinadi.
    </Check>
  </Step>
</Steps>

<Tip>
  Xuddi shu maxfiy qiymat bilan Bearer autentifikatsiyasi (`Authorization: Bearer
    lsk_live_...`) ham ishlaydi. Basic auth faqat
  foydalanuvchi nomi/parol bilan ishlaydigan vositalar — masalan, Power BI’ning Web connector’i — ulanishi uchun mavjud.
</Tip>

## Autentifikatsiya qanday ishlaydi

* **Hisob ma’lumotlari tashkilotni aniqlaydi.** `/v1` so‘rovlarida
  tenant selektori bo‘lmaydi: na tashkilot yo‘l segmenti, na tashkilot sarlavhasi.
  `x-organization-id` sarlavhasini yuborish `invalid_request` xatosi bilan rad etiladi.
  Host baribir tashkilot mintaqasiga mos kelishi kerak. [Regions](/uz/developers/v1/regions) bo‘limiga qarang.
* **Ruxsatlar har bir amal uchun tekshiriladi.** Har bir `/v1` amali
  nomlangan ruxsatni talab qiladi (masalan, `GET /v1/organization` uchun
  `organization:read` talab qilinadi). Ruxsati yo‘q kalit `403` xatosini oladi, kodi
  `insufficient_permission`.
* **Kalitlarning amal qilish muddati tugaydi va ularni uzilishsiz almashtirish mumkin.** Ustma-ust tushish
  davri bilan almashtirish haqida [API keys](/uz/developers/developer-hub/api-keys) bo‘limiga qarang.

## Xato javoblarini o‘qish

Har bir `/v1` xatosi barqaror mashina kodiga ega `application/problem+json`
([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)) formatida bo‘ladi. Masalan, hisob ma’lumotlari
yo‘q yoki noma’lum bo‘lgan so‘rov quyidagini qaytaradi:

```json 401 Unauthorized theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/unauthorized",
  "title": "Unauthorized",
  "status": 401,
  "detail": "No valid API credential was provided.",
  "code": "unauthorized",
  "request_id": "req_...",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/unauthorized",
  "retryable": false
}
```

`code` bo‘yicha tarmoqlang, hech qachon `detail` bo‘yicha emas. Yechim bosqichlari uchun `doc_url` ga amal qiling va qo‘llab-quvvatlash xizmatiga murojaat qilganda `request_id` ni ham ko‘rsating — u
`Request-Id` javob sarlavhasi va Developer Hub so‘rovlar jurnallari bilan mos keladi. Xatolar kodlarining to‘liq
ro‘yxati [error reference](/uz/developers/v1/errors/overview) bo‘limida.

## Kontrakt versiyalari

Har bir javob o‘zini qayta ishlagan kontrakt versiyasini
`Living-Security-Version` sarlavhasida, korrelyatsiya uchun `Request-Id` sarlavhasi bilan birga qaytaradi.

So‘rovni nashr etilgan kontrakt versiyasiga sana bo‘yicha biriktirishingiz mumkin:

<CodeGroup>
  ```bash cURL theme={null}
  curl --fail-with-body --connect-timeout 5 --max-time 30 \
    https://api.eu-west-1.livingsecurity.ai/v1/organization \
    -u "apikey:${LIVING_SECURITY_API_KEY:?Set LIVING_SECURITY_API_KEY}" \
    -H "Living-Security-Version: 2026-07-01"
  ```
</CodeGroup>

Versiya quyidagi tartibda aniqlanadi: agar mavjud bo‘lsa, so‘rov sarlavhasi, aks holda
xizmat hisobining belgilangan standart versiyasi, aks holda eng so‘nggi nashr etilgan versiya.
Nashr etilmagan (yoki to‘xtatish sanasi o‘tib ketgan) versiyani so‘rash
`400` xatosini qaytaradi, kodi `unsupported_version`. Nashr etilgan versiyalar va ularning
o‘zgarishlari [API changelog](/uz/developers/v1/changelog) bo‘limida keltirilgan.

## Birinchi so‘rovdagi muammolarni bartaraf etish

| Natija | Keyingi amal |
| - | - |
| `401 unauthorized` | Maxfiy qiymatni, uning amal qilish muddatini va tashkilot mintaqasini tekshiring. Haqiqiy hisob ma’lumotlari bilan boshqa hostlarni sinab ko‘rmang. |
| `403 insufficient_permission` | `organization:read` ruxsatini xizmat hisobiga ham, uning kalitiga ham bering. |
| `400 unsupported_version` | [changelog](/uz/developers/v1/changelog) ichidan nashr etilgan versiyani tanlang. |
| `429 rate_limited` | `Retry-After` gacha kuting; [bounded retry example](/uz/developers/v1/rate-limits) namunasiga amal qiling. |
| Tarmoq kutish vaqti tugashi | Ulanishni tekshiring va ilovangizning qayta urinishlar chegarasi doirasida ushbu o‘qish so‘rovini qayta yuboring. |

Boshqa xatolar uchun javobdagi `doc_url` ga amal qiling. Qo‘llab-quvvatlash xizmati uchun `Request-Id` ni saqlab qo‘ying;
murojaatga hech qachon Authorization sarlavhasini yoki API kalitingizni kiritmang.

## Keyingi qadamlar

<CardGroup cols={2}>
  <Card title="Regions" href="/uz/developers/v1/regions">
    Tashkilot uchun US yoki EU `/v1` hostini tanlang.
  </Card>

  <Card title="Pagination" href="/uz/developers/v1/pagination">
    Ro‘yxatlarni `page_token` va ro‘yxat konverti yordamida ko‘rib chiqing.
  </Card>

  <Card title="Rate limits" href="/uz/developers/v1/rate-limits">
    So‘rovlar limitlarini tushuning va `429` javoblarini qayta ishlang.
  </Card>

  <Card title="Error reference" href="/uz/developers/v1/errors/overview">
    Barcha xato kodlari, ularning HTTP holati va qanday bartaraf etilishi.
  </Card>

  <Card title="Developer Hub" href="/uz/developers/developer-hub/overview">
    Xizmat hisoblari, API kalitlari va so‘rovlar jurnallarini boshqaring.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.