> ## 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.

# Har bir shaxs bo‘yicha compliance

> Avvalgi provayderning har bir shaxs bo‘yicha Training compliance eksportini /v1 assignments, enrollments va courses asosida qayta yarating.

Ushbu hisobot avvalgi provayderning har bir shaxs bo‘yicha compliance eksportining Training qismi hisoblanadi: katalogdagi identifikatsiya ma’lumotlari hamda har bir shaxs uchun har bir Training enrollment bo‘yicha bitta qator (modul holati va sanalar).

Ma’lumotlar detallashuvi uzun shaklda — shaxs × assignment — chunki `GET /v1/assignments/{id}/enrollments` aynan shuni qaytaradi. So‘rov modullarni ustunlarga aylantirmaydi (pivot qilmaydi).

<Note>
  Siyosatlarni tasdiqlash (policy acknowledgements) ushbu hisobotga kiritilmagan. Living Security'da siyosatni qabul qilish bo‘yicha API mavjud emas, shuning uchun bu eski ustunlar kutilayotgan moslashtirish emas, balki qamrovdan tashqarida. [Eski eksportdan farqlar](#divergences-from-the-legacy-export) bo‘limiga qarang.
</Note>

Sozlash, credentials, sahifalash va rate-limit bo‘yicha qayta urinish [Power BI / Excel ulanish qo‘llanmasi](/uz/developers/v1/powerbi) bilan bir xil. Avval umumiy `Fn_FetchAll` so‘rovini qo‘shing; ushbu hisobot uni nomi bo‘yicha chaqiradi.

## Required key scopes

