inclusivedata.mninclusivedata.mnAPI баримтInclusivedata.mn

Асуумжийн 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)

Байгууллагаас илгээсэн бүх асуумжийн хариу, үнэлгээг татна: шинээр илгээгдсэн, засаж шинэчлэгдсэн, устгагдсан асуумж бүр дараалсан үйл явдал болж гарна. Ноорог орохгүй.

GET/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 хийх алгоритм

  1. Хадгалсан nextCursor-оо уншина; анхны удаа cursor өгөхгүй.
  2. Хуудас авч items-ийг дарааллаар нь боловсруулна: created/updated → upsert, deleted → устгах.
  3. Өгөгдөл болон шинэ nextCursor-ыг нэг transaction-д хадгална.
  4. hasMore=true бол дараагийн хуудсыг шууд татна; false бол дараагийн poll хүртэл хүлээнэ (жишээ нь 1–5 минут).
  5. Timeout, 5xx үед сүүлд хадгалсан cursor-оос дахин татна — давхар ирсэн үйл явдал upsert тул аюулгүй. 503-ийн Retry-After-ыг дагана.

Үйл явдлууд commit хийгдсэн дарааллаар гарна — огноо, ID-ийн дарааллаар биш. Хожуу илгээгдсэн хуучин асуумж ч алгасагдахгүй. Хуудасны хэмжээ limit-ээс бага байж болох тул зөвхөн hasMore-оор үргэлжлүүлнэ.

Асуумжийн ерөнхий тоо

Гадны самбарт: баталгаажсан үнэлгээ, байгууллага, дундаж эрсдэл, орчин ба аймгаар задаргаа.

GET/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 эрсдэлийн орчин тус бүрээр илэрсэн эрсдэл, шийдвэрлэлт.

GET/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-гүй)