Асуумжийн API
Асуумжийн нэгтгэл, А/176 маягтын мэдээлэл болон баталгаажсан асуумжийн өөрчлөлтийг өөрийн системд JSON хэлбэрээр авна. Нэгтгэлийн API нь зөвхөн нийт тоо, өөрчлөлтийн feed нь асуумжийн хариу, байгууллагын мэдээллийг буцаана.
- Үндсэн хаяг
https://inclusivedata.mn- Формат
- JSON, UTF-8
- Нэвтрэлт
X-Api-Keyтолгой — заавал
Нэвтрэлт
Хүсэлт бүрд X-Api-Key толгойд түлхүүрээ илгээнэ. Түлхүүрийг системийн
админ олгоно — байгууллагынхаа нэр, зорилгыг дурдаад хүсэлт гаргана уу. Түлхүүр нэг л
удаа харагдана; алдвал шинээр олгуулна. Энэ баримтын бүх API-д нэг түлхүүр (Нийтийн API) хүрнэ.
curl -H "X-Api-Key: <түлхүүр>" "https://inclusivedata.mn/api/survey-summary"
⚠️ Түлхүүрийг URL-д (?key=) хүлээн авахгүй — хаяг нь лог, хөтчийн түүхэнд
үлддэг. Түлхүүрээ клиентийн (хөтчийн) кодонд бүү хадгал, зөвхөн серверээс дууд.
Алдаа
| Код | Хариу | Утга |
|---|---|---|
200 |
JSON | Амжилттай |
400 |
{"error":"invalid_request","message":"…"}
|
Үл мэдэгдэх параметр, буруу cursor, limit 1–500-аас гадуур |
401 |
{"error":"unauthorized"} |
Түлхүүр байхгүй, буруу, цуцлагдсан эсвэл хүрээ нь таарахгүй |
503 |
{"error":"temporarily_unavailable"} |
Түр алдаа — Retry-After-ыг дагаж, хадгалсан cursor-оос дахин оролдоно |
Асуумжийн өгөгдөл татах (өөрчлөлтийн feed)
Байгууллагаас илгээсэн бүх асуумжийн хариу, үнэлгээг татна: шинээр илгээгдсэн, засаж шинэчлэгдсэн, устгагдсан асуумж бүр дараалсан үйл явдал болж гарна. Ноорог орохгүй.
/api/v1/assessments
curl --get "https://inclusivedata.mn/api/v1/assessments" \
-H "X-Api-Key: <түлхүүр>" \
--data-urlencode "cursor=<хадгалсан nextCursor>" \
--data-urlencode "limit=100"
Параметр
| Нэр | Төрөл | Тайлбар |
|---|---|---|
cursor |
string |
Өмнөх хариуны nextCursor. Анхны удаа өгөхгүй — бүх түүх эхнээс
нь. Тунгалаг утга: задлах, нэмэхгүй.
|
limit |
1–500 | Нэг хуудасны дээд хэмжээ, анхдагч 100 (~4 MiB хүрвэл цөөн мөр буцна) |
Үйл явдлын төрөл
| event | Хэзээ | Хүлээн авагч |
|---|---|---|
created |
Асуумж анх илгээгдсэн | assessment.id-аар upsert |
updated |
Илгээгдсэн асуумж засагдаж дахин илгээгдсэн, оноо/хариулт өөрчлөгдсөн | Бүтэн snapshot-оор солино (хэсэгчлэн merge хийхгүй) |
deleted |
Ховор: апп дотроос илгээсэн асуумж устгагддаггүй (зөвхөн ноорог). Системийн админ санд гараар цэвэрлэвэл (жишээ нь туршилтын өгөгдөл) л гарна |
assessment.id-аар устгана (assessment = зөвхөн
{id})
|
Засварлахаар түгжээ нээх нь үйл явдал биш — сүүлд илгээгдсэн хувилбар хүчинтэй хэвээр,
дахин илгээгдэхэд updated ирнэ. Утга өөрчлөгдөөгүй хадгалалт үйл явдал
үүсгэхгүй.
Жишээ хариу
{
"items": [
{
"event": "updated",
"changedAt": "2026-10-21T02:15:09.412Z",
"assessment": {
"id": "11111111-1111-4111-8111-111111111111",
"sectionId": "s1",
"form": "a176",
"title": "Байгууллагын асуумж",
"org": "Жишээ байгууллага",
"entityRegister": "1234567",
"activity": "Үйлчилгээ",
"address": "Улаанбаатар",
"assessedOn": "2026-10-19",
"lat": 47.9184,
"lng": 106.9177,
"answers": { "s1:1": { "value": "yes", "note": "Тайлбар" } },
"score": 50,
"answeredCount": 1,
"status": "submitted",
"submittedAt": "2026-10-20T08:00:00+00:00",
"createdAt": "2026-10-18T08:00:00+00:00"
}
},
{
"event": "deleted",
"changedAt": "2026-10-21T02:16:40.003Z",
"assessment": { "id": "22222222-2222-4222-8222-222222222222" }
}
],
"count": 2,
"nextCursor": "1287",
"hasMore": false
}
Талбарууд
| Талбар | Төрөл | Тайлбар |
|---|---|---|
items[].event |
string | created · updated · deleted |
items[].changedAt |
date-time | Өөрчлөлт нийтлэгдсэн цаг (UTC) |
assessment.id |
uuid | Асуумжийн ID — upsert/устгалын түлхүүр |
assessment.sectionId |
string | Эрсдэлийн орчин (s1–s22) |
assessment.form |
string | Албан ёсны маягт: a143 = А/143 тогтоол, a176 = А/176 тушаал |
assessment.title · org · entityRegister |
string | Асуумжийн нэр, байгууллага, регистр (бөглөсөн утга) |
assessment.activity · address |
string | Үйл ажиллагаа, хаяг |
assessment.assessedOn |
date | null | Үнэлгээ хийсэн өдөр (YYYY-MM-DD) |
assessment.lat · lng |
number | null | Байршил |
assessment.answers |
object | Хариу: «<sectionId>:<шалгуур>» → value (yes/no), note, story |
assessment.score |
number | Эрсдэлийн хувь (0–29 бага, 30–49 дунд, 50+ өндөр) |
assessment.answeredCount |
number | Хариулсан шалгуурын тоо |
assessment.submittedAt · createdAt |
date-time | Илгээсэн, үүсгэсэн цаг |
nextCursor |
string | null | Дараагийн хүсэлтийн cursor |
hasMore |
boolean | true бол дараагийн хуудсыг шууд татна |
count |
number | Энэ хуудасны үйл явдлын тоо |
Бөглөсөн хүний профайл, хувийн регистр, утас, баталгаажуулалтын мэдээлэл гарахгүй. Медиа файл татахгүй — зөвхөн URL.
Poll хийх алгоритм
-
Хадгалсан
nextCursor-оо уншина; анхны удааcursorөгөхгүй. -
Хуудас авч
items-ийг дарааллаар нь боловсруулна:created/updated→ upsert,deleted→ устгах. -
Өгөгдөл болон шинэ
nextCursor-ыг нэг transaction-д хадгална. -
hasMore=trueбол дараагийн хуудсыг шууд татна;falseбол дараагийн poll хүртэл хүлээнэ (жишээ нь 1–5 минут). -
Timeout, 5xx үед сүүлд хадгалсан cursor-оос дахин татна — давхар ирсэн үйл явдал
upsert тул аюулгүй. 503-ийн
Retry-After-ыг дагана.
Үйл явдлууд commit хийгдсэн дарааллаар гарна — огноо, ID-ийн дарааллаар биш. Хожуу
илгээгдсэн хуучин асуумж ч алгасагдахгүй. Хуудасны хэмжээ limit-ээс бага
байж болох тул зөвхөн hasMore-оор үргэлжлүүлнэ.
Асуумжийн ерөнхий тоо
Гадны самбарт: баталгаажсан үнэлгээ, байгууллага, дундаж эрсдэл, орчин ба аймгаар задаргаа.
/api/survey-summary
curl -H "X-Api-Key: <түлхүүр>" "https://inclusivedata.mn/api/survey-summary"
Хариуны талбарууд
| Талбар | Төрөл | Тайлбар |
|---|---|---|
generatedAt |
string | Хариу үүссэн цаг (ISO 8601, UTC) |
riskLevels |
object | high / mid / low зэргийн хил (хувиар) |
assessments.submitted |
number | Баталгаажсан үнэлгээний тоо |
assessments.draft |
number | Дуусаагүй ноорог |
organizations |
number | Давхардсаныг хассан байгууллагын тоо |
risk.assessments |
number | Тоологдсон үнэлгээ |
risk.averageRisk |
number | Дундаж эрсдэлийн хувь (0–100) |
risk.high · mid · low |
number | Их · Дунд · Бага эрсдэлтэй үнэлгээний тоо |
bySection[] |
array | 22 эрсдэлийн орчин: index, environment + risk-тэй ижил тоо |
byProvince[] |
array | Аймаг, хот: province + risk-тэй ижил тоо («—» = аймгаа бөглөөгүй) |
А/176 маягтын дата
22 эрсдэлийн орчин тус бүрээр илэрсэн эрсдэл, шийдвэрлэлт.
/api/survey-report
curl -H "X-Api-Key: <түлхүүр>" "https://inclusivedata.mn/api/survey-report"
Хариуны талбарууд
| Талбар | Төрөл | Тайлбар |
|---|---|---|
form |
string | Маягтын эрх зүйн нэр |
title |
string | Маягтын гарчиг |
generatedAt |
string | Хариу үүссэн цаг (ISO 8601, UTC) |
columns |
object | Баганын монгол нэр: risks, removed, ongoing, unresolved |
rows[].index |
number | Маягтын мөрийн дугаар (1–22) |
rows[].environment |
string | Эрсдэлийн орчны нэр |
rows[].assessments |
number | Тухайн орчинд баталгаажсан үнэлгээний тоо |
rows[].risks |
number | Илэрсэн эрсдэл («Бүгд») |
rows[].removed |
number | «Арилгасан» |
rows[].ongoing |
number | «Үргэлжилж байгаа» |
rows[].unresolved |
number | «Шийдвэрлээгүй» (мөшгөөгүйг оруулаад) |
totals |
object | rows-ийн нийт дүн (index, environment-гүй) |