| Scope | Nima uchun ishlatiladi |
| - | - |
| `training:read` | `GET /v1/assignments` va `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (katalog nomlari) |

## Source endpoints

| Endpoint | Vazifasi |
| - | - |
| `GET /v1/assignments` | Assignment ro‘yxati: `assignment_id`, nomi, `course_id`, hayotiy sikl holati, `created_at`. So‘rov holat bo‘yicha filtrlamaydi, shuning uchun faol, to‘xtatilgan va yakunlangan assignment’larning barchasi ko‘rinadi (tarixiy compliance). |
| `GET /v1/assignments/{id}/enrollments` | Learner bo‘yicha progress. Har bir assignment uchun bitta sahifalangan o‘tish. Bu ma’lumotlar detallashuvi darajasi bo‘lib, ushbu hisobotda email’ni hisobotni bog‘lash kaliti sifatida saqlaydigan yagona `/v1` resursi hisoblanadi. |
| `GET /v1/courses` | `course_id` → kurs nomini (Training modulining nomi) aniqlaydi. `Assignment.title` — bu kampaniya yorlig‘i, modul nomi emas. |

Ushbu so‘rov `GET /v1/entities` ni **chaqirmaydi**. Enrollment qatorida allaqachon `email` va `display_name` mavjud, entity ro‘yxatida esa bo‘lim yoki lavozim yo‘q — shuning uchun uni o‘qish enrollment qatorida yo‘q katalog ustunlarini to‘ldirmaydi.

### Grain

Har bir enrollment (shaxs × assignment) uchun bitta qator. Bir xil kursga ikkita assignment orqali biriktirilgan shaxs ikkita qator hosil qiladi. Hech qanday enrollment’i bo‘lmagan shaxs ko‘rinmaydi — `/v1` email’siz foydalanish mumkin bo‘lgan katalog qatorini chiqara olmaydi, faqat shaxsdan iborat qatorlarni o‘ylab topish esa ma’lumotlar detallashuvi darajalarini aralashtirib yuboradi.

So‘rovlar byudjeti: har bir assignment uchun bitta sahifalangan o‘tish, ketma-ket, umumiy per-key rate limit doirasida. Har doim `limit = "500"` ni o‘rnating.

## Column mapping

Eski ustun nomlari avvalgi provayderingiz eksportidan olingan. `/v1` maydonlari — ommaviy API nomlari; so‘rov hisobot uchun ulardan ayrimlariga alias beradi.

| Eski ustun | `/v1` maydoni yoki hosila | Hisobot ustuni |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Full name | `Enrollment.display_name` | `full_name` |
| Department | `/v1` da yo‘q | Qoldirilgan, null qilinmagan |
| Boshqa katalog ma’lumotlari (lavozim, rahbar, joylashuv, …) | `/v1` da yo‘q — entity’larda faqat email va ko‘rsatiladigan ism mavjud. | Qoldirilgan |
| Training moduli / kurs nomi | `Course.title`, zaxira varianti `Assignment.title` | `course_name` |
| Assignment / modul holati | `Enrollment.status` — `not_started` \| `in_progress` \| `completed` \| `overdue` \| `withdrawn` | `enrollment_status` |
| Assigned date | `Enrollment.assigned_at` | `assigned_at` |
| Completed date | `Enrollment.completed_at` | `completed_at` |
| Due date | `Enrollment.due_at` (eski eksportda bo‘lmagan bo‘lishi mumkin; API’da mavjud bo‘lgani uchun kiritilgan) | `due_at` |
| Siyosatni qabul qilish / tasdiqlash | Siyosat domeni yo‘q | Qoldirilgan |
| Siyosat nomi, qabul qilingan sana | Siyosat domeni yo‘q | Qoldirilgan |

Yulduzsimon (star-schema) model uchun saqlanadigan bog‘lash kalitlari: `entity_id`, `assignment_id`, `course_id`, `user_assignment_id`.

So‘rov shuningdek `course_slug`, `assignment_title`, `passed`, `attempts`, `assignment_lifecycle_status` va `assignment_created_at` ni saqlaydi. `enrollment_status` — bu Learner’ning progressi, assignment hayotiy sikli emas (`active` / `paused` / `completed`).

## Divergences from the legacy export

* **Siyosatni qabul qilish ma’lumotlari mavjud emas.** Ushbu platformada siyosat domeni yo‘q — `/policies`, `/policy_acceptances` yoki unga teng `/v1` resursi mavjud emas. Bu ustunlarni kutilayotgan moslashtirish deb hisoblamang. Ular qamrovdan tashqarida.
* **Katalogning qo‘shimcha ma’lumotlari qoldirilgan, null qilinmagan.** Bo‘lim, lavozim, rahbar va joylashuv `/v1` da yo‘q. So‘rov ular uchun bo‘sh ustunlarni o‘ylab topmaydi.
* **Due date kiritilgan**, eski eksportda bo‘lmagan taqdirda ham, chunki `Enrollment.due_at` API’da mavjud.
* **Kurs nomi uchun katalog nomi afzal ko‘riladi.** `Course.title` — modul nomi. `Assignment.title` faqat katalog qatori yo‘q bo‘lganda (o‘chirilgan yoki chop etilmagan) ishlatiladi.
* **Uzun shakl, pivot qilinmagan.** Har bir enrollment uchun bitta qator, har bir modul uchun ustunli, har bir shaxs uchun bitta qator emas.

## Next steps

<CardGroup cols={2}>
  <Card title="Power BI va Excel sozlamalari" href="/uz/developers/v1/powerbi">
    Credentials, sahifalash hamda ushbu so‘rovlarni Power BI yoki Excel’ga yuklash.
  </Card>

  <Card title="Email phishing log" href="/uz/developers/v1/reports/email-phishing-log">
    So‘nggi 12 oy uchun hodisalar darajasidagi phishing o‘zaro ta’sirlari.
  </Card>

  <Card title="Most susceptible users" href="/uz/developers/v1/reports/most-susceptible-users">
    Har bir shaxs bo‘yicha 12 oylik click, credential va report yig‘ma ko‘rsatkichi.
  </Card>

  <Card title="API keys" href="/uz/developers/developer-hub/api-keys">
    Ushbu hisobotni yangilaydigan kalitga `training:read` va `course:read` ruxsatlarini bering.
  </Card>
</CardGroup>


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