Skip to content

Хувилбарын тэмдэглэл (2026-10-12 хүртэл гараар бичсэн) ​

0.85.0 (2026-10-14) ​

  • Шинэ: GET /v1/entrances/near?lat=&lon= цэгийн хамгийн ойрын барилгын entrance (internal)-үүдийг өгнө: газрын зураг дээр удаан дарах, эсвэл хэрэглэгчийн байрлалаас "Энд байгаа entrance (internal)". Ойроосоо эхэлж, бүр нь GET /v1/address/{id}/entrances-ийнх шиг, дээр нь building ба distance_m. Үүсгэсэн entrance (internal) орно, тэгж бичигдэнэ (source generated, confidence 0). radius өгөөгүй бол 50 м, дээд тал нь 1000; limit өгөөгүй бол 1, дээд тал нь 20. JS SDK 0.80.0: client.entrancesNear([lon, lat]). Юу ч хасаагүй.

0.84.0 (2026-10-14) ​

  • Шинэ: GET /v1/address/{id}/entrances барилгын entrance (internal)-үүдийг нэг дуудлагаар, картад нь өгнө: дугаартай нь эхэнд, бүрт түвшин (matched бүртгэлтэй, partial хэсэгчилсэн, none албан бус) ба хаалга нь үүссэн бол код. Хаалгагүй entrance (internal) барилгын албан ёсны хэлбэрийг (нийтийн эх сурвалжаас) дугаартайгаа авна. Үүсгэсэн entrance (internal) source generated, confidence 0 (таамаг). Нураасан барилга 410, хязгаарлалттай газар 404. JS SDK 0.79.0: client.entrances(id). Юу ч хасаагүй.

0.83.0 (2026-10-13) ​

  • Шинэ: dock Events. POST /v1/events арга хэмжээ нээнэ (нэр, талбай, эхлэх, дуусах цаг), зохион байгуулагчийн гэрээгээр (events.live боломж). POST /v1/events/{id}/positions оролцогчийн байрлалыг авна (dock.position.v1: format, consent: 'opt_in', санамсаргүй оролцогчийн токен, [lon, lat, t]); нэр, дугаар, утас, төхөөрөмж илгээхгүй, хадгалахгүй. Талбай, цагаас гадуурх, хязгаарлалттай газрын цэг хадгалахгүй. GET /v1/events/{id}/live 5 ба түүнээс олон оролцогч байвал сүүлийн 2 минутын цэгүүд, 4 оронтой; GET /v1/events/{id}/heat 100 м нүд, 5 ба түүнээс олон оролцогчтой (trace:read). Дууссанаас 15 минутын дараа бүх цэг устаж, нүд үлдэнэ. JS SDK 0.78.0: client.createEvent(), client.event(), client.startEventPositions(), client.stopEventPositions(), client.eventLive(), client.eventHeat(). Юу ч хасаагүй.

0.82.0 (2026-10-13) ​

  • Шинэ: POST /v1/traffic/probes флотын машины сүүлийн байрлалыг авна (dock.probe.v1: format, 15 минут тутам шинээр үүсгэх санамсаргүй машины токен, [lon, lat, t] цэгүүд). Флотын гэрээ байгуулсан байгууллагад нээгдэнэ (traffic.probes боломж); жолооч, утас, улсын дугаар, төхөөрөмж илгээхгүй, хадгалахгүй. GET /v1/traffic?bbox= дууссан сүүлийн 15 минутын замын шууд хурдыг өгнө, зөвхөн 5 ба түүнээс олон машин явсан зам (insights:read). JS SDK 0.77.0: client.startProbes(), client.stopProbes(), client.traffic(bbox). Юу ч хасаагүй.

0.81.0 (2026-10-13) ​

  • Шинэ: POST /v1/track/{token}/door: хэрэглэгч хянах холбоос дээр "энэ миний орох хаалга" гэж дарна; хүргэлтийн орох хаалга өөрийнх гэсэн үг, хүргэлт бүрт нэг удаа, зураггүй, нэргүй. GET /v1/track/{token} code (хүргэлт орох хаалга бол хаалганы код), door_said өгнө. Хүргэгдсэн гэж тэмдэглэхэд жолоочийн сүүлийн 2 минутын байршил хаалгаас 8 м дотор бол тэр хаалганы зогсолт болно.
  • Өөрчлөлт: хаалга 3 өөр өдөр 8 м дотор 3 зогсолтоор, эсвэл 1 зогсолт ба хэрэглэгчийн үгээр итгэлтэй (түвшин 3) болно. Нэг өдрийн гурван товшилт 3 болгохоо больсон. Зураг хэзээ ч шаардахгүй. Юу ч хасаагүй.

0.80.0 (2026-10-13) ​

  • Шинэ: GET /v1/nearby?lat=&lon=&category= цэгийн ойрын газрыг ангиллаар нь, ойроос нь өгнө (category=pharmacy, category=restaurant,cafe; radius 1000 м, 10000 хүртэл; limit 10, 20 хүртэл). Ангилал нь газрын зургийн дүрс: эмнэлэг, сургууль, цэцэрлэг, буудал, худалдааны төв, зах г.м. Банк, шатахуун, эмийн сан, хоол, кафе, дэлгүүр зөвхөн улсын бүртгэлтэй таарсан бизнес; таарах хүртэл хоосон жагсаалт. JS SDK 0.76.0: client.nearby(point, categories). Юу ч хасаагүй.

0.79.0 (2026-10-13) ​

  • Шинэ: building тайл ба GET /v1/tilequery барилга бүрт height_source (өндөр хаанаас: шошго, давхар, төрлийн анхдагч, ул мөрийн хэлбэр ба хэмжээнээс тооцоолсон) ба height_confidence (3 шошго, 2 давхар, 1 анхдагч, 0 тооцоолсон) өгнө. 0 ба 1 нь тооцоо, хэмжилт биш. Юу ч хасаагүй.

0.78.0 (2026-10-13) ​

  • Өөрчлөгдсөн: тайлд минутын хязгаар байхгүй, байгууллагын өдрийн тайлын хязгаар л тоологдоно. Газрын зураг нэг дор олон тайл асуудаг, 429 хариу зураг дээр нүх үлдээдэг байсан. tile_rate_limit талбар хариунд хэвээр, хэрэгжихгүй.
  • Шинэ: entrance тайл ба GET /v1/tilequery entrance (internal) бүрт building_id (барилгынх нь id) өгнө. Шинэ place тайл (z11-ээс): дүүрэг, хороолол, нийтийн газар, бүртгэлтэй бизнес, байрны ба entrance (internal)-ны дугаар, ангилал ба зэрэглэлтэй. Юу ч хасаагүй.

0.77.0 (2026-10-13) ​

  • Өөрчлөгдсөн: POST /v1/orders/import хаягийг хүмүүсийн бичдэгээр уншина. Дүүргийн товчлол, латин нэр ("БГД", "хан уул", "HUD"), нүднийхээ утасны дугаар, entrance (internal), давхар, тоот, газрын тэмдгийн эргэн тойрны үг ("сургуулийн ард", "хажууд") хайлтад орохгүй. Дүүрэг бичсэн бол хамгийн сайн таван газрын тэр дүүрэгт байгаа эхнийхийг авна. Хүснэгтийн бусад хаягаас хол (30 км-ээс илүү) олдсоныг тэдний ойроос дахин хайна. Юу ч хасаагүй.

JS SDK 0.75.0 (2026-10-12) ​

  • Шинэ: SearchBox, газрын зураг дээрх хайлтын удирдлага (map.addControl), сонгосон газрын карт, тэмдэгтэй (SEARCH_SOURCE). Юу ч хасаагүй.

0.76.0 (2026-10-12) ​

  • Шинэ: диспетчер. POST /v1/orders/import хүснэгтээс буулгасан (таб) эсвэл CSV хүргэлтүүдийг авна; хаяг бүрийг dock-ийн хайлтаар олно, дүүргийн нэрийг хайх газар гэж уншиж, олдсон газар тэр дүүрэгт байгааг шалгана. Олдоогүйг "олдсонгүй" гэж хадгална, хэзээ ч таамаглахгүй. Хэрэглэгчийн нэр, утасны баганыг хадгалахгүй. GET /v1/orders, POST /v1/dispatch/plan (жолооч бүрт ижил тооны цэг, замын хамгийн богино дараалал, ирэх цаг), PATCH /v1/orders/{id} (өөр жолоочид), GET /v1/fleet/positions, POST /v1/orders/{id}/track ба түлхүүргүй GET /v1/track/{token} (dock.mn/t/...). Жолоочийн апп: GET /v1/driver/jobs, POST /v1/driver/position, POST /v1/driver/jobs/{id}/status. Компани бүрийнх тусдаа (row-level security). Юу ч хасаагүй.

0.75.0 (2026-10-12) ​

  • Шинэ: олон компани нэг платформ дээр. POST /v1/signup компанийн нэр (name) авна; имэйлтэй бол тэр хүн компанийн эзэн болно. Эхний түлхүүрт org:admin нэмэгдсэн. GET /v1/org: компанийн нэр, бүх түлхүүрт нэг өдрийн хязгаар, хүмүүс (org:admin-тэй түлхүүрт), идэвхтэй түлхүүрийн тоо. GET /v1/keys, POST /v1/keys (өөрийн эрхүүдээс сонгоно), DELETE /v1/keys/{prefix}. POST /v1/org/invites (админ, хөгжүүлэгч, жолооч) нэг удаагийн холбоос өгнө; POST /v1/org/invites/accept урьсан хүнд өөрийн түлхүүрийг өгнө. Компани бүрийн мөрийг өгөгдлийн сан өөрөө тусгаарлана (row-level security). Юу ч хасаагүй.

0.74.0 (2026-10-12) ​

  • Шинэ: GET /v1/route-ийн legs[].steps: эргэлт бүрийн заавар, монголоор (mn) ба англиар (en), хийх зүйл (kind), газар (location), дараагийн алхам хүртэлх метр, секунд, гудамжны нэр, монгол дуут хэллэгийн id (voice). Сүүлийн алхам замын төгсгөлд; хаалга замаас 15 м-ээс хол бол машинаа тавиад алхахыг хэлнэ. Юу ч хасаагүй.

JS SDK 0.74.0 (2026-10-12) ​

  • Шинэ: Navigator: маршрутыг байршил бүрээр дагаж, эргэлтийг урьдчилан ба яг дээр нь хэлнэ, замаас 40 м-ээс хол 3 удаа гарвал шинэ маршрут асууна, замын төгсгөлд 20 м-т ирэхэд "ирлээ" гэнэ. VoicePlayer: монгол хэллэгүүдийг дараалан тоглуулна, анхнаасаа асаалттай. RouteStep, RouteLeg. Юу ч хасаагүй.

0.73.0 (2026-10-12) ​

  • Шинэ: POST /v1/styles мөн {"name", "style"} авна: dock Studio-гийн хадгалдаг бүтэн MapLibre загвар (version 8), 512 KB хүртэл, style spec-ээр зөв, URL-уудаас нь access_token-ийг авсан; түлхүүр үлдсэн бол татгалзана (400 invalid_style). GET /v1/styles/{id} хадгалсан хэвээр нь, энэ API дээрх эх сурвалжийн URL-д таны ?access_token= нэмэгдсэн байдлаар өгнө. Жагсаалтад {"kind": "maplibre"} гэж харагдана. Юу ч хасаагүй.

0.72.0 (2026-10-12) ​

  • Шинэ: POST /v1/signup сонголтоор JSON бие {"email": ...} авна, бүртгэлийн холбоо барих хаяг (dock.mn/account). Байгууллагатай нь хадгална, лог, хариу, экспортод орохгүй; одоогоор баталгаажуулаагүй. Буруу хаяг 400 invalid_email. Биегүй хүсэлт хэвээр ажиллана. Юу ч хасаагүй.

JS SDK 0.73.0 (2026-10-12) ​

  • Шинэ: SDK нэг script tag-аар, https://dock.mn/sdk/v1/dock.js ба dock.css, дотроо maplibre-gl-тэй, window.dock дээр; dock.createMap(client, options). npm алхам хэрэггүй.
  • Өөрчлөгдсөн: baseUrl-ийн анхны утга https://geo.dock.mn (өмнө нь api.dock.mn, энэ нь dock-ийн газрын зургийн API биш). Swift, Android-ийн анхны утга мөн адил. Юу ч хасаагүй.

JS SDK 0.72.0 (2026-10-10) ​

  • Шинэ: sendConfirmPhoto(id, jpeg) (API 0.71.0), confirm() хариулсны дараа түүний id-тай илгээх entrance (internal)-ны зураг. Uint8Array, ArrayBuffer эсвэл Blob, байгаагаар нь илгээнэ. ConfirmPhotoReceipt. Swift, Android: одоохондоо үгүй. Юу ч хасаагүй.

0.71.0 (2026-10-10) ​

  • Шинэ: POST /v1/confirm/{id}/photo, жолооч таны баталгаажуулалтын хамт авсан entrance (internal)-ны зураг (MVP.md, явган шалгалт). Бие нь камерын хадгалсан нэг JPEG, image/jpeg, 2 MB хүртэл, тал бүр 320-8000 px. Хадгалахаас өмнө мета өгөгдлийг (GPS, утас, цаг) нь устгана. Нэг баталгаажуулалтад нэг зураг: ижил зургийг дахин илгээвэл unchanged, өөр зураг 409 photo_exists. Зөвхөн өөрийн байгууллагын баталгаажуулалт; хязгаарлалттай газарт 404. Entrance (internal)-д хаалга үүссэний дараа хүн хянана. Нийтийн хуудсанд хэзээ ч харагдахгүй. confirm:write шаардана. Юу ч хасаагүй.

Туршуурын замд буулгах (2026-10-06) ​

  • Туршуур: Замд буулгах таб (matching): мөр (; тусгаарласан 2-100 уртраг,өргөрөг), цаг (заавал биш, цэг бүрт нэг Unix секунд), хэлбэр. Явсан замыг SDK-ийн matchingSource, matchingLayers-ээр зурагт зурж, хэсэг бүрийг минут, км-ээр, цэг бүр аль хэсэгт хэдэн метрт буусныг жагсаана. Зурагт дарвал цэг нэмнэ. JS SDK, curl жишээ илгээсэн хүсэлттэй адил. SDK, API өөрчлөгдөөгүй.

Туршуурын дараалал (2026-10-06) ​

  • Туршуур: Дараалал таб (optimized-trips): зогсоолууд (; тусгаарласан 2-12 код эсвэл уртраг,өргөрөг), эхэнд нь буцах эсэх, хэлбэр. Замыг SDK-ийн optimizedTripSource, optimizedTripLayers-ээр зурагт зурж, зогсоолуудыг явах дарааллаар, хэсэг бүрийг минут, км-ээр жагсаана. Зурагт дарвал зогсоол нэмнэ. JS SDK, curl жишээ илгээсэн хүсэлттэй адил. SDK, API өөрчлөгдөөгүй.

Туршуурын хүснэгт (2026-10-06) ​

  • Туршуур: Хүснэгт таб (matrix): эхлэлүүд, төгсгөлүүд (тал бүрт ; тусгаарласан 1-10 код эсвэл уртраг,өргөрөг), хэлбэр. Хариуг мөр нь эхлэл, багана нь төгсгөл, нүд бүрт минут, км хүснэгтээр харуулна. JS SDK, curl жишээ илгээсэн хүсэлттэй адил. SDK, API өөрчлөгдөөгүй.

Туршуурын хүрэх бүс (2026-10-06) ​

  • Туршуур: Хүрэх бүс таб (isochrone): эхлэл (код эсвэл уртраг,өргөрөг), минут (contours_minutes), хэлбэр. Хариуг SDK-ийн isochroneSource, isochroneLayers-ээр зурагт зурна. JS SDK, curl жишээ илгээсэн хүсэлттэй адил. SDK, API өөрчлөгдөөгүй.

Туршуурын цэг дээр (2026-10-06) ​

  • Туршуур: Цэг дээр таб (tilequery): цэг, радиус, тоо, давхарга (sources), геометр. Tile табын зураг энэ табад гарч, дарсан цэгийг асууна. JS SDK, curl жишээ илгээсэн хүсэлттэй адил. SDK, API өөрчлөгдөөгүй.

Туршуурын ойролцоо (2026-10-06) ​

  • Туршуур: Хайлт табад Ойролцоо талбар (proximity, уртраг,өргөрөг), Зургийн төв товч Tile табын зургийн төвийг оруулна. JS SDK, curl жишээнд илгээсэн цэг 7 оронтой харагдана. Хоосон бол илгээхгүй. SDK, API өөрчлөгдөөгүй.

Туршуурын төрөл (2026-10-06) ​

  • Туршуур: Хайлт, Цэгээр табад төрөл бүрт чагт (types). Чагтласан төрлүүд geocode, reverse-д очно, JS SDK, curl жишээнд мөн адил жагсаалт харагдана. Чагтлаагүй бол бүх төрөл, types илгээхгүй. Хайлтад geocode-ийн 8 төрөл, Цэгээрт reverse-ийн шүүж чадах 4 төрөл. SDK, API өөрчлөгдөөгүй.

JS SDK 0.71.0, Swift SDK 0.64.0, Android SDK 0.65.0 (2026-10-06) ​

  • Шинэ: Suggester-т types гурван SDK-д, JS-ийн attachSuggest-д ч. geocode-ийн types шиг зөвхөн сонгосон төрлүүдийг санал болгоно: гудамж сонгогч талбар. Хаалганы код эсвэл холбоосыг types-д door байвал л хаалгаар хайна. Хоосон эсвэл байхгүй бол бүх төрөл, өмнөх шиг. JS-д өөр төрлийг хүсэлт илгээхээс өмнө 400 invalid_types-ээр татгалзана. Юу ч хасаагүй.

JS SDK 0.70.0, Swift SDK 0.63.0, Android SDK 0.64.0 (2026-10-06) ​

  • Шинэ: geocode-д types (API 0.70.0), гурван SDK-д. Зөвхөн door, business, building, district, khoroo, area, street, landmark-ийн сонгосон төрлүүдийг үлдээнэ, limit-ээс өмнө сонгоно: гудамж асуувал хамгийн сайн гудамжууд ирнэ. Сүлжээгүй үед сонгосон газруудаас мөн зөвхөн тэр төрлүүд. Таслалаар илгээнэ, давтагдсаныг нэг удаа, өгсөн дарааллаар. Хоосон эсвэл байхгүй бол бүх төрөл, өмнөх шиг. JS-д өөр төрлийг хүсэлт илгээхээс өмнө 400 invalid_types-ээр татгалзана, API шиг; GEOCODE_TYPES. Swift, Kotlin-д GeocodeType enum. Юу ч хасаагүй.

0.70.0 (2026-10-06) ​

  • Шинэ: GET /v1/geocode-д types, Mapbox-ын хаягаар хайлтын types шүүлтүүр болон GET /v1/reverse-ийн types шиг. door, business, building, district, khoroo, area, street, landmark-ын нэг буюу хэд нь, таслалаар; давтагдсаныг нэг удаа авна. Зөвхөн тэр төрлүүд, limit хүртэл, бүх давхаргад ирнэ: гудамж асуувал хамгийн сайн гудамжууд, хамгийн сайн газруудын доторх гудамж биш. "Ойролцоо" хайлтад танил газрыг бүх төрлөөс хайсаар байна. Нэртэй хаалга зөвхөн types-д door байвал ирнэ. Байхгүй эсвэл хоосон бол бүх төрөл, өмнөх шиг. Өөр төрөл эсвэл хоосон хэсэг нь 400 invalid_types. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.69.0, Swift SDK 0.62.0, Android SDK 0.63.0 (2026-10-06) ​

  • Шинэ: reverse-д types (API 0.69.0), гурван SDK-д. Зөвхөн door, business, building, landmark-ийн сонгосон төрлүүдийг үлдээнэ, limit-ээс өмнө сонгоно: хаалга асуувал хамгийн ойрын хаалганууд ирнэ. Таслалаар илгээнэ, давтагдсаныг нэг удаа, өгсөн дарааллаар. Хоосон эсвэл байхгүй бол бүх төрөл, өмнөх шиг. JS-д өөр төрлийг хүсэлт илгээхээс өмнө 400 invalid_types-ээр татгалзана, API шиг; REVERSE_TYPES, төрөл ReverseType. Swift, Kotlin-д ReverseType enum. Юу ч хасаагүй.

0.69.0 (2026-10-06) ​

  • Шинэ: GET /v1/reverse-д types, Mapbox-ын цэгээр хайлтын types шүүлтүүр шиг. door, business, building, landmark-ын нэг буюу хэд нь, таслалаар; давтагдсаныг нэг удаа авна. Зөвхөн тэр төрлүүд, limit хүртэл ирнэ: хаалга асуувал хамгийн ойр хаалгууд, хамгийн ойр газруудын доторх хаалга биш. Дүүрэг, хороо өөрчлөгдөхгүй. Байхгүй эсвэл хоосон бол бүх төрөл, өмнөх шиг. Өөр төрөл эсвэл хоосон хэсэг нь 400 invalid_types. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.68.0, Swift SDK 0.61.0, Android SDK 0.62.0 (2026-10-06) ​

  • Шинэ: tilequery (API 0.68.0), гурван SDK-д ижил нэртэй. Цэг дээрх эсвэл ойрхон байгаа байшин, entrance (internal), хамгийн ойроос нь, API-ын илгээдэг GeoJSON FeatureCollection-оор: газрын зураг дээр дарсан газарт юу байгааг. sources нь building, entrance эсвэл хоёулаа (анхдагч); radius 0-1000 метр, сантиметр хүртэл илгээнэ (TILEQUERY_RADIUS_MAX_M; Swift tilequeryRadiusMaxM); limit 1-50 (TILEQUERY_LIMIT_MAX; Swift tilequeryLimitMax); geometry нэг төрлийг үлдээнэ. Хоосон эсвэл давтагдсан эх үүсвэрийг хүсэлт илгээхээс өмнө 404 not_found-оор, тоо биш цэгийг 400 invalid_point-оор, бусдыг 400 invalid_radius, invalid_limit-ээр татгалзана, API шиг. Төрөл Tilequery, TilequeryFeature, TilequeryProperties, TilequeryInfo (Swift, Kotlin-д мөн TilequeryPoint, TilequerySource, TilequeryGeometry). Эрх tiles:read. Юу ч хасаагүй.
  • API лавлах tilequery-ийн name_mn, name_en, letter (string), height_m (number), levels, confidence (integer) талбарын төрлийг одоо заана; өмнө нь object гэж уншигдаж байсан. Хариу өөрөө өөрчлөгдөөгүй.

0.68.0 (2026-10-06) ​

  • Шинэ: GET /v1/tiles/{sources}/tilequery/{lon},{lat}, нэг цэг дээрх эсвэл ойрхон байгаа тайлын объект, хамгийн ойроос нь, Mapbox-ын Tilequery API шиг. sources нь building, entrance эсвэл хоёулаа таслалаар. radius нь 0-1000 метр, анхдагч 0: цэг дотор нь байгаа байшин; entrance (internal)-д radius хэрэгтэй. limit 1-50, анхдагч 5. geometry нь polygon, linestring, point-ын нэг. Төгсгөлд .json байж болно. Хариу нь GeoJSON FeatureCollection: объект бүр нь цэгт хамгийн ойрх хэсэг нь (Point), тайлын талбарууд нь, tilequery (distance метрээр, geometry, layer). Тайлтай ижил мөр: одоогийн, нураагүй, хязгаарлалттай газарт юу ч үгүй, хаалганы код үгүй. Цэгийн 7 дахь орон нь танай байгууллагын тэмдэг. Эрх tiles:read; тайлын хязгаарт биш, rate_limit, daily_quota-д тооцно. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.67.0 (2026-10-06) ​

  • Шинэ: routeSource(trip), routeLayers({ source?, color?, width?, font? }), route-ийн хариуг дайрах цэгүүдтэй нь MapLibre газрын зураг дээр хоёр мөрөөр. Эх үүсвэрт шугам (mode, distance_m, duration_s), дараа нь шугам хүрэх газарт төгсгөл бүрт нэг цэг, дайрах дарааллаар (number 1-ээс: from, дайрах цэг бүр, to; role; via нь илгээсэн жагсаалт дахь байрлал, from, to-д null; gap_m), хариуны source эх сурвалжаар. API 0.67.0-аас өмнөх хариунд via байхгүй: зөвхөн from, to. Давхарга нь шугам, төгсгөл бүрийн цагираг, id нь <source>-line, <source>-end; font (загварын glyphs дээрх фонтын багц) өгвөл <source>-number нь төгсгөл бүрийн дугаар. dock загварт glyphs байхгүй: түүн дээр font-ыг бүү өг. ROUTE_SOURCE нь 'dock-route'. Зөвхөн JS; API өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.66.0, Swift SDK 0.60.0, Android SDK 0.61.0 (2026-10-06) ​

  • Шинэ: route-д via (API 0.67.0), гурван SDK-д. Замдаа дайрах 10 хүртэл төгсгөл, дарааллаар (ROUTE_VIA_MAX; Swift-д routeViaMax), тус бүр хаалганы код эсвэл цэг. JS { via }, Swift to:-ийн дараа via:, Android-д via хамгийн сүүлд, тиймээс түүнгүй дуудлага өмнөхөөрөө. Хоосон жагсаалт юу ч илгээхгүй. Урт жагсаалт, ; агуулсан кодыг хүсэлт илгээхээс өмнө API-ийн 400 invalid_via-аар татгалзана. Route-д legs (TripLeg), via (RouteEnd) нэмэгдсэн, хоёулаа заавал биш: хуучин API-д байхгүй. Юу ч хасаагүй.

0.67.0 (2026-10-06) ​

  • Шинэ: GET /v1/route-д via, Mapbox-ын Directions API-ийн эхний ба сүүлчийн координатын хоорондох waypoint шиг. ;-аар холбосон 1-10 төгсгөл, тус бүр хаалганы код (entrance (internal) хүртэл; door:read эрх бас хэрэгтэй) эсвэл lon,lat, илгээсэн дарааллаар дайрна. Шугам дайрах цэг дээр буцаж эргэж болно. Тус бүрийг from, to шиг татгалзаж, байрлалаар нэрлэнэ: via[1]: no door has the code ..., via[0] is inside closure .... Хоосон илгээсэн эсвэл 10-аас олон бол 400 invalid_via. Хариуд legs нэмэгдсэн, хэсэг бүрт нэг (distance_m, duration_s; via-гүй бол нэг), мөн via, дайрах төгсгөлүүд илгээсэн дарааллаар маршрутын төгсгөл хэлбэрээр, шугам дайрсан газар нь snapped (via-гүй бол []). measured бүх шугамыг хамарна. Юу ч хасаагүй; via-гүй маршрут өмнөхтэй адил, эдгээр хоёр талбар нэмэгдсэн.

JS SDK 0.65.0 (2026-10-06) ​

  • Шинэ: optimizedTripSource(round), optimizedTripLayers({ source?, color?, width?, font? }), optimizedTrips-ийн хариуг MapLibre газрын зураг дээр хоёр мөрөөр. Эх үүсвэрт аяллын шугам (trips_index, distance_m, duration_s), дараа нь аялал хүрэх газарт зогсоол бүрт нэг цэг, явах дарааллаар (number 1-ээс, stop нь илгээсэн жагсаалт дахь байрлал, gap_m), хариуны source эх сурвалжаар. Давхарга нь шугам, зогсоол бүрийн цагираг, id нь <source>-line, <source>-stop; font (загварын glyphs дээрх фонтын багц) өгвөл <source>-number нь зогсоол бүрийн дугаар. dock загварт glyphs байхгүй: түүн дээр font-ыг бүү өг. waypoint_index нь 0-оос n - 1 хүртэл тус бүр нэг удаа биш хариуг RangeError-оор татгалзана. OPTIMIZED_TRIP_SOURCE нь 'dock-optimized-trip'. Зөвхөн JS; API өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.64.0, Swift SDK 0.59.0, Android SDK 0.60.0 (2026-10-06) ​

  • Шинэ: optimizedTrips (API 0.66.0), гурван SDK-д ижил нэртэй. 2-оос 12 зогсоолыг (OPTIMIZED_TRIPS_MAX; Swift-д optimizedTripsMax), тус бүр хаалганы код эсвэл цэг, замд хамгийн бага хугацаа зарцуулах дарааллаар тавьж, тэр дарааллаарх аяллыг өгнө. roundtrip заавал биш, өгсөн үед л илгээнэ. Хариу нь OptimizedTrip: trips (Trip, TripLeg), waypoints (TripWaypoint, waypoint_index-тэй). Цөөн эсвэл олон зогсоол, ; агуулсан кодыг хүсэлт илгээхээс өмнө 400 invalid_coordinates-оор татгалзана. Эрх route:read, код бол door:read. Юу ч хасаагүй.

0.66.0 (2026-10-06) ​

  • Шинэ: GET /v1/optimized-trips, зогсоолуудыг замд хамгийн бага хугацаа зарцуулах дарааллаар тойрно, Mapbox-ын Optimization API (v1) шиг. coordinates нь ;-аар холбосон 2-12 төгсгөл, тус бүр хаалганы код (entrance (internal) хүртэл; door:read эрх бас хэрэгтэй) эсвэл lon,lat. Аялал эхнийхээс эхэлнэ, Mapbox-ын source=first шиг. roundtrip анхдагчаар true: эхнийх рүүгээ буцна; false бол илгээсэн сүүлийнхээр дуусна, destination=last шиг. Хариунд trips: нэг аялал (distance_m, чөлөөт урсгалын хурдаар duration_s, GeoJSON geometry, legs нь зогсоол хоорондын хэсэг бүрт нэг), waypoints: илгээсэн дарааллаар зогсоол бүр, маршрутын төгсгөл шиг, waypoint_index нь аялал дахь байрлал. Код, хязгаарлалттай газар, өнөөдрийн хаалт, хаалганы алдаатай код GET /v1/matrix шиг. Ямар ч зам хүрэхгүй зогсоол 422 no_route. Эрх route:read. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.63.0 (2026-10-05) ​

  • Шинэ: matchingSource(trip), matchingLayers({ source?, color?, width? }): matching-ийн хариуг MapLibre газрын зураг дээр хоёр мөрөөр зурна. Эх үүсвэрт буусан хэсэг бүрт нэг шугам (matchings_index, distance_m, duration_s), дараа нь зам дээр буусан tracepoint бүрт нэг цэг (point нь илгээсэн мөр дэх байрлал, matchings_index, gap_m) байх ба хариуны source эх сурвалжаар заагдана; null tracepoint-ийг алгасна. Давхарга нь шугам, цэг бүрийн толбо, id нь <source>-line, <source>-point. MATCHING_SOURCE нь 'dock-matching'. Зөвхөн JS; API өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.62.0, Swift SDK 0.58.0, Android SDK 0.59.0 (2026-10-05) ​

  • Шинэ: matching (API 0.65.0), гурван SDK-д ижил нэртэй. 2-оос 100 цэгтэй GPS мөрийг (MATCHING_MAX; Swift-д matchingMax), цэг бүрт заавал биш бүхэл Unix секундтэй нь замд буулгана: matchings нь тасраагүй хэсэг бүрт нэг шугам, tracepoints нь цэг бүрт нэг, зам олдоогүй цэгт null. Цөөн эсвэл олон цэг, цэг бүрт нэг биш, бүхэл секунд биш эсвэл буцсан хугацааг хүсэлт илгээхээс өмнө 400 invalid_coordinates эсвэл invalid_timestamps-оор татгалзана. Swift, Kotlin-д цэгийн байрлал нь MatchTracepoint, аялал бичигчийн TracePoint-оос тусдаа. Эрх route:read. Юу ч хасаагүй.
  • openapi.json-д засвар: MatchDto.tracepoints нь хэзээ ч null биш жагсаалт, гишүүн нь null байж болно. Өмнө нь жагсаалт өөрөө null байж болно гэж бичсэн байв. Хариу өөрчлөгдөөгүй.

0.65.0 (2026-10-05) ​

  • Шинэ: GET /v1/matching, GPS мөрийг замын сүлжээнд буулгана, Mapbox-ын Map Matching API шиг. coordinates нь бичигдсэн дарааллаар ;-аар холбосон 2-100 цэг, lon,lat. timestamps заавал биш: цэг бүрт нэг Unix хугацаа, бүхэл секундээр, буцахгүй; түүгээр хэдхэн секундын зайтай хол хоёр цэг хурдан зам биш, тасалдал гэж уншигдана. Хариунд matchings: тасраагүй хэсэг бүрт нэг (distance_m, чөлөөт урсгалын хурдаар duration_s, GeoJSON geometry), tracepoints: цэг бүрт нэг (matchings_index, location, gap_m), зам олдоогүй цэгт null. Хязгаарлалттай газар доторх цэгийг хасаад null болгоно; 2-оос цөөн үлдвэл 422 not_accepted. Мөрийн ойролцоо зам байхгүй бол 422 no_match. Хаалттай замыг тойрохгүй: мөр нь хүний явсан газар. Мөрийг хадгалахгүй, логт бичихгүй. Эрх route:read. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.61.0 (2026-10-05) ​

  • Шинэ: isochroneSource(zone), isochroneLayers({ source?, color?, opacity? }): isochrone-ийн хариуг MapLibre газрын зураг дээр хоёр мөрөөр зурна. Эх үүсвэрт бүсүүд хамгийн томоос нь эхэлж, хариуны source эх сурвалжаар заагдана; давхарга нь дүүргэлт, хүрээ, id нь <source>-fill, <source>-line, тиймээс ойрын бүс бүр дээр нь илүү бараан харагдана. ISOCHRONE_SOURCE нь 'dock-isochrone'. Зөвхөн JS; API өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.60.0, Swift SDK 0.57.0, Android SDK 0.58.0 (2026-10-05) ​

  • Шинэ: isochrone (API 0.64.0), гурван SDK-д ижил нэртэй. Нэг төгсгөлөөс (route-ынх шиг хаалганы код эсвэл цэг) 1-ээс 4 хугацаа бүрт хүрэх талбай, GeoJSON FeatureCollection-оор, хамгийн томоос нь эхэлнэ. Хугацаа нь 1-ээс 60 хүртэлх бүхэл минут, өсөх дарааллаар (ISOCHRONE_CONTOURS_MAX, ISOCHRONE_MINUTES_MAX; Swift-д isochroneContoursMax, isochroneMinutesMax); өөрийг нь хүсэлт илгээхээс өмнө 400 invalid_contours-оор татгалзана. Swift, Kotlin-д IsochroneGeometry нь Polygon эсвэл MultiPolygon, polygons бүх хэсгийг өгнө. route:read эрх, код бол door:read. Юу ч хасаагүй.

0.64.0 (2026-10-05) ​

  • Шинэ: GET /v1/isochrone, нэг төгсгөлөөс хэдэн минутад хүрэх талбай, Mapbox-ын Isochrone API шиг. from нь GET /v1/route-д байдгаар нэг төгсгөл: хаалганы код (entrance (internal)-оос нь; door:read бас хэрэгтэй) эсвэл lon,lat. contours_minutes нь таслалаар холбосон 1-4 бүхэл минут, 1-60, өсөх дарааллаар (5,10,15). Хариу нь GeoJSON FeatureCollection: contour бүрт нэг polygon, хамгийн томоос нь эхэлнэ, properties.contour минут. Газрын зурагт шууд эх үүсвэр болгон нэмнэ. from маршрутын төгсгөл шиг (point, snapped, gap_m, door). Хязгаарлалттай газар, өнөөдрийн хаалттай замыг маршрут шиг. Чөлөөт урсгалын хурдаар. Эрх route:read. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.59.0, Swift SDK 0.56.0, Android SDK 0.57.0 (2026-10-05) ​

  • Шинэ: matrix (API 0.63.0), гурван SDK-д ижил нэртэй. from-ын төгсгөл бүрээс to-ын төгсгөл бүр хүртэлх түгжрэлгүй хугацаа, зайг нэг дуудлагаар өгнө, төгсгөл бүр route-ынх шиг хаалганы код эсвэл цэг; зам холбохгүй бол null (Swift-д nil). Нэг талд MATRIX_MAX (Swift-д matrixMax), 10 хүртэл төгсгөл. Хоосон эсвэл урт жагсаалт, ; агуулсан кодыг хүсэлт илгээхээс өмнө 400 invalid_from эсвэл invalid_to-оор татгалзана. route:read эрх, код бол door:read. Юу ч хасаагүй.

0.63.0 (2026-10-05) ​

  • Шинэ: GET /v1/matrix, from бүрээс to бүр хүртэлх хугацаа, зай нэг дуудлагаар, Mapbox-ын Matrix API шиг. from, to тус бүр ;-ээр холбосон 1-10 төгсгөл, тус бүр GET /v1/route-д байдгаар: хаалганы код (entrance (internal) руу нь; door:read бас хэрэгтэй) эсвэл lon,lat. durations_s[i][j], distances_m[i][j] нь from[i]-ээс to[j] хүртэл, чөлөөт урсгалын хурдаар; зам холбохгүй бол null. from, to төгсгөл бүрийг маршрутын төгсгөл шиг өгнө (point, snapped, gap_m, door). Хязгаарлалттай газар, өнөөдрийн хаалттай замыг маршрут шиг. Хаалга биш код бүр олдоогүй хаалгад тоологдоно, дараа нь эхнийх нь байрлалаараа татгалзана (to[1]: no door has the code ...). Бүх матриц нэг дуудлага. Эрх route:read. SDK-д хараахан байхгүй. Юу ч хасаагүй.

JS SDK 0.58.0, Swift SDK 0.55.0, Android SDK 0.56.0 (2026-10-05) ​

  • Шинэ: usage нь endpoints өгнө (API 0.62.0), зам бүрийн хүсэлт, олдоогүй хаалга. Заавал биш: 0.62.0-аас өмнөх API-аас JS-д undefined, Swift-д nil, Android-д null. Юу ч хасаагүй.

0.62.0 (2026-10-05) ​

  • GET /v1/usage нь endpoints нэмнэ: байгууллагын түлхүүрүүдийн дуудсан зам бүр, days-тай ижил өдрүүдээр. Мөр бүр endpoint (арга ба замын загвар, жишээ нь GET /v1/door/:code; код, нэр, хайлтын үг хэзээ ч биш), calls, misses (хаалга олдоогүй хайлт). Их дуудлагатай нь эхэндээ, тэнцвэл A-Z. Tile-ийн зам tile-аа тоолно; бусад замын calls-ын нийлбэр өдрүүдийн calls-ын нийлбэртэй тэнцэнэ. Дуудлагагүй зам орохгүй. Хэрэглээний хуудас хүснэгтээр харуулна. Юу ч хасаагүй.

JS SDK 0.57.0, Swift SDK 0.54.0, Android SDK 0.55.0 (2026-10-05) ​

  • Шинэ: хаалганы зураг (API 0.60.0, 0.61.0), гурван SDK-д ижил нэртэй. sendDoorPhoto таны нэрийн заасан хаалганы нэг JPEG зургийг хянуулахаар илгээнэ; doorPhoto хүний зөвшөөрсөн зургийг байт, sha256-тай нь буцаана. Байгаа sha256-аа өгвөл өөрчлөгдөөгүй зураг байтгүй ирнэ (304). names:write эрх, hotel.notes боломж, эс бөгөөс 403 feature_off. Нэрийг хаалганы нэртэй адил хүсэлт илгээхээс өмнө татгалзана. Юу ч хасаагүй.

0.61.0 (2026-10-05) ​

  • Шинэ: GET /v1/door-names/{name}/photo. Хаалганы хугацаа нь дуусаагүй нэр эзэмшдэг байгууллага хүн хүлээн авсан хаалганы зургаа уншиж, өөрийн аппын зочдод харуулна. Хамгийн сүүлд хүлээн авсан зураг ирнэ; хүлээгдэж буй эсвэл татгалзсан зураг, бусад байгууллагын зураг хэзээ ч ирэхгүй. Бие нь хадгалсан JPEG, Content-Type: image/jpeg, ETag нь илгээх үеийн хариуны sha256; If-None-Match таарвал 304. Cache-Control: private, no-cache. Нийтийн хуудсанд бүү тавь. Танай эзэмшдэггүй нэр, хаалга нь хаагдсан эсвэл хязгаарлалттай газарт байгаа, хүлээн авсан зураг байхгүй бол 404. Эрх names:write, боломж hotel.notes. SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

0.60.0 (2026-10-05) ​

  • Шинэ: POST /v1/door-names/{name}/photo. Хаалганы хугацаа нь дуусаагүй нэр эзэмшдэг байгууллага entrance (internal) эсвэл хаалганыхаа нэг зургийг илгээнэ: бие нь JPEG файл, Content-Type: image/jpeg, 2 MB хүртэл, тал бүр 320-8000 px. Хадгалахаас өмнө зургийн мета өгөгдлийг хасна: GPS, утасны загвар, цаг, XMP, тайлбар, жижиг зураг, файлын төгсгөлийн нэмэлт. Эргүүлэлт (orientation) болон өнгөний профайл үлдэнэ. Хариунд sha256, bytes, width, height, status (queued, updated, unchanged). Зургийг хүн хянана; одоогоор зураг өгдөг дуудлага байхгүй. Дахин илгээвэл хүлээгдэж буй зургийг солино, хуучныг түүхэнд хадгална. Эрх names:write, боломж hotel.notes. JPEG биш бол 400 not_jpeg, эвдэрсэн бол invalid_photo, жижиг бол photo_too_small, том бол photo_too_big, 2 MB-аас их бол 413 too_large. Танай эзэмшдэггүй нэр, эсвэл хаалга нь хаагдсан нэр 404. SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.56.0, Swift SDK 0.53.0, Android SDK 0.54.0 (2026-10-05) ​

  • Шинэ: хаалганы тэмдэглэл (API 0.58.0, 0.59.0), гурван SDK-д ижил нэртэй. writeDoorNotes таны нэрийн заасан хаалганы entrance (internal)-ийг зочид хэрхэн олохыг mn, en эсвэл хоёуланд нь бичиж хянуулахаар илгээнэ; doorNotes тэр хаалганд бичсэн өөрийн тэмдэглэлүүдийг waiting, accepted эсвэл refused төлөвтэй уншина. Эрх names:write, боломж hotel.notes, эс бөгөөс 403 feature_off. Нэрийг хаалганы нэртэй адил хүсэлт илгээхээс өмнө 400 invalid_name эсвэл personal_data-аар татгалзана. Тэмдэглэл дэх утасны дугаар эсвэл и-мэйлд API-ийн 400 personal_data ирнэ. Юу ч хасаагүй.

0.59.0 (2026-10-05) ​

  • Шинэ: GET /v1/door-names/{name}/notes. Хаалганы нэр эзэмшдэг байгууллага тэр хаалганд бичсэн өөрийн тэмдэглэлүүдээ уншина: state нь waiting, accepted эсвэл refused, received_at, хүн хянасан цаг reviewed_at. Хүлээгдэж буй нь эхэнд, дараа нь хамгийн сүүлд хянагдсан нь, 20 хүртэл. Өөр байгууллагын тэмдэглэл хэзээ ч гарахгүй. Эрх names:write, боломж hotel.notes. Бичихтэй адил: танай эзэмшдэггүй нэр, эсвэл хаалга нь хаагдсан нэр 404. SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

0.58.0 (2026-10-05) ​

  • Шинэ: POST /v1/door-names/{name}/notes. Хаалганы хугацаа нь дуусаагүй нэр эзэмшдэг байгууллага зочид entrance (internal)-оо хэрхэн олохыг бичнэ: instructions_mn, instructions_en эсвэл хоёулаа, тус бүр 500 хүртэл тэмдэгт. Тэмдэглэлийг хүн хянана; түүнээс өмнө GET /v1/door/{code} газрын зурагт байгаа тэмдэглэлийг өгсөөр байна. Дахин бичвэл хүлээгдэж буй бичвэрийг солино (updated, unchanged); хуучныг түүхэнд хадгална. Эрх names:write, боломж hotel.notes, эс бөгөөс 403 feature_off. Утасны дугаар эсвэл и-мэйл 400 personal_data. Танай байгууллагын эзэмшдэггүй нэр, эсвэл хаалга нь хаагдсан нэр 404. Хаалганы зураг одоогоор байхгүй. SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

0.57.0 (2026-10-05) ​

  • Шинэ: GET /v1/corridors/{name} нь label_mn, confidence_note_mn, баримтын мөр бүр text_mn өгнө: ижил тоотой монгол мөр. Байхгүй бол null: тодорхойгүй, орчуулга биш. D эгнээ text_mn-г тоо нь англи мөртэй тэнцүү үед л бичнэ; бусад мөр D эгнээ үгийг нь бэлдэх хүртэл null. GET /v1/corridors-ийн харьцуулах мөрөнд label_mn аль хэдийн бий. Бичвэр эсвэл null биш монгол талбар файлыг бүтэн биш болгоно: 503 unavailable. SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

Өөрчлөлтийн урсгалын цаг (2026-10-05) ​

  • GET /v1/changes: until одоо сүүлийн индекс шинэчлэлээс нэг секундийн өмнө, шинэчлэл өөрөө биш. Серверийн цаг ухрахад шинэчлэлийн дараахан хийсэн бичилт түүнээс секундийн хэсгээр өмнөх цагтай болж, until-аас асуусан түнш түүнийг хэзээ ч хараагүй. Одоо дараагийн цонхонд гарна. Жагсаасан id бүрийг авах боломжтой хэвээр. API өөрчлөгдөөгүй, 0.56.0.

JS SDK 0.55.0, Swift SDK 0.52.0, Android SDK 0.53.0 (2026-10-04) ​

  • Шинэ: хаалганы нэр (API 0.52.0, 0.53.0), гурван SDK-д ижил нэрээр: registerDoorName, doorNames, doorByName, doorNameTransferCode, cancelDoorNameTransfer, claimDoorName. door_names боломж нээгдэх хүртэл 403 feature_off. Үсэггүй, утасны дугаар эсвэл и-мэйлтэй нэрийг хүсэлт илгээхгүйгээр 400 invalid_name, personal_data-аар татгалзана: нэр URL-д ордог. Swift, Android-д шилжүүлж авсны хариу DoorNameReceipt, status нь transferred. Юу ч хасаагүй.

JS SDK 0.54.0, Swift SDK 0.51.0, Android SDK 0.52.0 (2026-10-04) ​

  • Шинэ: usage нь features өгнө (API 0.51.0), байгууллагад нээлттэй боломжууд, A-Z. Заавал биш: 0.51.0-аас өмнөх API-аас JS-д undefined, Swift-д nil, Android-д null. Юу ч хасаагүй.

Swift SDK 0.50.0, Android SDK 0.51.0 (2026-10-04) ​

  • Шинэ: хаалганы QR, сүлжээгүй, JS SDK 0.53.0-тай адил. doorQr(_:unit:) (Kotlin doorQr(text, unit)) doorLink-ийн холбоосын модулиудыг өгнө; doorQrSvg SVG бичвэрийг. Swift doorQrImage(_:unit:px:margin:) CGImage зурна; Kotlin doorQrPixels(text, unit, px, margin) Bitmap-д ARGB пиксел өгнө. ISO/IEC 18004, алдааны засвар M, гурван SDK-д ижил модуль (sdk/testdata/door-qr.json). Бичвэр код болж чадахгүй бол nil эсвэл null. Сан шаардахгүй. API, JS өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.53.0 (2026-10-04) ​

  • Шинэ: хаалганы QR, сүлжээгүй. doorQrSvg(text, unit, { px, margin }) хаалганы QR-ыг SVG болгоно, дотор нь doorLink-ийн холбоос; doorQr(text, unit) модулиудыг өгнө (modules[y][x], size, version). ISO/IEC 18004, алдааны засвар M. Бичвэр код болж чадахгүй бол null. Сан шаардахгүй. API, Swift, Android өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.52.0, Swift SDK 0.49.0, Android SDK 0.50.0 (2026-10-04) ​

  • Шинэ: хаалганы холбоос, сүлжээгүй. doorLink(text, unit) (Swift doorLink(_:unit:)) хаалгыг хуваалцах холбоос үүсгэнэ, https://map.dock.mn/d/7QSVX?u=17, дугаарыг percent-encode хийнэ; бичвэр код болж чадахгүй бол null (Swift nil). parseDoorLink(text) (Swift parseDoorLink(_:)) бичвэр дэх эхний хаалганы холбоосыг уншина: буулгасан мессеж, эсвэл апп-ыг нээсэн холбоосын URL; кодыг болон дугаарыг parseDoorCode шиг уншина, холбоосгүй бол null. Шинэ тогтмол DOOR_LINK_BASE (Swift doorLinkBase). Хаягийн талбар (attachSuggest, Suggester) буулгасан холбоосыг зөвхөн түүний хаалгаар хайна, geocode илгээхгүй. API өөрчлөгдөөгүй. map.dock.mn хаалганы хуудсыг одоогоор үзүүлэхгүй. Юу ч хасаагүй.

JS SDK 0.51.0, Swift SDK 0.48.0, Android SDK 0.49.0 (2026-10-04) ​

  • Шинэ: route гарах цаг авна (API 0.50.0): JS route(from, to, { departAt }) (Date эсвэл offset-тэй ISO 8601 текст), Swift route(from:to:mode:departAt:), Android route(from, to, mode, departAt) (Date). Date-ийг UTC-ээр илгээнэ. measured.band нь уншсан цагийн бүс, departAt-гүй бол null (Swift nil), 0.50.0-аас өмнөх API-д мөн. Swift, Android-д band нь String, RoadBand-ийн утга. Юу ч хасаагүй; departAt-гүй дуудлага өөрчлөгдөөгүй.

JS SDK 0.50.0, Swift SDK 0.47.0, Android SDK 0.48.0 (2026-10-04) ​

  • Шинэ: traceRoads цагийн бүс авна (API 0.49.0): JS traceRoads(month, bbox, { band }), Swift traceRoads(month:bbox:band:), Android traceRoads(month, bbox, band). am_peak Даваа-Баасан 07:00-09:59, pm_peak Даваа-Баасан 17:00-19:59, off_peak бусад цаг, Бямба, Ням бүтэн, аяллын эхний хадгалсан цэгийн Улаанбаатарын цагаар. Бүс бүр аяллын нүдний дүрмийг өөрийн аяллаар давна. Өгөхгүй бол өмнөх шиг бүх цаг. rule.hours аль нь болохыг хэлнэ. Шинэ төрөл RoadBand (Swift .amPeak, .pmPeak, .offPeak; Android AM_PEAK, PM_PEAK, OFF_PEAK). Юу ч хасаагүй; бүсгүй дуудлага өөрчлөгдөөгүй.

JS SDK 0.49.0, Swift SDK 0.46.0, Android SDK 0.47.0 (2026-10-04) ​

  • Шинэ: Route.measured (API 0.48.0), машины маршрутад: month, нийтэлсэн замын хурдны хамгийн сүүлийн сар; roads_m (Swift, Android roadsM), нийтэлсэн хөдөлгөөний хурдтай зам дээрх шугамын метр; duration_s (Swift, Android durationS), тэр замуудыг тэр хурдаар тооцсон хугацаа. Явган, дугуй, хурдыг уншиж чадаагүй, эсвэл хуучин API бол null (Swift nil). duration_s түгжрэлгүй хугацаа хэвээр. Шинэ төрөл RouteMeasured. Юу ч хасаагүй.

JS SDK 0.48.0, Swift SDK 0.45.0, Android SDK 0.46.0 (2026-10-04) ​

  • Шинэ: traceRoads(month, bbox) (Swift traceRoads(month:bbox:)) нь GET /v1/traces/roads-ийг уншина, бүх түншийн аяллын хөдөлгөөний хурдыг замаар, сараар (insights:read хэрэгтэй, API 0.47.0): GeoJSON, OSM зам бүр нэг feature, id нь замын дугаар текстээр, шугам нь dock-ийн тэр дугаартай одоогийн зам (LineString, хэсэгчилсэн бол MultiLineString), km_h (Swift, Android-д kmH) нь замд тоологдсон метрийг секундэд хуваасан, 0.1 хүртэл, name_mn, name_en, highway (Swift, Android-д nameMn, nameEn), мэдэхгүй бол null. Аяллын нүдний дүрмийг хангасан зам л; зам байхгүй нь удаан биш, аялал цөөн гэсэн үг. Аяллын тоо байхгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтэлнэ (өмнө нь 400 month_open). dock-ийн замын шугам ачаалагдах хүртэл хоосон. Шинэ төрөл TraceRoads, TraceRoad, TraceRoadGeometry (Swift, Android-д мөн TraceRoadProperties; geometry.lines нь бүх хэсгийг өгнө). Юу ч хасаагүй.

JS SDK 0.47.0, Swift SDK 0.44.0, Android SDK 0.45.0 (2026-10-04) ​

  • Шинэ: ownKinds(month) (Swift ownKinds(month:)) нь GET /v1/traces/kinds/own-ийг уншина, таны аялал ямар барилгад дуусдагийг сараар, таны самбарт (trace:read хэрэгтэй, API 0.46.0): сарын нийт trips, kinds нь аялалтай төрөл бүр ба түүний trips, ихээс нь. Төрөл нь аялал хадгалагдах үеийн барилгын төрөл; unknown нь төрөлгүй барилга, none нь 30 м дотор барилга байхгүй. Бүлгийн дүрэм байхгүй: аялал таных. Одоогийн сарыг ч өгнө; эцэслэгдсэн бол closed. Шинэ төрөл OwnKinds, OwnKind; JS-д kind нь BuildingKind, API-ийн есөн утга, Swift, Android-д String. Юу ч хасаагүй.

JS SDK 0.46.0, Swift SDK 0.43.0, Android SDK 0.44.0 (2026-10-04) ​

  • Шинэ: ownKhoroos(month) (Swift ownKhoroos(month:)) нь GET /v1/traces/khoroos/own-ийг уншина, таны аялал хаана, хэдэн цагт дуусдагийг хороо, ирсэн цагаар, сараар, таны самбарт (trace:read хэрэгтэй, API 0.45.0): сарын нийт trips, одоогийн хорооны полигонд ороогүй аялал no_khoroo (Swift, Android-д noKhoroo), хороо бүр нэг feature, полигон, дүүрэг, дугаар, хорооны trips, аялалтай цаг бүр. Бүлгийн дүрэм байхгүй: аялал таных. Одоогийн сарыг ч өгнө; эцэслэгдсэн бол closed. Хорооны полигон ачаалагдах хүртэл бүх аялал no_khoroo-д. Шинэ төрөл OwnKhoroos, OwnKhoroo (Swift, Android-д OwnKhorooProperties ч); цаг нь KhorooHour, Swift, Android-д геометр нь KhorooPolygon. Юу ч хасаагүй.

JS SDK 0.45.0, Swift SDK 0.42.0, Android SDK 0.43.0 (2026-10-04) ​

  • Шинэ: traceSpeeds(month, bbox) (Swift traceSpeeds(month:bbox:)) нь GET /v1/traces/speeds-ийг уншина, бүх түншийн аяллын хөдөлгөөний хурдыг 500 м нүдээр, сараар (insights:read хэрэгтэй, API 0.44.0): GeoJSON, аяллын нүдний торын нүд бүр нэг feature, km_h (Swift, Android-д kmH), тоологдсон метрийг тоологдсон секундэд хуваасан, 0.1 хүртэл. Аяллын нүдний дүрмийг давсан нүд л; нүд байхгүй нь удаан зам биш, аялал цөөн гэсэн үг. Аяллын тоо байхгүй. Зам бүрээр биш, нүдээр. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ (өмнө нь 400 month_open). Шинэ төрөл TraceSpeeds, TraceSpeed (Swift, Android-д TraceSpeedProperties ч); геометр нь аяллын нүдний полигон. Юу ч хасаагүй.

JS SDK 0.44.0, Swift SDK 0.41.0, Android SDK 0.42.0 (2026-10-04) ​

  • Шинэ: traceKhoroos(month) (Swift traceKhoroos(month:)) нь GET /v1/traces/khoroos-ийг уншина, бүх түншийн аялал хаана, хэдэн цагт дуусдагийг хороогоор, сараар (insights:read хэрэгтэй, API 0.43.0): GeoJSON, хороо бүр нэг feature, полигон, дүүрэг, дугаар, аяллын нүдний дүрмийг давсан цаг бүр. Хорооны нийт тоо байхгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ (өмнө нь 400 month_open). Хорооны полигон ачаалагдах хүртэл хариу хоосон. Шинэ төрөл TraceKhoroos, TraceKhoroo, KhorooHour (Swift, Android-д TraceKhorooProperties, KhorooPolygon ч). Юу ч хасаагүй.

JS SDK 0.43.0, Swift SDK 0.40.0, Android SDK 0.41.0 (2026-10-04) ​

  • Шинэ: allHours(month) (Swift allHours(month:)) нь GET /v1/traces/hours-ийг уншина, бүх түншийн аялал хэзээ эхэлдгийг сараар (insights:read хэрэгтэй, API 0.41.0): аяллын нүдний дүрмийг давсан гараг, цаг бүр, гараг дараа нь цагаар; нийт тоо байхгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ (өмнө нь 400 month_open). Шинэ төрөл AllHours; түүний цаг нь OwnHours-тэй адил HourSlot. Юу ч хасаагүй.

JS SDK 0.42.0, Swift SDK 0.39.0, Android SDK 0.40.0 (2026-10-04) ​

  • Шинэ: ownHours(month) (Swift ownHours(month:)) нь GET /v1/traces/hours/own-ийг уншина, таны аялал хэзээ эхэлдгийг сараар (trace:read хэрэгтэй, API 0.40.0): аялал бүр эхний цэгийнхээ Улаанбаатарын гараг ба цагт нэг удаа; сарын нийт, 7 гараг, 24 цаг, аялалтай гараг, цаг бүр, сар дууссанаас хойш 14 хоногийн дараа closed. Шинэ төрөл OwnHours, HourSlot. Swift, Android-д byWeekday, byHour. Юу ч хасаагүй.

JS SDK 0.41.0, Swift SDK 0.38.0, Android SDK 0.39.0 (2026-10-04) ​

  • Шинэ: ownArrivals(month) (Swift ownArrivals(month:)) нь GET /v1/traces/arrivals/own-ийг уншина, таны аялал сүүлийн 200 м-т хэдэн минут зарцуулсныг сараар (trace:read хэрэгтэй, API 0.39.0): аялал, удаан (5 ба түүнээс олон минут), median, p75, p90, минут бүрийн аялал, удаан аяллаар 100 хүртэл төгсгөлийн нүд, сар дууссанаас хойш 14 хоногийн дараа closed. Шинэ төрөл OwnArrivals, ArrivalMinute, ArrivalCell (Swift, Android-д ArrivalCellProperties ч). Юу ч хасаагүй.

JS SDK 0.40.0, Swift SDK 0.37.0, Android SDK 0.38.0 (2026-10-04) ​

  • Шинэ: ownConfirmations(month) (Swift ownConfirmations(month:)) нь GET /v1/confirm/own-ийг уншина, таны жолоочийн баталгаажуулалт ба хаалганы мэдэгдэл сараар (confirm:read хэрэгтэй, API 0.38.0): үр дүн тус бүрээр сарын нийт ба газар дээр байсан өдөр бүрээр, өөр өөр жолоочийн тоо (id-г хэзээ ч биш), 100 хүртэл алдаатай цэг, сар дууссанаас хойш 8 хоногийн дараа closed. Шинэ төрөл OwnConfirmations, ConfirmCounts, ConfirmDay, ConfirmFlagged. Юу ч хасаагүй.

Swift SDK 0.36.0, Android SDK 0.37.0 (2026-10-04) ​

  • Шинэ, JS SDK 0.38.0-ийн адил: ownTraceCells нь танай байгууллагын аяллыг 500 м нүд, сараар уншина (GET /v1/traces/cells/own, trace:read), тоо эцэслэгдсэн бол closed. traceCells нь бүх түншийн аяллыг нийтэлсэн сараар, 3 ба түүнээс олон байгууллагатай нүдээр уншина (GET /v1/traces/cells, insights:read). Хоёулаа month YYYY-MM, BBox авч 7 оронтой бутархайгаар илгээнэ. Шинэ төрөл BBox, TraceCells, OwnTraceCells, TraceCell, TraceCellPolygon, TraceCellProperties. Юу ч хасаагүй.

Swift SDK 0.35.0, Android SDK 0.36.0 (2026-10-04) ​

  • Шинэ, JS SDK 0.39.0-ийн адил: reportClosure нь POST /v1/closures-ийг илгээнэ, явах боломжгүй зам эсвэл гарц; idempotencyKey нь Idempotency-Key толгойд явах тул хугацаа хэтэрсний дараа дахин илгээхэд хоёр удаа хадгалагдахгүй. API-ийн татгалзах түлхүүр хүсэлтээс өмнө DockError bad_idempotency_key шиднэ. closure нь өөрийн мэдэгдлийг тэмдэглэлтэй нь уншина (GET /v1/closures/{id}). liftClosure нь замыг дахин нээнэ (POST /v1/closures/{id}/lift). Гурвуулаа closures:write эрх шаардана. Шинэ төрөл ClosureReport, ClosureGeometry, ClosureKind, Closure, ClosureProperties; Swift isValidIdempotencyKey(_:), idempotencyKeyPattern, Android IDEMPOTENCY_KEY_RE. Юу ч хасаагүй.

JS SDK 0.39.0 (2026-10-04) ​

  • Шинэ: reportClosure(report, { idempotencyKey }) нь POST /v1/closures-ийг илгээнэ, явах боломжгүй зам эсвэл гарц; түлхүүр Idempotency-Key толгойд явах тул хугацаа хэтэрсний дараа дахин илгээхэд хоёр удаа хадгалагдахгүй. API-ийн татгалзах түлхүүр хүсэлтээс өмнө DockError bad_idempotency_key шиднэ. closure(id) нь өөрийн мэдэгдлийг тэмдэглэлтэй нь уншина (GET /v1/closures/{id}). liftClosure(id, { on }) нь замыг дахин нээнэ (POST /v1/closures/{id}/lift). Гурвуулаа closures:write эрх шаардана. Шинэ төрөл ClosureReport, ClosureGeometry, Closure; шинэ тогтмол IDEMPOTENCY_KEY_RE. Юу ч хасаагүй.

JS SDK 0.38.0 (2026-10-04) ​

  • Шинэ: ownTraceCells(month, bbox) нь GET /v1/traces/cells/own-ийг уншина, өөрийн аяллыг 500 м нүд, сараар, closed-тэй (trace:read хэрэгтэй, API 0.37.0). traceCells(month, bbox) нь GET /v1/traces/cells-ийг уншина, бүх түнш хамтдаа, бүлгийн дүрэм хангасан нүд л (insights:read хэрэгтэй). Шинэ төрөл BBox, TraceCell, TraceCells, OwnTraceCells. Юу ч хасаагүй.

JS SDK 0.37.0, Swift SDK 0.34.0, Android SDK 0.35.0 (2026-10-04) ​

  • Шинэ: crossingsOnRoute-ийн delta нь lake_name_osm (lakeNameOsm)-ийг агуулна: багц нуурын нэрийг нэг бичигт оруулсан бол OSM-ийн бичвэр, эс бөгөөс null. lake-ийг харуул. national crossings v11-ээс өмнөх багц өмнөх шигээ уншигдана, энэ нь null. Юу ч хасаагүй.

JS SDK 0.36.0, Swift SDK 0.33.0, Android SDK 0.34.0 (2026-10-04) ​

  • Шинэ: crossingsOnRoute нь сэрэмжлүүлэг бүрт name_osm (nameOsm)-ийг агуулна: нэг үгэнд латин, кирилл холилдсон нэрийг багц нэг бичигт оруулсан бол OSM-ийн бичвэр, эс бөгөөс null. name-ийг харуул. Хариу багцын дүрэм name_rule, name_rule_mn (nameRule, nameRuleMn)-ийг нэмнэ, багцад дүрэм байхгүй бол null. Багцын төрөл names_folded, name_rule, name_rule_mn-ийг уншина. offline v13-аас өмнөх багц өмнөх шигээ уншигдана, эдгээр нь null. Юу ч хасаагүй.

JS SDK 0.35.0, Swift SDK 0.32.0, Android SDK 0.33.0 (2026-10-03) ​

  • Шинэ: sandOnRoute, wetlandsOnRoute, passesOnRoute, waterOnRoute нь name_osm (nameOsm)-ийг агуулна: нэг үгэнд латин, кирилл холилдсон нэрийг багц нэг бичигт оруулсан бол OSM-ийн бичвэр, эс бөгөөс null. name-ийг харуул. Хариу бүр багцын дүрэм name_rule, name_rule_mn (nameRule, nameRuleMn)-ийг нэмнэ, багцад дүрэм байхгүй бол null. Багцын төрлүүд names_folded, name_rule, name_rule_mn-ийг уншина. offline v11 (элс), v12-оос өмнөх багц өмнөх шигээ уншигдана, эдгээр нь null. Юу ч хасаагүй.

JS SDK 0.34.0, Swift SDK 0.31.0, Android SDK 0.32.0 (2026-10-03) ​

  • Шинэ: packRoute manifest-ийн confidence_note, confidence_note_mn-г (offline v10-аас хойших багц) уншиж confidence_note, confidence_note_mn (confidenceNote, confidenceNoteMn) болгон өгнө: confidence юу гэсэн үг болохыг жолоочид хэлнэ. trace_note (traceNote) нь manifest-д хоёулаа байвал багцын үг, үгүй бол өмнөх шиг SDK-ийн үг. Ганц хэлтэй багцад SDK-ийн хос үг, хэзээ ч хоёр өөр эх сурвалжаас биш. Тэмдэглэлгүй оноотой багцад confidence_note нь null. Хуучин багц өмнөх шигээ уншигдана. Юу ч хасаагүй.

JS SDK 0.33.0, Swift SDK 0.30.0, Android SDK 0.31.0 (2026-10-03) ​

  • Шинэ: passesOnRoute давааны heights_differ (heightsDiffer)-ийг багцаас уншина: OSM, DEM өндөр хоёулаа байгаа бөгөөд 50 м-ээс илүү зөрвөл true, дотор нь бол false, аль нэг нь байхгүй бол null. differ нь аялал дээрх true даваануудын тоо, багцад тэмдэг байхгүй бол null. PassDem нь differ_m, differ_rule, differ_rule_mn, differ-ийг уншина. passes v2 багц өмнөх шигээ уншигдана, эдгээр нь null. Юу ч хасаагүй.

JS SDK 0.32.0, Swift SDK 0.29.0, Android SDK 0.30.0 (2026-10-03) ​

  • Шинэ: packRoute офлайн хээрийн багц дээр 2 ба түүнээс олон цэгээр дайрах маршрутын Valhalla хүсэлтийг бэлдэнэ: manifest-ийн request (costing, costing_options), аяллын өдрийн хаалтын цагиргууд exclude_polygons-д (багцын closures хэсэг, эсвэл илүү шинэ GET /v1/closures хариу), км. Тойрсон хаалтуудыг нэрлэж, attribution, scored, багцад аяллын оноо байхгүй үед жолоочид хэлэх trace_note, trace_note_mn (traceNote, traceNoteMn)-ийг өгнө. Багцын bbox-оос гадуурх цэг алдаа шиднэ; тойрох цагираг доторх цэг EndInClosureError (PackRouteError.endInClosure, EndInClosureException) шиднэ. Swift, Kotlin дээр PackRouteManifest manifest-ийг уншина. Юу ч хасаагүй.

JS SDK 0.31.0, Swift SDK 0.28.0, Android SDK 0.29.0 (2026-10-03) ​

  • Шинэ: passesOnRoute давааны OSM өндрийн хажууд DEM өндрийг уншина: dem_m (demM), зангилаа байрлах Copernicus GLO-30 нүдний өндөр, бүхэл метрээр; багцад тэнд байхгүй бол null, ele_m-тэй хэзээ ч хольдоггүй. top_dem_m (topDemM) нь аялал дээрх хамгийн их нь; dem нь багцын DEM хэсэг, DEM өндрийн хажууд харуулах attribution-тэй. PackPasses нь with_dem, dem-ийг уншина. passes v1 багц өмнөх шигээ уншигдана, эдгээр нь null. top_m зөвхөн OSM хэвээр. Юу ч хасаагүй.

JS SDK 0.30.0, Swift SDK 0.27.0, Android SDK 0.28.0 (2026-10-03) ​

  • Шинэ: checkPack татсан хээрийн багцыг manifest.json-тай нь тулгана: files мөр дэх файл бүрийг эхлээд хэмжээгээр, дараа нь sha256-аар, manifest-ийн дарааллаар. Файл бүр ok, missing, bytes (хэмжээ өөр, hash бодохгүй) эсвэл sha256 (хэмжээ ижил, агуулга өөр); бүгд ok үед л ok, bad бусдыг нэрлэнэ. Энгийн файлын нэр биш нэр ямар ч файл уншихаас өмнө алдаа шиднэ. JS таны функцээр уншина (Web Crypto); Swift, Kotlin багцын хавтсыг 1 MB-аар уншина. Swift, Kotlin-д PackManifestFiles manifest-ийг уншина. Юу ч хасаагүй.

JS SDK 0.29.0, Swift SDK 0.26.0, Android SDK 0.27.0 (2026-10-03) ​

  • Шинэ: waterOnRoute хээрийн багцын water.geojson-оос аяллын шугамаас 2000 м (багцын near_m, nearM) дотор OSM-ийн худаг, булаг, цорго, ундны усыг аяллын дарааллаар өгнө: эхнээс болон шугамаас хэдэн метр (along_m, off_m; alongM, offM). drinkable нь зөвхөн OSM-ийн бичсэн зүйл, бичээгүй бол null (nil), таамаглахгүй. PackWater файлыг уншина. OSM-ийн шошгоос, газар дээр шалгаагүй. 2026-10-03-аас өмнөх багцад файл байхгүй. Юу ч хасаагүй.

JS SDK 0.28.0, Swift SDK 0.25.0, Android SDK 0.26.0 (2026-10-03) ​

  • Шинэ: sandOnRoute хээрийн багцын sand.geojson-оос аяллын явах OSM-ийн элсэн газрын (natural=sand) хэсгүүдийг аяллын дарааллаар өгнө, wetlandsOnRoute-ийн дүрмээр: эхнээс хэдэн метрт (along_m, alongM), хэсэг дээр хэдэн метр (on_m, onM); 20 м-ээс (SAND_MIN_ON_M, sandMinOnM) бага бол зөвхөн хөндлөн гарна, хэсэг бүхэлдээ биш бол. PackSand файлыг уншина. OSM-ийн шошгоос, газар дээр шалгаагүй. 2026-10-03-аас өмнөх багцад файл байхгүй. Юу ч хасаагүй.

JS SDK 0.27.0, Swift SDK 0.24.0, Android SDK 0.25.0 (2026-10-03) ​

  • Шинэ: passesOnRoute хээрийн багцын passes.geojson-оос аяллын гарах OSM-ийн уулын давааг (mountain_pass, saddle) аяллын дарааллаар өгнө: зангилаа нь шугамаас 5 м (match_m, matchM) дотор байгаа даваа, эхнээс хэдэн метрт (along_m, alongM), шугамаас хэдэн метр (off_m, offM), OSM-ийн өндөр (ele_m, eleM), аялал дээрх хамгийн их өндөр (top_m, topM, өндөргүй бол null). PackPasses файлыг уншина. OSM-ийн шошгоос, газар дээр шалгаагүй. 2026-10-03-аас өмнөх багцад файл байхгүй. Юу ч хасаагүй.

JS SDK 0.26.0, Swift SDK 0.23.0, Android SDK 0.24.0 (2026-10-03) ​

  • Шинэ: wetlandsOnRoute хээрийн багцын wetlands.geojson-оос аяллын явах OSM-ийн намгархаг газрын хэсгүүдийг (marsh, bog, wet_meadow, fen, unknown) аяллын дарааллаар өгнө: эхнээс хэдэн метрт (along_m, alongM), хэдэн метр (on_m, onM). 20 м-ээс (WETLAND_MIN_ON_M, wetlandMinOnM) бага хэсгээр явах аялал зөвхөн хөндлөн гарна, хэсэг бүхэлдээ биш бол. PackWetlands файлыг уншина. OSM-ийн шошгоос, газар дээр шалгаагүй. 2026-10-03-аас өмнөх багцад файл байхгүй. Юу ч хасаагүй.

JS SDK 0.25.0, Swift SDK 0.22.0, Android SDK 0.23.0 (2026-10-03) ​

  • Шинэ: хээрийн багцын crossings.geojson-ийн гарамын ford_node_id (Swift, Kotlin-д fordNodeId), анхааруулга бүрт мөн. OSM-д усны шугам зураагүй, зөвхөн гарамын зангилаатай газар: waterway нь unknown, нэр, урсацгүй; "OSM-ийн гарам, ус зураагүй" гэж харуул. Багцын ford_nodes, ford_node_rule, ford_node_rule_mn (fordNodes, fordNodeRule, fordNodeRuleMn) тоо, дүрэм. Дүрмээс өмнөх багцад null (nil). Бусад анхааруулга өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.24.0, Swift SDK 0.21.0, Android SDK 0.22.0 (2026-10-03) ​

  • Шинэ: хээрийн багцын crossings.geojson-ийн from_seasonal, intermittent_rule, intermittent_rule_mn (Swift, Kotlin-д fromSeasonal, intermittentRule, intermittentRuleMn): OSM-ийн intermittent шошгогүй, зөвхөн seasonal шошгоор түр урсгалтай болсон гарцын тоо, дүрэм. Дүрмээс өмнөх багцад null (nil). Гарцын intermittent талбар хэвээр, анхааруулга өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.23.0, Swift SDK 0.20.0, Android SDK 0.21.0 (2026-10-03) ​

  • Шинэ: хээрийн багцын crossings.geojson-ийн one_point, split_rule, split_rule_mn (Swift, Kotlin-д onePoint, splitRule, splitRuleMn): усны шугам зам дээр хоёр хэсэг болж тасарсан тул хажуу гарцтайгаа нэг болсон гарцын тоо, дүрэм. Дүрмээс өмнөх багцад null (nil). Анхааруулга өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.22.0, Swift SDK 0.19.0, Android SDK 0.20.0 (2026-10-03) ​

  • Шинэ: хээрийн багцын crossings.geojson-ийн near_bridge, bridge_rule, bridge_rule_mn (Swift, Kotlin-д nearBridge, bridgeRule, bridgeRuleMn): усны хажууд зурсан гүүрээр гатлах тул багцад ороогүй none гарцын тоо, дүрэм. Дүрмээс өмнөх багцад null (nil). Анхааруулга өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.21.0, Swift SDK 0.18.0, Android SDK 0.19.0 (2026-10-03) ​

  • Шинэ: хээрийн багцын гарам бүр road-той: аяллын замын OSM-ийн highway, surface шошго, paved (true, false эсвэл surface шошгогүй бол null). crossingsOnRoute-ийн анхааруулга бүрт өгнө. Хатуу хучилттай зам дээрх none гарц нь OSM-д тэмдэглээгүй гүүр, хоолой байж болно. Багцын on_paved, road_rule, road_rule_mn (Swift, Kotlin-д onPaved, roadRule, roadRuleMn). Шинэ төрөл CrossingRoad. Зөвхөн шинэ зам дээр болон дүрмээс өмнөх багцад null (nil). Юу ч хасаагүй.

Swift SDK 0.17.0, Android SDK 0.18.0 (2026-10-03) ​

  • Шинэ: Suggester, iOS, Android-ийн хаягийн талбар, JS SDK-ийн Suggester, attachSuggest-тэй ижил дүрэм. Гурав дахь тэмдэгтээс, сүүлийн товчноос 200 ms дараа асууна; шинэ товч явж буй хүсэлтийг цуцалж, хоцорсон хариуг хаяна; бичсэн хаалганы кодыг эхлээд хаалгаар хайна. show жагсаалт авна, choose(item) сонгосон geocode хариуг pick-д өгнө. Шинэ төрөл Suggestion (Swift .door, .result; Kotlin Suggestion.Door, Suggestion.Result), түүнд label, тогтмол suggestMinChars, suggestDelayMs (Kotlin SUGGEST_MIN_CHARS, SUGGEST_DELAY_MS). View өгөхгүй: жагсаалтыг апп зурна. Юу ч хасаагүй.

JS SDK 0.20.0, Swift SDK 0.16.0, Android SDK 0.17.0 (2026-10-03) ​

  • Шинэ: ус нь нэг нэртэй голд хүрдэг нэргүй гол, горхин дээрх гарам flows_into-тай (Swift, Kotlin-д flowsInto): name, name_en, river_way_id, ways. "Орхон гол, нэргүй цутгал" гэж харуул. Хээрийн багцын гарамаас уншиж, crossingsOnRoute-ийн анхааруулга бүрт өгнө. OSM-ийн зургаас, газар дээр шалгаагүй. Хоёулаа байвал channel_of давамгайлна. Бусад газар болон дүрмээс өмнөх багцад null (nil). Шинэ төрөл CrossingFlowsInto. Юу ч хасаагүй.

JS SDK 0.19.0, Swift SDK 0.15.0, Android SDK 0.16.0 (2026-10-03) ​

  • Шинэ: нэртэй голын нэргүй салаан дээрх гарам channel_of-тэй (Swift, Kotlin-д channelOf): name, name_en, river_way_id. "Улаан гол, нэргүй салаа" гэж харуул. Хээрийн багцын гарамаас уншиж, crossingsOnRoute-ийн анхааруулга бүрт өгнө. OSM-ийн зургаас, газар дээр шалгаагүй. Бусад газар болон дүрмээс өмнөх багцад null (nil). Шинэ төрөл CrossingChannelOf. Юу ч хасаагүй.

Swift SDK 0.14.0 (2026-10-03) ​

  • Шинэ: dockStyle(_:options:), dockSources(_:), dockLayers(_:), client.styleJSON(_:), client.styleURL(_:): dock-ийн загвар, JS, Android SDK-тай ижил JSON. basemapStyle(_:url:options:), PackBasemap.fromManifest(_:): хээрийн багцын basemap.pmtiles-ийн загвар, JS, Android SDK-тай ижил JSON, ижил татгалзал (StyleError). Загвар нь JSONValue, jsonString() нь MapLibre Native iOS-д файлд бичих текст. Мөн StyleOptions, BasemapStyleOptions, BasemapLang, basemapExcluded, ubCenter, isValidStyleId(_:). Юу ч хасаагүй.

0.56.0 (2026-10-05) ​

  • Шинэ: GET /v1/corridors, GET /v1/corridors/{name}, route:read (PLAN 15 бүтээгдэхүүн 2, PLAN 17 бүтээгдэхүүн 6). Хээрийн коридорууд, тус бүр нэг харьцуулах мөр: 3 ба түүнээс олон замтай огтлолын хувь, бүсийн талбай, жилүүд, итгэл; мөн totals, attribution. Нэг коридор: бүх баримтын мөр, text, value, unit, confidence, source, caveat-тай, confidence_cap-аас дээш итгэлгүй. Тоо бүр D эгнээний make facts бичсэн facts.json-оос хуулсан, энд дахин тооцоогүй. Sentinel-2 10 м, газар дээр шалгаагүй; null нь тодорхойгүй. Файл байхгүй эсвэл бүтэн биш бол 503 unavailable, хагас хэзээ ч өгөхгүй. Шошго одоогоор англиар. SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

0.55.0 (2026-10-04) ​

  • POST /v1/clean-д бүхэлдээ хаалганы нэр болох мөр тэр хаалгыг өгнө, door_names боломжийн ард (PLAN 17 бүтээгдэхүүн 4, PLAN 18). Ижил түлхүүрт буух ямар ч бичлэг ("сансар-бэйкери") олно. Мөрийн method нь door_name, хаалганы албан ёсны хаяг ба төлөв, entrance (internal)-ны цэг (GET /v1/door/{code} шиг байгууллагад тэмдэглэсэн), entrance (internal) байрлах барилга (хашааны хаалганд null), choices хоосон, match_confidence null. Задалсан хэсгүүд уншсанаараа үлдэнэ. Эзэмшигч байгууллага харагдахгүй. Ийм мөр бүр нэг resolution log мөр бичнэ. matched нь барилгатай эсвэл нэртэй хаалгатай мөрийг тоолно. Хуучирсан нэр, хасагдсан эсвэл хязгаарлалттай газрын хаалга, нэрийн хэсэг, боломж нээгээгүй байгууллага урьдын адил хариу авна. Нэр хайхад алдаа гарвал мөрүүд нэргүйгээр хариулна, 503 биш. Шинэ талбаргүй, SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

0.54.0 (2026-10-04) ​

  • GET /v1/geocode-д бичсэн хаалганы нэр тэр хаалгыг олно, door_names боломжийн ард (PLAN 17 бүтээгдэхүүн 4, PLAN 18). Хайлт бүхэлдээ хүчинтэй хаалганы нэр бол, ижил түлхүүрт буух ямар ч бичлэгээр ("сансар-бэйкери"), тэр хаалга эхэнд гарна: layer 1, near null, оноо нь layer 1-ийн хамгийн өндөр оноо эсвэл 1.6 (бүтэн нэр), аль өндөр нь. Доор давтагдахгүй, limit хэвээр. Эзэмшигч байгууллага харагдахгүй. Хариулахад GET /v1/door-names/{name} шиг нэг resolution log мөр бичнэ. Боломж нээгээгүй байгууллага болон нэрийн хэсэг урьдын адил хариу авна. Шинэ талбаргүй, SDK өөрчлөгдөөгүй. Юу ч хасаагүй.

0.53.0 (2026-10-04) ​

  • Хаалганы нэрийг өөр байгууллагад шилжүүлж болно, door_names боломжийн ард (PLAN 17 бүтээгдэхүүн 4). Эзэмшигч POST /v1/door-names/{name}/transfer-code (names:write) -ээр код авна: dnt_ ба 24 тэмдэгт, нэг л удаа харагдана, нэг л удаа ажиллана, 7 хоног эсвэл нэрийн хугацаа түрүүлж дуусвал тэр хүртэл. Шинэ код хуучныг орлоно; ижил зам дээрх DELETE кодыг цуцална. Нөгөө байгууллага POST /v1/door-names/{name}/claim{"transfer_code": "dnt_..."} илгээж нэрийг авна, хаалга болон expires_at хэвээр. Буруу, цуцлагдсан эсвэл хугацаа нь дууссан код 409 transfer_refused, хаалга олдоогүй хязгаарт тоологдоно; 409 already_yours; 50 нэрээс хойш 422 too_many. Нэг байгууллагыг нөгөөд нэрлэхгүй. GET /v1/door-names нэр бүрт transfer_until нэмнэ, код хүлээгээгүй бол null. Юу ч хасаагүй.

0.52.0 (2026-10-04) ​

  • Шинэ, door_names боломжийн ард (байгууллагад нээгдэх хүртэл 403 feature_off): хаалганы нэр, бизнес хаалгандаа эзэмших ярианы нэр (PLAN 17 бүтээгдэхүүн 4). POST /v1/door-names {"name": "Сансар бэйкери", "code": "7QSVX"} нь нэрийг 365 хоногоор бүртгэнэ, одоогоор төлбөргүй; өөрийн нэрийг өөр кодоор илгээвэл шилжүүлнэ. Шинэ эрх names:write. GET /v1/door-names таны нэрсийг жагсаана. GET /v1/door-names/{name} (door:read) хаалгыг GET /v1/door/{code} шиг өгнө, албан ёсны хаяг эхэнд; эзэмшигчийг харуулахгүй. Нэр нь хялбаршуулсан хэлбэрээрээ давтагдашгүй: том жижиг үсэг, зай, цэг тэмдэг, кирилл үсгийн оронд бичсэн латин үсэг өөр нэр болгохгүй. Утасны дугаар, имэйл, хаалганы код татгалзана. 409 name_taken, 410 retired_code, 50 нэрээс хойш 422 too_many. Хаалга олдоогүй код эсвэл нэр хаалга олдоогүй хязгаарт тоологдоно. Юу ч хасаагүй.

0.51.0 (2026-10-04) ​

  • GET /v1/usage нь features нэмнэ: байгууллагад нээлттэй боломжууд, A-Z, жишээ нь cargo.eta. Бусад боломжид хамаарах зам 403 feature_off хариулна. Нээлттэй боломжгүй бол хоосон; өнөөдөр бүх байгууллагад хоосон: боломжид хамаарах зам хараахан алга. Өөрчлөлт 60 с дотор харагдана, хүчингүй болсон түлхүүр шиг. Хэрэглээний хуудас харуулна. Юу ч хасаагүй.

0.50.0 (2026-10-04) ​

  • GET /v1/route?depart_at=2026-10-05T08:15:00%2B08:00: машины маршрутын measured гарах цагийн бүсийн хурдыг уншина (GET /v1/traces/roads?band=), Улаанбаатарын гараг, цагаар: am_peak даваагаас баасан 07:00-09:59, pm_peak даваагаас баасан 17:00-19:59, off_peak бусад бүх цаг, бямба, ням бүтэн өдөр. Аяллыг бүсэд тоолдог дүрэмтэй ижил. measured.band нь уншсан бүс; depart_at-гүй бол null, бүх цаг, өмнөх шигээ. depart_at нь offset-тэй ISO 8601 (Z эсвэл +08:00; +-ийг %2B болгож илгээнэ); offset-гүй цагийг Улаанбаатарынх гэж таамаглахгүй, 400 invalid_depart_at. Өнгөрсөн, ирээдүйн аль ч цаг болно; маршрутын шугам, duration_s өөрчлөгдөхгүй. Явган, дугуйд measured null хэвээр. Өнөөдөр хоосон: dock-ийн замын шугам хараахан ачаалагдаагүй тул roads_m 0. Юу ч хасаагүй.

0.49.0 (2026-10-04) ​

  • GET /v1/traces/roads?band=am_peak: замын хөдөлгөөний хурд нэг цагийн бүсээр (PLAN 9 Phase 7, цаг, гарагаар хурдны профайл). Аялал бүтнээрээ эхний хадгалсан цэгийнхээ Улаанбаатарын цагийн бүсэд тоологдоно: am_peak даваагаас баасан 07:00-09:59, pm_peak даваагаас баасан 17:00-19:59, off_peak бусад бүх цаг, бямба, ням бүтэн өдөр. Зам бүр зөвхөн тэр бүсийн аяллаар бүлгийн дүрмийг хангана (3 ба түүнээс олон байгууллага, хамгийн томыг хасаад 5 ба түүнээс олон аялал), тул бүх цагт харагдах зам нэг бүсэд харагдахгүй байж болно. band-гүй бол бүх цаг, өмнөх шигээ. rule.hours нь хариу ямар цагийг хамрахыг хэлнэ. Өөр утга: 400 bad_band. Энэ хувилбараас өмнө тааруулсан аялал ч бүсэдээ тоологдоно. Өнөөдөр бүх цагийнх шиг хоосон: dock-ийн замын шугам хараахан ачаалагдаагүй. Юу ч хасаагүй.

0.48.0 (2026-10-04) ​

  • GET /v1/route: машины маршрут одоо measured-тэй ирнэ: бүх түншийн хэмжсэн хөдөлгөөний хурдаар зам тус бүр тооцсон хугацаа (PLAN 9 Phase 7, маршрутын API-д ирэх хугацаа). measured.month нь GET /v1/traces/roads-ийн нийтэлсэн хамгийн сүүлийн сар (сар дууссанаас хойш 14 хоног). Тэр сард нийтэлсэн хурдтай зам бүрийг тэр хурдаар тооцно: чиглүүлэгчийн секундийг хасаж, хэмжсэн секундийг нэмнэ, эргэлтийн хугацаа үлдэнэ. measured.roads_m нь ийм зам дээрх шугамын метр; 0 бол байхгүй, measured.duration_s нь duration_s-тэй тэнцүү. Зөвхөн /v1/traces/roads-ийн дүрэмд орсон зам (3 ба түүнээс олон байгууллага, хамгийн томыг хасаад 5 ба түүнээс олон аялал), тул нэг түншийн хурд харагдахгүй. Хөдөлгөөний хурдад 3 км/ц-оос доош зогсолт орохгүй; сарын дундаж, цагаар биш. Явган болон дугуй: null. Хурдыг уншиж чадаагүй үед null, маршрут хариулсаар. duration_s өөрчлөгдөөгүй, түгжрэлгүй хугацаа. Зөвхөн route:read хэрэгтэй. Өнөөдөр хоосон: нийтэлсэн хурдтай зам хараахан байхгүй, roads_m нь 0. Юу ч хасаагүй.

0.47.0 (2026-10-04) ​

  • GET /v1/traces/roads?month=2026-09&bbox=106.7,47.8,107.2,48.0: бүх түншийн аяллын хөдөлгөөний хурд зам, сар тус бүрээр (PLAN 18, зам бүрийн хурд). Аяллыг хадгалах үед Valhalla map matching (Meili)-аар OSM замд тааруулна. Хадгалсан хоёр цэгийн хоорондох хэсэг замд тоологдох нөхцөл: хоёр цэг хоёулаа тэр замд таарсан, /v1/traces/speeds-ийн дүрэм: 1-60 секунд, 3-130 км/ц, дунд цэг нь аяллын эхний болон сүүлийн цэгээс 200 м-ээс хол. km_h нь замын тоологдсон метрийг тоологдсон секундэд хуваасан, 0.1 хүртэл. GeoJSON, зам бүр нэг feature: id нь OSM замын дугаар текстээр, dock-ийн тэр дугаартай одоогийн замын шугам, km_h, name_mn, name_en, highway. Зам /v1/traces/cells-ийн дүрмээр л харагдана: 3 ба түүнээс олон байгууллага, хамгийн томыг нь хасаад 5 ба түүнээс олон аялал. Бусад зам гарахгүй: байхгүй гэдэг нь цөөн гэсэн үг, удаан биш. dock-д шугам нь хараахан байхгүй зам, эсвэл хязгаарлалттай газрыг дайрсан зам гарахгүй; dock-д замын шугам хараахан ачаалаагүй тул тэр хүртэл хариу хоосон. Аяллын тоо өгөхгүй. Туршилтын болон дотоод байгууллага тоологдохгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ, түүнээс өмнө month_open; аяллыг зөвхөн түүнээс өмнө тааруулна. Таны устгал аяллыг хасна; цэгийн 90 хоногийн устгал тоог үлдээнэ. insights:read хэрэгтэй. Аялал илгээх хариу өөрчлөгдөөгүй. Юу ч хасаагүй.

0.46.0 (2026-10-04) ​

  • GET /v1/traces/kinds/own?month=2026-10: таны аялал дууссан барилгын төрлөөр, сар бүр, таны самбарт (PLAN 18, ямар хүргэлт). Аялал бүр нэг удаа тоологдоно: сүүлийн хадгалсан цэгийг агуулсан барилга, эсвэл 30 м дотор хамгийн ойрх барилга. Төрөл нь аялал хадгалагдах үеийн барилгын төрөл (apartment, ger_house, commercial, public, industrial, garage, other); unknown нь төрөлгүй барилга, none нь 30 м дотор барилга байхгүй. Барилга дараа өөрчлөгдсөн ч тоолсон аялал хөдлөхгүй. Хязгаарлалттай газрын доторх барилгыг уншихгүй. Бүлгийн дүрэм байхгүй: аялал таных. Сарын нийт (trips), аялалтай төрөл бүр, ихээс нь. /v1/traces/cells/own-тэй ижил сарууд; сар дууссанаас 14 хоногийн дараа closed. Таны устгал аяллыг хасна; цэгийн 90 хоногийн устгал тоог үлдээнэ. Зөвхөн таны байгууллага. trace:read хэрэгтэй. Юу ч хасаагүй.

0.45.0 (2026-10-04) ​

  • GET /v1/traces/khoroos/own?month=2026-10: таны аялал хороо, ирсэн цаг тус бүрээр, сар бүр, таны самбарт (PLAN 18, хаана, хэзээ). Аялал бүр нэг удаа тоологдоно: сүүлийн хадгалсан цэгийн Улаанбаатарын цаг (0-23), тэр цэгийн 500 м нүдний төвийг агуулсан хороо, /v1/traces/khoroos-тай адил. Нүд бүхэлдээ нэг хороонд тоологдоно; одоогийн полигонууд давхцвал дүүргийн код, хорооны дугаараар эхнийх. Бүлгийн дүрэм байхгүй: аялал таных. Сарын нийт (trips), одоогийн хорооны полигонд ороогүй аялал (no_khoroo), хороо бүрт нийт болон аялалтай цаг бүр. Хорооны полигон одоогоор алга: ачаалагдах хүртэл бүх аялал no_khoroo-д. /v1/traces/cells/own-тэй ижил сарууд; сар дууссанаас 14 хоногийн дараа closed. Таны устгал аяллыг хасна; цэгийн 90 хоногийн устгал тоог үлдээнэ. Зөвхөн таны байгууллага. trace:read хэрэгтэй. Юу ч хасаагүй.

0.44.0 (2026-10-04) ​

  • GET /v1/traces/speeds?month=2026-09&bbox=106.7,47.8,107.2,48.0: бүх түншийн аяллын хөдөлгөөний хурд 500 м нүд, сар тус бүрээр (PLAN 18, түгжрэлийн цэг). Аялал бүрийг хадгалсан цэгүүдийн хооронд хэсэгт хуваана. Хэсэг тоологдох нөхцөл: цэгүүдийн хооронд 1-60 секунд, 3-130 км/ц, дунд цэг нь аяллын эхний болон сүүлийн цэгээс 200 м-ээс хол (зогсоол, хаалга хүртэл алхсан нь замын хурд биш). Хэсэг дунд цэгээ агуулсан нүдэнд тоологдоно. km_h нь нүдний бүх тоологдсон метрийг секундэд хуваасан, 0.1 хүртэл. Нүд /v1/traces/cells-ийн дүрмээр л харагдана: 3 ба түүнээс олон байгууллага, хамгийн томыг нь хасаад 5 ба түүнээс олон аялал. Бусад нүд гарахгүй: байхгүй гэдэг нь цөөн гэсэн үг, удаан биш. Аяллын тоо өгөхгүй (/v1/traces/cells-д бий). Замаар биш, нүдээр: map matching хараахан алга. Туршилтын болон дотоод байгууллага тоологдохгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ, түүнээс өмнө month_open. insights:read хэрэгтэй. Юу ч хасаагүй.

0.43.0 (2026-10-04) ​

  • GET /v1/traces/khoroos?month=2026-09: бүх түншийн аялал хороо, ирсэн цаг тус бүрээр (PLAN 18, хүргэлтийн дулааны зураг цаг, хороогоор). Аялал бүр сүүлийн хадгалсан цэгийнхээ Улаанбаатарын цаг (0-23), тэр цэгийн 500 м нүдний төвийг агуулсан хороонд нэг удаа тоологдоно. Хороо, цаг нь /v1/traces/cells-ийн дүрмээр л харагдана: 3 ба түүнээс олон байгууллага, хамгийн томыг нь хасаад 5 ба түүнээс олон аялал. Бусад цаг гарахгүй: байхгүй гэдэг нь цөөн гэсэн үг, тэг биш. Хорооны нийт тоо өгөхгүй. GeoJSON FeatureCollection, хороо бүр нэг feature: полигон, дүүрэг, дугаар, цагууд. Зөвхөн одоогийн хорооны полигон; одоогоор нэг ч алга, тул ачаалагдах хүртэл хариу хоосон. Тоо өнөөдрөөс хадгалагдана. Туршилтын болон дотоод байгууллага тоологдохгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ, түүнээс өмнө month_open. insights:read хэрэгтэй. Юу ч хасаагүй.

0.42.0 (2026-10-04) ​

  • GET /v1/traces/cells: туршилтын болон дотоод байгууллага нүдэнд тоологдохгүй болсон, GET /v1/traces/hours-ийн адил. Тэд 3 байгууллагын нэг болохгүй, аялал нь нийтэд орохгүй, хасагдах хамгийн том байгууллага ч болохгүй. Зөвхөн тэднээс болж гарч байсан нүд одоо гарахгүй; гарсан хэвээр нүдний аялал цөөрч болно. rule-д шинэ түлхүүр orgs үүнийг хэлнэ. Тоо хадгалагдана; зөвхөн харагдах нь өөрчлөгдөнө. Юу ч хасаагүй.

0.41.0 (2026-10-04) ​

  • GET /v1/traces/hours?month=2026-09: бүх түншийн аялал гариг, цаг тус бүрээр (PLAN 18, хотын ачаалал цагаар). Аялал бүр эхний хадгалсан цэгийнхээ Улаанбаатарын гариг (1 даваа, 7 ням), цагт (0-23) нэг удаа тоологдоно. Гариг, цаг нь /v1/traces/cells-ийн дүрмээр л харагдана: 3 ба түүнээс олон байгууллага, хамгийн томыг нь хасаад 5 ба түүнээс олон аялал. Бусад нь гарахгүй: байхгүй гэдэг нь цөөн гэсэн үг, тэг биш. Нийт тоо өгөхгүй. Туршилтын болон дотоод байгууллага тоологдохгүй. Сар дууссанаас хойш 14 хоногийн дараа нийтлэгдэнэ, түүнээс өмнө month_open. insights:read хэрэгтэй. Юу ч хасаагүй.

0.40.0 (2026-10-04) ​

  • GET /v1/traces/hours/own?month=2026-10: таны аялал гариг, цаг тус бүрээр, самбартаа (PLAN 18, хэзээ). Аялал бүр эхний хадгалсан цэгийнхээ Улаанбаатарын гариг (1 даваа, 7 ням), цагт (0-23) нэг удаа тоологдоно. Сарын нийт, 7 гаригийн тоо, 24 цагийн тоо, аялалтай гариг, цаг бүр. /v1/traces/cells/own-тэй ижил сар; сар дууссанаас хойш 14 хоногийн дараа closed. Аяллаа устгавал тооноос хасагдана; цэгүүдийг 90 хоногийн дараа арилгахад тоо үлдэнэ. Зөвхөн танай байгууллага. trace:read хэрэгтэй. Юу ч хасаагүй.

0.39.0 (2026-10-04) ​

  • GET /v1/traces/arrivals/own?month=2026-10: таны аяллын ирэх минут сараар, самбартаа (PLAN 18, хаалга хайхад алдсан минут). Аялал бүрт: төгсгөлөөсөө 200 м-ээс хамгийн сүүлд холдсоны дараах эхний цэгээс төгсгөл хүртэлх бүтэн минут; 60 нь 60 ба түүнээс дээш. 200 м дотор эргэлдсэн нь тоологдоно; төгсгөлөөсөө 200 м-ээс хэзээ ч холдоогүй аялал тоологдохгүй. Минутад машин тавих, хаалга руу алхах нь орно, тиймээс сар, газрыг хооронд нь харьцуулна. Сарын нийт, медиан, p75, p90, минут тус бүрийн аялал, аялал дууссан 100 хүртэл нүд, 5 ба түүнээс дээш минуттай аяллаар. /v1/traces/cells/own-тэй ижил 500 м тор, сар; сар дууссанаас хойш 14 хоногийн дараа closed. Аяллаа устгавал тооноос хасагдана; цэгүүдийг 90 хоногийн дараа арилгахад тоо үлдэнэ. Зөвхөн танай байгууллага. trace:read хэрэгтэй. Юу ч хасаагүй.

0.38.0 (2026-10-04) ​

  • GET /v1/confirm/own?month=2026-10: таны жолооч нарын баталгаажуулалт ба хаалганы мэдэгдлийн тоо сараар, самбартаа (PLAN 18). Үр дүн тус бүрээр сарын нийт ба өдөр бүрээр, өөр өөр жолоочийн тоо (таны жолоочийн id-аар, id-г өөрийг нь хэзээ ч харуулахгүй), алдаатай цэгүүд: таны жолооч буруу байрлалтай, байхгүй эсвэл давхардсан гэсэн 100 хүртэл хаалга, entrance (internal), олноос нь. Мөр бүр жолооч газар дээр байсан Улаанбаатарын өдөрт тоологдоно (observed_at, эс бөгөөс хүлээн авсан цаг). Одоогийн сарыг ч өгнө; сар дууссанаас хойш 8 хоногийн дараа closed нь true. Хязгаарлалттай газрын хаалга хэзээ ч гарахгүй. Өөр байгууллагын юуг ч уншихгүй. Шинэ эрх confirm:read, зөвхөн унших: confirm:write үүнийг уншихгүй, confirm:read баталгаажуулж, мэдэгдэж чадахгүй. Юу ч хасаагүй.

0.37.0 (2026-10-04) ​

  • GET /v1/traces/cells/own?month=2026-10&bbox=west,south,east,north: таны өөрийн аяллын тоо 500 м нүд, сараар, самбартаа (PLAN 18). GET /v1/traces/cells-тэй ижил тор, сар; зөвхөн таны байгууллагын аялал, таны аялал орсон бүх нүд, бүлгийн дүрэмгүй. Одоогийн сарыг ч өгнө; сар дууссанаас хойш 14 хоногийн дараа closed нь true болж тоо эцэслэнэ. Өөр байгууллагын юуг ч уншихгүй. Шинэ эрх trace:read, зөвхөн унших: trace:write үүнийг уншихгүй, trace:read аялал илгээж, устгаж чадахгүй. Юу ч хасаагүй.

0.36.1 (2026-10-03) ​

  • POST /v1/clean: шинэ арга number_area_ambiguous. Нэртэй хороололд дугаар нь 2-3 газарт тэнцсэн хаяг: барилга, choices өгнө, match_confidence нь null (туршилтын мөр алга, 0 биш). 4 ба түүнээс олон газарт тэнцвэл барилгагүй. Жишээ: "Улаанхуаран 24" 2 сонголт, хоёул Баянзүрхэд; "Сансар 24" (4 газар), "Бага тойрог 10" (12 газар) хариугүй. Өмнө нь ийм хаяг name_ambiguous, 0.536 гэж ирдэг байсан. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.36.0 (2026-10-03) ​

  • POST /v1/clean: мөр бүрт choices нэмэгдлээ. Арга нь name_ambiguous эсвэл number_ambiguous бол хаяг байж болох 3 хүртэл газар, хариулт эхэндээ. Тус бүр building_id, point, district, 1000 м дотор хамгийн ойрын хорооллын нэр (area), 150 м дотор гудамжны нэр (street), хүн сонгож чадна ("Сансар 45, Тэнгисийн талд уу, 3-р эмнэлгийн талд уу?"). Хязгаарлалттай газрын сонголт зөвхөн дүүргээ үлдээнэ (withheld). Бусад аргад []. Хариулт өөрөө өөрчлөгдөөгүй. Эталон багцын 541 мөрийн 85 нь сонголттой. Байршуулах хуудас dock_choices нэмнэ.
  • Хоёрдмол хариу бүрийг зөвхөн арга ба барилгын дугаараар, хаягийн текстгүй бичиж, хорооллын хилийг засахад ашиглана.

JS SDK 0.18.0, Android SDK 0.15.0 (2026-10-03) ​

  • Шинэ: basemapStyle(basemap, url, options) нь хээрийн багцын шинэ basemap.pmtiles-д (OSM-ийн OpenMapTiles, Монгол даяар, 0-14 томруулалт) manifest-ийн basemap хэсгээс MapLibre-ийн бүтэн загвар өгнө: газрын бүрхэвч, ус, хээрийн шороон зам, зам, хил, барилга, glyphs өгвөл lang-аар (mn эсвэл en) нэр. Хэсгийн attribution-тай ганц pmtiles:// эх сурвалж. poi эсвэл housenumber давхаргатай хэсгийг татгалзана. Kotlin-д мөн PackBasemap.fromManifest(text). Мөн BASEMAP_EXCLUDED, JS-д PackBasemap, BasemapStyleOptions, BasemapLang төрлүүд. Swift SDK-д хараахан алга. Юу ч хасаагүй.

JS SDK 0.17.0, Swift SDK 0.13.0, Android SDK 0.14.0 (2026-10-03) ​

  • Шинэ: poisOnRoute(pois, line, nearM) хээрийн багцын шинэ pois.geojson-ийг уншина: аяллын шугамаас nearM (анхдагч 2000 м, хээрийн маршрутын хуудастай адил) дотор орших бүртгэлтэй шатахуун түгээх станц, гэр бааз, аяллын дарааллаар, along_m, off_m (alongM, offM) бүхэл метрээр, бүртгэлийн нэр, reg_number (regNumber)-тай. Улсын бүртгэлтэй тулгаагүй газар багцад байхгүй; unlisted (unlistedFuel, unlistedGerCamp) Монгол даяарх тоог нь өгнө, registry_checked (registryChecked) false бол бүртгэлийг уншаагүй. Одоогийн багцад 0 газар, 1,268 шатахуун түгээх станц, 175 гэр баазыг тоолсон. Шинэ төрөл PackPois, RoutePois, PoiOnRoute. crossingsOnRoute өмнөхтэй адил хариу өгнө. Юу ч хасаагүй.

JS SDK 0.16.0 (2026-10-03) ​

  • Шинэ: attachSuggest(input, client, { onPick }), захиалга эсвэл суух газрын маягтад нэг хаягийн талбар (PLAN 18, 5 дахь зам). Гурав дахь тэмдэгтээс, сүүлийн товчноос 200 ms дараа санал болгоно; шинэ товч хуучин хүсэлтийг цуцална. Бичсэн хаалганы кодыг эхлээд хаалгаар хайна. Сум, Enter, дарах, Escape; ARIA combobox. Сонголт бүр label(), тиймээс таараагүй газар "(албан бус)" гэнэ. Suggester нь DOM-гүй ижил логик. Мөн SUGGEST_MIN_CHARS, SUGGEST_DELAY_MS, төрлүүд Suggestion, SuggestOptions, AttachSuggestOptions, SuggestBox, SuggestClient. Юу ч хасаагүй.
  • Захиалгын жишээ апп үүнийг ашиглана.

JS SDK 0.15.0, Swift SDK 0.12.0, Android SDK 0.13.0 (2026-10-03) ​

  • crossingsOnRoute: бэлчирийн салаан дээрх голын огтлолцолд анхааруулга бүр болон багцын огтлолцолд шинэ delta талбар: lake (нуурын OSM нэр, null байж болно), lake_osm (lakeOsm, relation/114846 мэт), river. Тэнд гол нууранд цутгахдаа салаалдаг, салаа бүр хэдий хэр ус авдгийг загварын аль ч хэсэг хэлэхгүй тул урсац null: "бэлчирийн салаа, урсац тодорхойгүй" гэж харуул. Бусад газар болон дүрмээс өмнөх багцад null/nil. Одоогийн багцад 5,525 огтлолцлоос 3, бүгд Ховд голын Хар-Ус нуурт цутгах бэлчирт. Юу ч хасаагүй.

Swift SDK 0.11.0, CocoaPods (2026-10-03) ​

  • Шинэ: sdk/swift хавтсанд Dock.podspec. CocoaPods апп pod 'Dock', :path => '../sdk/swift' нэмнэ. Swift багцтай ижил эх файл, платформ (iOS 15, macOS 13), хувилбар. CocoaPods trunk дээр байхгүй. SDK өөрчлөгдөөгүй.

Android SDK 0.12.0 (2026-10-03) ​

  • Шинэ: MapLibre Native-д газрын зургийн загвар. styleJson(options) нь dock-ийн загварыг (JS SDK-ийн dockStyle-тэй ижил) эх үүсвэрийг түлхүүртэй нь Style.Builder().fromJson-д өгнө; styleUrl(id) хадгалсан загварыг fromUri-д өгнө. Мөн StyleOptions, dockStyle, dockSources, dockLayers, UB_CENTER. Юу ч хасаагүй.
  • Эмулятор дээрх шалгалт Android 16 дээр хоёр загварыг MapLibre Native 13.6.1-ээр зурж, өнгийг шалгана. MapLibre Native Android 13 нь API 23 шаарддаг тул API 21 дээр энэ шалгалт ажиллахгүй.

Android SDK 0.11.2 (2026-10-03) ​

  • Зассан: telemetry асаалттай үед эхний geocode() Android дээр аппыг ExceptionInInitializerError (PatternSyntaxException) алдаагаар унагадаг байсан. Хайлтын дараалал үгийг Android-д байхгүй regex тугаар хуваадаг байв. Өмнөх бүх Android SDK хувилбарт байсан; JVM дээр ажилладаг байв. Одоо ижил хоосон зайг тодорхой бичсэн тул хайлтыг өмнөх шигээ үгэнд хуваана. Android 16 эмулятор дээр олдсон. Өөр юу ч өөрчлөөгүй.
  • Эмулятор дээрх шалгалт одоо хайлтын telemetry болон эмуляторын GPS-ээс бичсэн аяллыг бас шалгана.

Android SDK 0.11.1 (2026-10-03) ​

  • Зассан: parseDoorCode, түүнийг дууддаг door() Android 5.0-6.0 (API 21-23) дээр NoSuchMethodError: codePoints() алдаагаар унадаг байсан. Тэр дуудлага Android API 24-т бий. Android 5.0 эмулятор дээр олдсон; 74 хуваалцсан тохиолдол бүгд одоо ижил хариутай. Өөр юу ч өөрчлөөгүй.
  • Хувилбар бүр одоо Android Gradle Plugin-оор бүтээсэн апп дотроос API 21, API 36 эмулятор дээр ажиллана; jar-ыг бүтээх үед API 21-тэй тулгаж шалгана.

JS SDK 0.14.0, Swift SDK 0.11.0, Android SDK 0.11.0 (2026-10-03) ​

  • crossingsOnRoute: сарын м3/с (month_m3s, monthM3s) одоо урсацын confidence 0.1 буюу түүнээс бага үед ч null болно, зөвхөн эргэлзээтэй хэсэгт биш. OSM-ийн голыг дагасан загварын хэсэг байхгүй (snap none_fits), эсвэл суваг зөвхөн жижиг хэсгийг дагадаг тул голын гол урсгалыг авсан (main_stem) газарт багц 0.1 тавьдаг. Хээрийн самбар тэнд тоог аль хэдийн нуудаг байсан. Одоогийн багцад 2,587 голын огтлолцлоос 448, өмнө нь 23. Их устай сарууд хэвээр өгөгдөнө.
  • Урсац болон анхааруулга бүрт шинэ snap талбар: matched, none_fits, main_stem, nearest; тулгалтаас өмнөх багцад null/nil. Шинэ тогтмол LOW_FLOW_CONFIDENCE (Swift-д lowFlowConfidence), 0.1. Юу ч хасаагүй.

Swift SDK 0.10.0, Android SDK 0.10.0 (2026-10-03) ​

  • Шинэ crossingsOnRoute, офлайн, JS SDK 0.13.0-тэй адил: хээрийн багцын crossings.geojson-оос (Swift-д PackCrossings(json:), Kotlin-д PackCrossings.fromJson(text)) аяллын шугам 5 м дотор өнгөрөх гарам, гүүргүй огтлолцлыг аяллын дарааллаар өгнө. Талбарууд: alongM, offM, highWater, highMonths, monthM3s (эргэлзээтэй хэсэгт nil/null). Шинэ ubMonth(), анхдагч сар. Хуваалцсан туршилтын тохиолдол, гурван бодит аялал дээр JS-тэй ижил хариу. Юу ч өөрчлөөгүй, хасаагүй.
  • Android: Maven artifact болгон бүтээнэ, mn.dock:dock-android:0.10.0, POM, sources jar, javadoc jar-тай. POM kotlinx-coroutines, kotlinx-serialization-ийг жагсаадаг тул апп ганц хамаарлын мөр нэмнэ. Maven Central дээр хараахан гараагүй: репозиторийн хавтсыг холбогч хүнээсээ авна (Android хуудас, Суулгах). Jar нь хэвээрээ.

JS SDK 0.13.0 (2026-10-03) ​

  • Шинэ crossingsOnRoute(crossings, line, month?), офлайн: хээрийн багцын crossings.geojson-оос аяллын шугам 5 м дотор өнгөрөх гарам болон OSM-д гүүр, гарц тэмдэглээгүй огтлолцлыг аяллын дарааллаар өгнө. Тус бүр along_m, off_m, гол дээр тухайн сарын high_water (анхдагч нь Улаанбаатарын энэ сар), high_months, сарын дундаж урсац м3/с (эргэлзээтэй хэсэгт null). Багцын тэмдэглэл, урсацын эх сурвалжийг хамт харуул. Юу ч өөрчлөөгүй, хасаагүй.

JS SDK 0.12.0, Swift SDK 0.9.0, Android SDK 0.9.0 (2026-10-03) ​

  • geocode шинэ сонголт proximity (JS-д [lon, lat], Swift, Kotlin-д LonLat), API 0.35.0-ийн параметрээр явна: бичсэн үгээр ижил таарцтай эхэлсэн нэрсээс ойр газар нь эхэнд. route-тай адил 7 оронтой бутархай. Төхөөрөмж дээр хадгалагдахгүй, хайлт хуваалцахад явахгүй; сүлжээгүй үеийн хариу уншихгүй. Үүнгүй хүсэлт өмнөх шигээ. Юу ч хасаагүй.

0.35.2 (2026-10-03) ​

  • GET /v1/geocode: оноо тэнцсэн хоёр газраас албан хаяг нь тохирсон (matched) нь эхэнд, дараа нь хэсэгчлэн (partial), дараа нь хаяггүй. Тэгээд итгэлийн түвшин өндөр нь эхэнд (хоосон ба 0 тэнцүү). Өмнө нь id-аар эрэмбэлдэг байсан. Одоо бүх мөр албан хаяггүй, итгэл 0 эсвэл хоосон тул хариу 0.35.1-тэй яг адил. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.35.1 (2026-10-03) ​

  • GET /v1/geocode, нэр бичиж байхад: түншийн аппын хэрэглэгчдийн сонгосон газар ижил таарцтай газраас өмнө гарна. Жилийн дотор 5 ба түүнээс олон сонголт, 2 ба түүнээс олон түншээс ирсэн бол тооцно. Нэр бүтнээрээ таарсан, нэрийн эхлэл, дараагийн үг гэсэн дараалал хэвээр. Сонголт POST /v1/telemetry/search-ээс, хэрэглэгч зөвшөөрсөн үед л. Одоогоор ийм сонголт байхгүй тул хариу 0.35.0-тэй яг адил. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.35.0 (2026-10-03) ​

  • GET /v1/geocode шинэ сонголттой параметр proximity=lon,lat (хүн байгаа газар эсвэл газрын зургийн төв). Асуулт нэрийнх нь эхлэл болсон газруудаас ижил таарцтай бол ойр нь эхэнд: нэр бүтнээрээ таарсан, нэрийн эхлэл, дараагийн үг гэсэн дараалал хэвээр, бүлэг бүрт ойр нь эхэнд. Алс байгаа бүтэн нэр хажууд байгаа нэрийн эхлэлээс өмнө хэвээр. Цэг бичигдэхгүй. Буруу утга 400 invalid_proximity. Цэггүй асуулт 0.34.2-той яг адил. Туршилтын багц, 3 тэмдэгт, эхний 3-т зөв: цэггүй 0.385, зорилтын дүүргийн төвөөр 0.431, хотын төвөөр 0.394. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.34.2 (2026-10-03) ​

  • GET /v1/geocode, нэр бичиж байхад: асуулт нэрийнх нь эхлэл болсон газар зөвхөн төстэй газраас өмнө гарна. Нэр бүтнээрээ таарсан нь эхэнд, дараа нь асуултаар эхэлсэн нэр, дараа нь дараагийн үг нь асуултаар эхэлсэн нэр; ижил таарцад дүүрэг, хороолол барилгаас өмнө, дараа нь богино нэр. "Бая" гэвэл Баянгол, Баянзүрх дүүрэг гарна, "байр" биш. Туршилтын багцын асуултыг 3 тэмдэгтээр таслахад зөв газар эхний 3-т 0.330-аас 0.385; 4 тэмдэгтэд 0.399-өөс 0.472; бүтэн асуулт өөрчлөгдөөгүй (эхний байранд 0.991). Ийм мөрийн score 1.749 хүртэл. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.34.1 (2026-10-03) ​

  • GET /v1/geocode, газрын тэмдэгээр хайх: асуулт төрлийг нэрлэсэн бол ("X-ийн урд талд, хажууд нь цэцэрлэг байдаг их сургууль") тэр төрлийн, эсвэл төрөл нь тодорхойгүй газар бусад төрлийн газраас өмнө гарна; бүлэг бүрийг дахин эрэмбэлэх загвар эрэмбэлнэ. Зөвхөн "барилга", "газар" гэсэн асуулт өмнөх шигээ. score загварынх хэвээр. Тайлбартай 600 асуулттай хоёр багцад эхний байранд зөв гарсан нь 0.963-аас 0.983 (12 сайжирсан, 0 муудсан), 0.978-аас 0.983 (3, 0). Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.11.0, Swift SDK 0.8.0, Android SDK 0.8.0 (2026-10-03) ​

  • Шинэ офлайн туслах: parseDoorCode(text) бичсэн эсвэл буулгасан хаалганы кодыг API-тай адил уншина, хүсэлт явуулахгүй: латин том үсгээр код, түүний араас бичсэн зүйл (unit), эсвэл яагаад болохгүй: empty, length (5 тэмдэгт биш), letters (эгшиг, I, L, O, U, эсвэл тэмдэг). Кирилл ижил үсэг, зай нь API-тай адил, ижил 74 тохиолдол дээр шалгасан (sdk/testdata/door-code.json). Мөн DOOR_CODE_ALPHABET, DOOR_CODE_LENGTH (Swift-д doorCodeAlphabet, doorCodeLength).
  • door() код байж болохгүй бичвэрийг хүсэлт явуулахаас өмнө API-тай ижил DockError-оор татгалзана: 400 invalid_code, ижил мессеж. Татгалзсан бичвэр хүсэлт зарцуулахаа больсон. Юу ч хасаагүй.

Swift SDK 0.7.0, Android SDK 0.7.0 (2026-10-03) ​

  • Сүлжээгүй хайлт, JS SDK 0.10.0-тай адил. pick-д өгсөн газар бүр төхөөрөмж дээр хадгалагдаж, geocode хариу авахгүй бол (DockError код network) тэдгээрээс offline true-тэй хариулна, хамгийн их сонгосон нь эхэнд. Зөвхөн газар: бичсэн текст, цаг, цэг хадгалахгүй. Анхдагчаар санах ойд, 100 газар. placeCache: PlaceCacheOptions(store: UserDefaultsPlaceStore()) (Swift) эсвэл placeCache = PlaceCacheOptions(store = ...) (Kotlin, SharedPreferences дээрх PlaceStore) апп дахин нээхэд хадгална; nil эсвэл null унтраана. JS SDK-тэй ижил түлхүүр, ижил формат. Шинэ places(), forgetPlaces(). Өмнө нь хуваалцах унтраалттай үед pick юу ч хийдэггүй байсан; одоо газрыг хадгална, юу ч илгээхгүй хэвээр. GeocodeResponse-д offline нэмэгдэв (API-ийн хариунд false, сүлжээгээр дамжихгүй). Юу ч хасаагүй.

JS SDK 0.10.0 (2026-10-03) ​

  • Сүлжээгүй хайлт. pick-д өгсөн газар бүр төхөөрөмж дээр хадгалагдаж, geocode хариу авахгүй бол (DockError код network) тэдгээрээс offline: true-тэй хариулна, хамгийн их сонгосон нь эхэнд. Зөвхөн газар: бичсэн текст, цаг, цэг хадгалахгүй. Анхдагчаар санах ойд, 100 газар; placeCache: { store: localStorage, max } хуудас дахин ачаалахад хадгална, placeCache: false унтраана. Шинэ places(), forgetPlaces(). Өмнө нь хуваалцах унтраалттай үед pick юу ч хийдэггүй байсан; одоо газрыг хадгална, юу ч илгээхгүй хэвээр. API-ийн хариу өөрчлөгдөөгүй. Юу ч хасаагүй.

JS SDK 0.9.0, Swift SDK 0.6.0, Android SDK 0.6.0 (2026-10-02) ​

  • Офлайн шинэ туслах: JS closureAt(avoid, point), Swift avoid.closure(at:), Kotlin avoid.closureAt(point). excludePolygons-ийн хариу дахь хүрээнүүдээс цэгийг агуулсан эхний хаалтын id-г өгнө, үгүй бол null. Valhalla хүрээн доторх бүх замыг хасдаг тул тэнд эхлэх, дуусах аялал "No path could be found for input" авна; өөрийн Valhalla-аас асуухаас өмнө хоёр үзүүрийг шалга. API-ийн GET /v1/route-ийн 422 end_in_closure-тэй ижил дүрэм, ижил 700 цэг дээр шалгасан. route()-ийн тайлбарт end_in_closure, closures_over_limit нэмэгдэв. Юу ч хасаагүй.

0.34.0 (2026-10-02) ​

  • GET /v1/route: from эсвэл to өнөөдөр идэвхтэй замын хаалтын дотор байвал 422 end_in_closure, мессежид хаалтын id-г нэрлэнэ. Өмнө нь чиглүүлэгч хаалтын доторх бүх замыг хасаад 422 no_route, "No path could be found for input" гэж хариулдаг байв. Хаалтын гаднах цэг рүү зам ав. Юу ч хасаагүй.

0.33.0 (2026-10-02) ​

  • POST /v1/closures нь Idempotency-Key толгой хүлээн авна (1-64 тэмдэгт: үсэг, тоо, ._:-; uuid тохирно). Хугацаа хэтэрсний дараа ижил түлхүүр, ижил биетэй дахин илгээвэл эхний мэдээллийг буцаана, шинээр юу ч хадгалахгүй, Idempotent-Replayed: true толгойтой. Ижил түлхүүр өөр биетэй бол 422 idempotency_key_reused. Түлхүүр байгууллага бүрт тусдаа, хугацаа дуусахгүй. Түлхүүргүй бол өмнөхтэй ижил. Юу ч хасаагүй.

0.32.0 (2026-10-02) ​

  • GET /v1/route өнөөдөр (Улаанбаатарын цагаар) идэвхтэй замын хаалт бүрийг тойрно, бүх горимд. Хариуд шинэ closures талбар: as_of (аяллын өдөр), avoided (тойрсон хаалтын id). Тухайн өдрийн хаалтууд нэг хүсэлтэд чиглүүлэгчийн хязгаараас (10,000 м хүрээ, 100 орой) хэтэрвэл 422 closures_over_limit: хаалтыг хаяж зам өгөхгүй. Хаалтыг уншиж чадахгүй бол 503 unavailable. Хаалтгүй өдөр зам өмнөхтэй ижил.

JS SDK 0.8.0, Swift SDK 0.5.0, Android SDK 0.5.0 (2026-10-02) ​

  • JS Route, Swift Route, Kotlin Route шинэ closures талбартай (RouteClosures). Юу ч хасаагүй.

JS SDK 0.7.0, Swift SDK 0.4.0, Android SDK 0.4.0 (2026-10-02) ​

  • closures() нь GET /v1/closures-ийг уншина (route:read): өнөөдөр дуусаагүй зам хаалт, тус бүр хүрээтэй. Хариуг утсанд хадгална. excludePolygons(closures, day) офлайн ажиллана: аяллын өдөр (анхдагч нь өнөөдөр, Улаанбаатарын цагаар) идэвхтэй хаалтын хүрээг өөрийн Valhalla-ийн exclude_polygons-д өгнө. Нэг хүсэлтэд Valhalla-ийн хязгаараас хэтэрвэл алдаа шиднэ (JS ClosuresOverLimitError, Swift ClosuresError.overLimit, Kotlin ClosuresOverLimitException): замыг татгалз, хаалтыг бүү хая. Жагсаалтын as_of-оос өмнөх өдөр алдаа шиднэ: дахин татаж ав. JS мөн isActive, ubToday-г гаргана. Юу ч хасаагүй. API 0.31.0 хэвээр.

0.31.0 (2026-10-02) ​

  • Замын хаалт (PLAN.md 20.14). Түнш үерт автсан, эвдэрсэн, гүүр нурсан, цас, шавар, засвартай зам эсвэл гарцыг POST /v1/closures-ээр мэдээлнэ: цэг эсвэл 3000 м хүртэлх шугам, эхлэх ба дуусах өдөр, тэмдэглэл. Шинэ эрх closures:write. Илгээгч нь түлхүүрийн байгууллага. Мэдээлэл устахгүй, засагдахгүй: зам нээгдэхэд POST /v1/closures/{id}/lift. GET /v1/closures/{id} өөрийн мэдээллийг тэмдэглэлтэй нь өгнө.
  • GET /v1/closures (route:read) өнөөдөр хүчинтэй ба удахгүй эхлэх хаалт бүрийг Valhalla-д exclude_polygons болгон илгээх цагирагтай нь өгнө. Офлайн багцын closures хэсэгтэй ижил хэлбэр, ижил цагираг. Түншийн нэр, тэмдэглэл гарахгүй. Итгэл 0.5: нэг түншийн үг. Хориотой газарт мэдээлэл авахгүй. Тэмдэглэлд 6 ба түүнээс олон оронтой тоо (утасны дугаар) байвал татгалзана. Юу ч хасаагүй.

0.30.1 (2026-10-02) ​

  • GET /v1/geocode, газрын тэмдэгээр хайх: тайлбар дахь газрын үгийг англи үгтэй нь хамт хайна ("хажууд нь сургууль (school) байдаг байр"), дахин эрэмбэлэх загвар аль хэдийн ингэж уншдаг шиг. Монгол, орос, япон, солонгос, хятад үгэнд хамаарна. Англи үгийг бичсэнээр нь уншина. Зөвхөн төрлөөр асуусан 486 асуултад тохирох газар эхэнд гарсан нь 0.951-ээс 0.965 (7 сайжирсан, 0 муудсан). Тайлбартай 600 асуултад эхний байранд зөв гарсан нь 0.952-оос 0.953. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.30.0 (2026-10-02) ​

  • GET /v1/geocode, газрын тэмдэгээр хайх: асуулт газрыг бас тайлбарласан бол ("Max Mall-ийн зүүн талд, дотор нь эмийн сан байдаг барилга") тайлбараар олдсон эхний 10 газрыг дахин эрэмбэлэх загвар тайлбартай нь зэрэгцүүлж уншаад дахин эрэмбэлнэ (PLAN.md 7, 3-р давхарга). Тэдгээр нь layer 3, score нь загварын оноо, 0-ээс 1. Шинэ утга: layer 3. Загвар удаан эсвэл ажиллахгүй бол өмнөх шигээ layer 2. Тайлбартай 200 асуултад эхний байранд зөв гарсан нь 0.70-аас 0.82, эхний 3-т 0.84-өөс 0.91. Юу ч хасаагүй.

0.29.1 (2026-10-02) ​

  • GET /v1/geocode, газрын тэмдэгээр хайх: нэрэндээ таслалтай газрын тэмдгийг бүтнээр нь уншина ("U.S. Embassy - Ulaanbaatar, Mongolia-ийн баруун талд"). Өмнө нь зөвхөн сүүлийн хэсгийг ("Mongolia") уншдаг байсан. Урт хувилбар нь тухайн нэртэй газрын тэмдэг олдвол л хүчинтэй, үгүй бол таслал хүртэлх хэсгийг уншина. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.29.0 (2026-10-02) ​

  • Нэргүй барилга ч хайлтад орно (643,661 барилгаас 633,322 нь нэргүй). GET /v1/geocode тайлбараар (layer 2) ба газрын тэмдгийн 150 м дотор олно. GET /v1/reverse цэг тэр барилгын дотор байвал л гаргана. GET /v1/address/{id}, GET /v1/changes түүнийг мэднэ. Нэр нь null, long_mn нь дүүрэг ба хороолол, official_status нь none. Нэрээр (layer 1) хайхад гарахгүй. Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.28.1 (2026-10-02) ​

  • GET /v1/geocode, газрын тэмдэгээр хайх: харьцааг хаадаг үгийг тайлбарт тооцохоо больсон. Монгол "тал" (тийн ялгалтай) ба "нь" ("зүүн талд", "баруун талын", "урд нь"), япон 側, の, に ("東側の建物"), солонгос 에 (있는) ("동쪽에 있는 건물"), хятад 的 ("东边的建筑"). Талбар өөрчлөгдөөгүй. Юу ч хасаагүй.

0.28.0 (2026-10-02) ​

  • GET /v1/geocode газрын тэмдэгээр хайна (PLAN 7): "Хүннү моллын ард", "Max Mall-iin urd", "east of Max Mall", "к востоку от ...", "...の近く", "... 동쪽", "...东边". Газрын тэмдгийг нэрээр нь олоод, түүнээс 150 м дотор, хэлсэн талд (55 градусын дотор) байгаа газрыг эхэнд нь гаргана. Ар нь хойд, урд нь өмнөд зүг. Асуулгын үлдсэн үгээр (газрын тэмдгийн нэргүйгээр) эрэмбэлнэ (layer 2), өөр үг байхгүй бол зайгаар (layer 1).
  • Үр дүн бүрд шинэ талбар near: тэр газрын тэмдэг (kind, id, нэр, relation, metres). Бусад үр дүнд null. Нэрээр хайх дараалал өөрчлөгдөөгүй. Юу ч хасаагүй.

0.27.0 (2026-10-02) ​

  • GET /v1/geocode үр дүн бүрд шинэ талбар layer. 1: нэр, хаягийн үг таарсан. 2: газрын тайлбар утгаараа таарсан (PLAN 7, хоёрдугаар давхарга), жишээ нь "сургуулийн хажууд цэнхэр дээвэртэй барилга". Нэрээр олдсон газар limit-ээс цөөн үед л 2-р давхаргын газар үлдсэн байрыг дүүргэнэ, нэрээр олдсон бүх үр дүнгийн дараа. score-ыг зөвхөн нэг давхаргын дотор харьцуулна. Нэрээр хайх дараалал өөрчлөгдөөгүй. Юу ч хасаагүй.

0.26.0 (2026-10-02) ​

  • GET /v1/traces/cells?month=2026-09&bbox=west,south,east,north, сар бүрийн аяллын тоо 500 м нүдээр, бүх түншийнх нийлбэрээр (PLAN 19). Шинэ эрх insights:read. Нүдийг зөвхөн 3 буюу түүнээс олон байгууллага тэр нүдээр аялал илгээсэн, хамгийн том байгууллагынхыг хассаны дараа 5 буюу түүнээс олон аялал үлдсэн үед харуулна. Бусад нүд гарахгүй: нүд байхгүй бол цөөн гэсэн үг, тэг биш. Сар дууссанаас хойш 14 хоногийн дараа, тэр хүртэл ирсэн аяллаар нийтэлнэ. Түүхий цэгүүд 90 хоногт устсаны дараа ч тоо үлдэнэ. Таны DELETE /v1/traces/{id} аяллыг тооноос мөн хасна. Өөр юу ч өөрчлөгдөөгүй.

0.25.0 (2026-10-02) ​

  • POST /v1/oauth/token, OAuth2 client credentials (PLAN 19). Таны сервер түлхүүрээ dt_ хандалтын токеноор сольж, токен нэг цаг, хүссэн эрхээрээ ажиллана. Токеныг апп руу өгснөөр түлхүүр апп дотор орохгүй. Токеныг түлхүүр шиг илгээнэ: ?access_token= эсвэл Authorization: Bearer. Зөвхөн токенд шинэ 401 алдаа: invalid_token, expired_token. Түлхүүр өмнөх шигээ ажиллана. Юу ч хасаагүй.

0.24.0 (2026-10-02) ​

  • Хаалга, хайлт, урвуу хайлтын үр дүн, GET /v1/address/{id}-ийн point 6 оронтой бутархайгаар (ойролцоогоор 0.1 м) өгөгдөнө. 7 дахь орон нь танай байгууллагын тэмдэг (PLAN 19): нэг цэгт үргэлж ижил, цэгийг 0.12 м-ээс бага хөдөлгөнө. Урвуу хайлтын дээд түвшний point таны илгээснээрээ буцна. Талбар, төрөл өөрчлөгдөөгүй.

JS SDK 0.6.0 (2026-10-02) ​

  • maplibre-gl 6.4.1 эсвэл түүнээс хойшхи 6.x л шаардана (peerDependencies >=6.4.1 <7). 6.4.0 хүртэлх бүх хувилбар, 4, 5-ыг оролцуулан, HTML цэвэрлэгчдээ ноцтой XSS эмзэг байдалтай (GHSA-jrc7-96c5-q579). 4 эсвэл 5 дээр байгаа бол npm install maplibre-gl@6 хийж, Bundler хэсгийн worker мөрийг нэмнэ. Жишээ аппууд maplibre-gl 6.11.2-ыг unpkg-ээс ES module-аар ачаална. Код өөрчлөгдөөгүй. API 0.23.0 хэвээр.

Android SDK 0.3.0 (2026-10-02) ​

  • Kotlin дээр хайлтын мэдээлэл хуваалцах, аялал бичих, JS, Swift-ийн зөвшөөрлийн дүрмээр. setTelemetry(on), pick(result), flushTelemetry(), appInBackground(): анхдагчаар унтраалттай, зөвхөн эцсийн текст, үр дүнгийн тоо, сонголт, 50-аар, onStop-оос appInBackground() дуудахад илгээнэ, хэрэглэгч унтраахад устана. startTrace(Consent.OPT_IN, source), stopTrace(), cancelTrace(), trace(id), deleteTrace(id): цэгүүд зөвхөн санах ойд, [lon, lat, t], 20,000 цэг тутамд хуваана. Байршлын зөвшөөрлийг апп өөрөө асууж, байршлыг PositionFeed-д өгнө. Юу ч хасаагүй. API 0.23.0, Swift 0.3.0 хэвээр.

Swift SDK 0.3.0 (2026-10-02) ​

  • Swift дээр хайлтын мэдээлэл хуваалцах, аялал бичих, JS-ийн зөвшөөрлийн дүрмээр. setTelemetry(_:), pick(_:), flushTelemetry(): анхдагчаар унтраалттай, зөвхөн эцсийн текст, үр дүнгийн тоо, сонголт, 50-аар, апп ар талд ороход илгээнэ, хэрэглэгч унтраахад устана. startTrace(consent: .optIn, source:), stopTrace(), cancelTrace(), trace(_:), deleteTrace(_:): цэгүүд зөвхөн санах ойд, [lon, lat, t], 20,000 цэг тутамд хуваана. Байршлын зөвшөөрлийг апп өөрөө асууж, Core Location-ийн байршлыг PositionFeed-д өгнө. Юу ч хасаагүй. API 0.23.0, Android 0.2.0 хэвээр.

0.23.0 (2026-10-02) ​

  • Сар бүрийн газар дээрх шалгалт (PLAN 5), зөвхөн dock-ийн ажилтны түлхүүрт: GET /v1/audit түүврүүдийг жагсаана, GET /v1/audit/{tag} нэг шалгах жагсаалтыг явах дарааллаар, одоог хүртэлх хариутай нь өгнө, PATCH /v1/audit/{tag}/{seq} шалгагчийн олсныг бичнэ (found, wrong_location, missing, no_access, эсвэл арилгахад null). found хэмжсэн цэг, аргыг (rtk, imagery_tap, tape) шаардана. Төхөөрөмжийн байрлал 40 м дотор байна (no_access 150 м). Хариу бүр хадгалагдана. audit:write эрх хэрэгтэй, зөвхөн дотоод байгууллагад олгоно. Түншийн дуудлага өөрчлөгдөөгүй.

Swift, Android SDK 0.2.0 (2026-10-02) ​

  • Swift (label(_:lang:), Lang.mn, .en), Kotlin (label(place, lang), Lang.MN, EN) дээр label, JS-ийн label()-тэй ижил дүрэм: ярианы хэлбэр, дараа нь нэр, бүтэн хаяг, код, id хэзээ ч биш, албан ёсны хаягтай таараагүй бол "(албан бус)" / "(unofficial)". Door, RouteDoor, GeocodeResult, ReverseResult, Address дээр ажиллана. iOS, Android хуудас үүнийг ашиглана. Юу ч хасаагүй. API 0.22.0 хэвээр.

iOS, Android SDK хуудас (2026-10-02) ​

  • Хоёр шинэ хуудас, iOS SDK, Android SDK, монгол, англи хэлээр: суулгах, дуудлага бүр, алдаа, tile, хуучирсан зам, түлхүүр, лавлах хүснэгт. Тэдгээр дээрх код бүр swift test, ./gradlew test-д хуурамч transport дээр ажиллана. SDK, API өөрчлөгдөөгүй: Swift, Android 0.1.0, API 0.22.0.

Android SDK 0.1.0 (2026-10-02) ​

  • Android SDK-ийн анхны хувилбар, sdk/android дахь Kotlin (Java 8 bytecode, Android API 21 ба түүнээс дээш, kotlinx-coroutines, kotlinx-serialization): suspend дуудлага geocode, reverse, door, route, place, changes, confirm, reportDoor, usage, JS ба Swift SDK-тай ижил нэр, ижил алдаа (DockError). Тоотын төрөл DoorUnit, Kotlin-ий Unit-ийг далдлахгүйн тулд. authorizedUrl() түлхүүрийг зөвхөн dock-ийн тайлын URL-д нэмнэ, MapLibre Native-д. Газрын зураг, телеметр, аялал бичлэг хараахан байхгүй. Maven-д ороогүй. API өөрчлөгдөөгүй, 0.22.0.

Swift SDK 0.1.0 (2026-10-02) ​

  • iOS SDK-ийн анхны хувилбар, sdk/swift дахь Swift багц (iOS 15, macOS 13, хамааралгүй): geocode, reverse, door, route, place, changes, confirm, reportDoor, usage, JS SDK-тай ижил нэр, ижил алдаа (DockError). authorizedURL(_:) түлхүүрийг зөвхөн dock-ийн тайлын URL-д нэмнэ, MapLibre Native-д. Газрын зураг, телеметр, аялал бичлэг хараахан байхгүй. Багцын индекст ороогүй. API өөрчлөгдөөгүй, 0.22.0.

Өгөгдлийн сангийн холболт (2026-10-02) ​

  • Өгөгдлийн сан сул холболтыг таслахад (дахин эхлүүлэх гэх мэт) API унахаа больсон: анхааруулга бичээд дараагийн хүсэлтэд шинэ холболт нээнэ. Унтрахдаа бүх холболт хаагдтал хүлээнэ. API өөрчлөгдөөгүй, 0.22.0.

Өөрчлөлтийн урсгалын хил (2026-10-01) ​

  • GET /v1/changes: until өгөгдлийн сангийн засвар (autovacuum)-ын ард хоцрохоо больсон. Зөвхөн нээлттэй бичилт түүнийг барина. Өөрчлөлт дараагийн индекс шинэчлэлийн дараа гарна, алга болохгүй. API өөрчлөгдөөгүй, 0.22.0.

Итгэлийн түвшин (2026-10-01) ​

  • Жолоочийн баталгаажуулалт confidence-ийг цаг тутам өсгөнө. Entrance (internal)-оос 5 м дотор нэг confirmed дарц: 2. Дор хаяж хоёр өөр жолооч эсвэл байгууллагын, хоорондоо 5 м дотор гурван дарц: 3. Шинэ wrong_location эсвэл missing түвшинг зогсооно. 5 м-ээс хол confirmed дарц мөн зогсоож, wrong_location шиг шалгагдана. Энд зөвхөн өсгөнө; цэгийг зөөвөл өмнөх шигээ нэг түвшин буурна. API өөрчлөгдөөгүй, 0.22.0.

JS SDK 0.5.0 (2026-10-01) ​

  • place(id): GET /v1/address/{id}, газрыг id-гаар parents-тай нь. changes(since, { limit, cursor }): GET /v1/changes-ийн нэг хуудас; cursor өгвөл since илгээхгүй, Date-г UTC-ээр. confirm(confirmation): POST /v1/confirm; tap-гүй confirmed, эсвэл code, entrance хоёулаа бол TypeScript татгалзана, observed_at-д Date болно. API өөрчлөгдөөгүй, 0.22.0 хэвээр.

0.22.0 (2026-10-01) ​

  • POST /v1/confirm: газар дээр очсон жолооч хаалгыг (code) эсвэл entrance (internal)-ийг (тайлын id) баталгаажуулна, эсвэл өөр газар байна (wrong_location), алга (missing) гэнэ. Жолооч хаалгыг дарж заана; утасны GPS (device) зөвхөн шалгалт, tap-аас 40 м дотор байна. driver бол таны өөрийн жолоочийн дугаар, зөвхөн хэш хадгалагдана; утасны дугаар, имэйл татгалзана. Нэг жолооч 24 цагт ижил зүйлийг нэг л удаа тооцно. Газрын зураг шууд өөрчлөгдөхгүй. Офлайн дараалсан баталгаа observed_at-тай, 7 хоног хүртэл. confirm:write эрх хэрэгтэй (түншийн түлхүүр).

0.21.0 (2026-10-01) ​

  • GET /v1/changes?since=: тухайн цагаас хойш өөрчлөгдсөн хаалга, газрын id, kind, state, changed_at. Түнш хадгалсан газраа бүгдийг дахин татахгүй шинэчилнэ. current бол /v1/address/{id}-ээр дахин ав, retired эсвэл hidden бол устга. Цонх нь [since, until), until бол хайлтын индексийн сүүлийн шинэчлэл, тиймээс жагсаасан current бүрийг id-гаар авч болно. Хуудас cursor-оор, limit 1..1000. Хязгаарлалттай газар доторх зүйл жагсаалтад орохгүй. changes:read эрх хэрэгтэй (түншийн түлхүүр).

0.20.0 (2026-10-01) ​

  • GET /v1/address/{id}: geocode эсвэл reverse-ийн өгсөн id-гаар нэг хаалга, газрыг дахин авна. Хайлтын үр дүнтэй ижил талбарууд, нэмээд parents: хаалга байрлах барилга эсвэл хашаа, хороолол, гудамж, хороо, дүүргийн id (бизнес бол хаалгаараа). Албан хаяг эхэнд, код дараа нь. Хаагдсан хаалга, нурсан барилга 410 retired, дугаар дахин ашиглагдахгүй. Хязгаарлалттай газар доторх зүйл 404. Хайлтын индекс шинэчлэгдээгүй шинэ газар 404. geocode:read эрх хэрэгтэй.

0.19.1 (2026-10-01) ​

  • Хөтөчөөс DELETE /v1/traces/{id} ажиллана: CORS DELETE-г зөвшөөрнө. Өмнө нь хөтөч дэх deleteTrace(id) сүлжээний алдаа өгч, аялал устдаггүй байсан (Node-оос ажилладаг байсан). Жолоочийн аяллын жишээ апп examples/driver.html.

0.19.0 (2026-10-01) ​

  • JS SDK 0.4.0: startTrace({ consent: 'opt_in' }), stopTrace(), cancelTrace(), trace(id), deleteTrace(id). startTrace хүртэл унтраалттай. Байршлаас [lon, lat, t]-г зөвхөн санах ойд, секундэд нэгээс ихгүй бичнэ; 50 м-ээс муу нарийвчлалтай, Монголоос гадуурх цэгийг орхино; зогсоход POST /v1/traces руу 20,000 цэг тутамд хувааж илгээнэ.
  • POST /v1/traces: хэрэглэгч зөвшөөрсөн бол нэг аяллын GPS мөрийг илгээнэ, dock.trace.v1 хэлбэрээр. Яг гурван түлхүүр: format, consent: "opt_in", points ([lon, lat, t], WGS84, UTC секунд, 2-оос 20,000 цэг, Монгол дотор). Өөр түлхүүр (төхөөрөмжийн дугаар, хэрэглэгч, нарийвчлал) байвал бүхэлд нь буцаана. Татгалзсан шалтгааны 11 код, биеийн утгыг хэзээ ч буцаахгүй. Цэгээс гадна байгууллага ба өдөр л хадгална: түлхүүр, IP, төхөөрөмж үгүй. Хязгаарлалттай газар доторх цэгийг хадгалахгүй (restricted). Ижил аяллыг хоёр илгээвэл нэг удаа хадгална. Түүхий цэгийг 90 хоногийн дараа устгана (purge_after). Бие 2 MB хүртэл. trace:write эрх хэрэгтэй.
  • GET /v1/traces/{id}: өөрийн мөрийг хадгалсан хэвээр нь GeoJSON-оор. Бусад байгууллагын дугаарт 404.
  • DELETE /v1/traces/{id}: өөрийн мөрийг одоо устгана. Цэг, цаг арилна; дугаар үлдэж, дахин ашиглагдахгүй.

0.18.0 (2026-10-01) ​

  • POST /v1/telemetry/search: хэрэглэгч зөвшөөрсөн бол газрын хайлт, сонгосон үр дүнг илгээнэ (consent: "opt_in", өөрөөр 400 consent_required). Нэг хүсэлтэд 50 хүртэл хайлт: q, харуулсан үр дүнгийн тоо results, сонгосон picked (kind, id, rank). Байгууллага ба Улаанбаатарын өдөр л хадгална: түлхүүр, IP, төхөөрөмж, цаг үгүй. Утасны дугаар, и-мэйлийг хадгалахаас өмнө хасна. Хязгаарлалттай газрын сонголтыг бүхэлд нь хаяна (dropped). geocode:read эрх хэрэгтэй, нэг хүсэлт нэг дуудлага. Анхдагчаар унтраалттай байлгана.
  • JS SDK 0.3.0: telemetry сонголт ба setTelemetry(on), анхдагчаар унтраалттай. Асаалттай үед geocode хайлт (эцсийн текст л) ба pick(result) энэ зам руу 50-аар, хуудас нуугдахад, flushTelemetry() дуудахад очно. Захиалгын жишээ апп зөвшөөрлийн чагттай.

0.17.0 (2026-10-01) ​

  • POST /v1/clean: мөр бүрт numbers нэмэгдлээ: entrance (internal), давхар, тоот, павилионыг тоогоор. "5-р entrance (internal)" 5, "В1 давхар" -1 (хонгил хасах тоо), "1206-1208 тоот" "1206", "1207", "1208". Тоот нь мөр (string) хэвээр ("0-9а"). Дугааргүй хаалга тоо өгөхгүй. Байхгүй бол хоосон жагсаалт. Бичсэн хэсгүүд өмнөх шигээ үлдэнэ.

0.16.0 (2026-10-01) ​

  • POST /v1/clean: хаягийг цэвэрлэнэ. Нэг хүсэлтэд 100 хүртэл мөр, мөр бүр 300 тэмдэгт хүртэл. Мөр бүрт дүүрэг, хороо, хороолол, гудамж, барилга, entrance (internal), давхар, тоот (бичсэнээр нь), олдсон барилгын дугаар ба цэг, олсон арга, тухайн аргын туршилтын мөрөнд зөв гарсан хувь (match_confidence), барилгын эх сурвалж, задлагдаагүй үлдэгдэл. Улсын хаягийн бүртгэлтэй хараахан тулгаагүй тул бүх мөр unofficial. Хязгаарлалттай газрын барилгыг өгөхгүй (withheld). clean:read эрх хэрэгтэй; үнэгүй түлхүүрт байхгүй. Хаягийг хадгалахгүй, логт бичихгүй.

0.15.0 (2026-10-01) ​

  • POST /v1/alerts: өнөөдрийн calls, tiles эсвэл door_misses өдрийн хязгаарын тодорхой хувьд (percent, анхдагч 80) хүрэхэд дохио өгнө. Улаанбаатарын өдөрт нэгээс илүүгүй. webhook_url заасан бол дохио бүрт нэг гарын үсэгтэй POST (Dock-Signature, HMAC-SHA256; webhook_secret нэг л удаа харагдана). Ямар ч түлхүүр, тоологдохгүй. Байгууллагад 20 хүртэл (409 alert_limit), нэг тоо, хувьд нэг (409 alert_exists). Дохио өөрчлөгдөхгүй.
  • GET /v1/alerts: байгууллагын дохио, сүүлийн 30 хоногт өгсөн дохио, webhook илгээлт.
  • Хэрэглээ хуудас: дохио, нэмэх, өгсөн дохио.

0.14.0 (2026-10-01) ​

  • POST /v1/styles: газрын зургийн загвар хадгалж (нэр, background, building, building_outline, extrude), загварын дугаар (st_ ба 10 тэмдэгт) авна. Өгөөгүй талбар dock-ийн анхдагч өнгийг авна. tiles:read эрх хэрэгтэй. Нэг байгууллага 100 хүртэл (409 style_limit). Загвар өөрчлөгдөхгүй: өнгө солих бол шинээр хадгална.
  • GET /v1/styles: байгууллагын загварууд, шинэ нь эхэндээ. GET /v1/styles/{id}: загвар MapLibre JSON-оор, эх үүсвэр нь энэ API. Зөвхөн танай байгууллагын түлхүүр уншина; бусад дугаар 404 not_found.
  • JS SDK: createMap(maplibregl, dock, { styleId }) хадгалсан загварыг ачаална. Шинэ сонголт building, buildingOutline. Entrance (internal)-ны өнгө итгэлцлийг заах тул бүх газрын зурагт ижил.
  • Загвар засварлагч хуудас: өнгө сонгож, dock tile дээр харж, хадгалаад кодоо хуулна.

0.13.0 (2026-10-01) ​

  • GET /v1/versions: API-ийн хувилбарууд, хуучирсан замууд, хаагдах өдөр. Түлхүүр хэрэггүй, тоологдохгүй.
  • Хувилбарын журам: эвдэх өөрчлөлт зөвхөн /v2-д. Хуучирсан замыг дор хаяж 365 хоногийн өмнө зарлана. Ийм замын хариу Deprecation, Sunset, Link толгойтой; хаагдах өдрөөс 410 sunset. Одоогоор хуучирсан зам алга.
  • Төлөв хуудас: API болон баримт бичгийн сайт одоо ажиллаж байгаа эсэх, 90 хоногийн өдөр бүрийн хувь, тасалдал, хуучирсан замууд. 5 минут тутам шинэчлэгдэнэ.

0.12.0 (2026-10-01) ​

  • GET /v1/usage нь plan (free эсвэл custom), upgrade талбар нэмэв. Үнэгүй байгууллагад upgrade нь түнш багцыг харуулна: өдөрт 10,000 хүсэлт, 100,000 tile, 200 олдоогүй хаалга, минутад 1,200 tile, мөн changes:read, confirm:write эрх. Түнш байгууллагад null. Үнэ хараахан нийтлэгдээгүй.
  • Хэрэглээ хуудас: багц, үнэгүй түлхүүрт түнш багцтай харьцуулсан хязгаар.

0.11.0 (2026-10-01) ​

  • POST /v1/signup: үнэгүй түлхүүрийг шууд авна. И-мэйл, нэр, хүсэлтийн бие хэрэггүй. Түлхүүр зөвхөн энэ хариунд харагдана; тэр дор нь хадгална уу. Үнэгүй түлхүүр зөвхөн уншина (door:read, geocode:read, route:read, tiles:read): минутад 60 хүсэлт, 600 тайл; өдөрт 1,000 хүсэлт, 25,000 тайл, олдоогүй 50 хаалга. Нэг хаягаас өдөрт гурван түлхүүр, бүх хүнд нийт өдрийн хязгаартай (429 signup_limited, Retry-After-ийг харна уу). Хоёулаа Улаанбаатарын 00:00 цагт шинэчлэгдэнэ.
  • Туршуур: "Үнэгүй түлхүүр авах" товч түлхүүрийн талбарыг бөглөнө.

0.10.0 (2026-10-01) ​

  • GET /v1/route?from=&to=&mode=: хоёр цэг эсвэл хаалганы кодын хоорондох зам. Код өгвөл зам барилгын төв рүү биш, тухайн entrance (internal) руу очно. from, to нь код (7QSVX) эсвэл lon,lat (106.9301,47.9201). mode: driving (үндсэн), walking, cycling. Хариунд GeoJSON шугам, метр, секунд. Шугам замын сүлжээгээр явж, entrance (internal)-д хамгийн ойр цэгт дуусна; тэндээс entrance (internal) хүртэлх шулуун зай to.gap_m, замаар зурагдахгүй. route:read эрх, код ашиглавал door:read эрх бас хэрэгтэй. Олдоогүй код 404 бөгөөд өдрийн олдоогүй хайлтын хязгаарт тоологдоно. Хязгаарлалттай газар руу зам өгөхгүй (422 not_accepted). Хамрах хүрээ: Улаанбаатар. Түгжрэлийг тооцохгүй.

0.9.0 (2026-10-01) ​

  • CORS: аль ч сайтын хөтөчөөс Authorization толгойд түлхүүртэйгээр API дуудаж болно. Cookie ашиглахгүй. Preflight хүсэлтэд түлхүүр хэрэггүй, тоологдохгүй. Retry-After, X-Quota-*, X-Rate-Limit-* толгойг хөтчийн кодоос уншиж болно.
  • Хэрэглээ хуудас: түлхүүрээ оруулаад өнөөдрийн хүсэлт, tile, олдоогүй хаалгыг хязгаартай нь, 90 хүртэл хоногийн түүхийг харна. Түлхүүр хадгалагдахгүй.

0.8.1 (2026-10-01) ​

  • openapi.json доторх info.version одоо API-ийн хувилбартай ижил байна (өмнө нь 0.5.0 гэж хоцорч байсан).

0.8.0 (2026-10-01) ​

  • POST /v1/door/report: буруу, байхгүй, давхардсан эсвэл кодгүй хаалгыг мэдэгдэнэ. kind: wrong_location (код, жинхэнэ цэг point, 500 м дотор), missing (код), duplicate (код, duplicate_of), unmapped (зөвхөн point). Хариу 202, status: queued. Хаалганы мэдээлэл хүн шалгах хүртэл өөрчлөгдөхгүй. Нэг байгууллага 24 цагт ижил мэдэгдэл дахин илгээвэл эхнийх нь буцна (already_queued). door:read эрх. Олдоогүй код 404 бөгөөд өдрийн олдоогүй хайлтын хязгаарт тоологдоно. note дахь 6 ба түүнээс олон оронтой тоо, и-мэйлийг хадгалахаас өмнө устгана.

0.7.1 (2026-10-01) ​

  • JSON болон тайлыг Accept-Encoding-оор gzip эсвэл brotli болгон шахна. Тайл дунджаар 2.2 дахин, хайлтын JSON 4-5 дахин бага. 1 KB-аас бага хариуг шахахгүй. Газрын зургийн номын сан, браузер, curl --compressed өөрөө задална. Хариу бүр Vary: Accept-Encoding толгойтой.

0.7.0 (2026-10-01) ​

  • GET /v1/usage: байгууллагын хүсэлт, тайл, олдоогүй хаалганы хайлт Улаанбаатарын өдөр бүрээр, хязгаарууд, дуудсан түлхүүрийн эрх, минутын хязгаар. Ямар ч түлхүүр ажиллана. Үнэгүй: тоологдохгүй, өдрийн хязгаарт зогсохгүй. ?days= 1-90, анхдагч 7. Өнөөдрийнх саяхны дуудлагыг багтаана.

0.6.1 (2026-10-01) ​

  • GET /v1/geocode: богино нэрийн үсэг солигдсон, дутуу, илүү алдааг засна. Индекст байхгүй 4-12 үсэгтэй үгийг хамгийн ойр үгээр (1-2 засвар, хоёр зэргэлдээ үсэг солигдвол 1) засаж дахин хайна. "Банягол" одоо Баянгол дүүргийг олно. Засварласан хайлтын score 0.1 + засвар бүрт 0.05-аар бага.

0.6.0 (2026-10-01) ​

  • Байгууллагын өдрийн хязгаар, бүх түлхүүрт нь нэг, Улаанбаатарын 00:00-д шинэчлэгдэнэ. Анхдагч өдөрт 10,000 хүсэлт, 100,000 тайл. Хэтэрвэл 429 quota_exceeded. X-Quota-Limit, -Remaining, -Reset толгой.
  • Тайл түлхүүр бүрт тусдаа минутын хязгаартай (анхдагч 1,200). Газрын зураг харах нь хүсэлтийн хязгаарыг дуусгахаа больсон.
  • GET /v1/door/{code}: хаалга олдоогүй хайлт байгууллагад өдөрт 200 хүртэл (код таах). Хязгаарт хүрвэл шөнө дунд хүртэл 429 miss_cap. Бусад зам ажилласаар.

0.5.1 (2026-10-01) ​

  • GET /v1/geocode: нэр нь хайлттай яг ижил газар түүнийг агуулсан урт нэрээс өмнө гарна. "Khan-Uul district" одоо "Khan-Uul District Sports Center" биш, дүүргийг эхэнд буцаана. Яг ижил нэрийн score 0.3-аар өндөр.

0.5.0 (2026-10-01) ​

  • GET /v1/tiles/{source} (TileJSON), GET /v1/tiles/{source}/{z}/{x}/{y} (вектор тайл). Эх үүсвэр building, entrance. tiles:read эрх шаардана. Хоосон тайл 204.
  • Үндсэн хаяг https://api.dock.mn (өмнөх баримтад api.map.dock.mn байсан; одоогоор нээгдээгүй).

0.4.0 (2026-10-01) ​

  • GET /v1/geocode?q=: хаалга, бүртгэлтэй бизнес, барилга, дүүрэг, хороо, хороолол, гудамж, тэмдэгт газрыг нэрээр хайна. Кирилл, латин, ярианы бичлэг, дугаарын дагавар, нэг хоёр үсгийн алдаа. Хамгийн тохирох нь эхэнд, score-той.
  • GET /v1/reverse?lat=&lon=: radius (анхдагч 50 м) дотрох хамгийн ойр хаалга, бизнес, барилга, тэмдэгт газар, цэгийг агуулсан дүүрэг, хороо.
  • Хаалгатай адил дараалал: эхэнд албан ёсны хаяг, дараа нь код. Хоёулаа geocode:read эрх шаардана.
  • Хязгаарлалттай газрын доторх юуг ч буцаахгүй. Хайлтын текстийг лог-д бичихгүй.

0.3.0 (2026-10-01) ​

  • GET /v1/door/{code} ажиллаж эхэллээ. Хаалгыг буцаана: эхэнд албан ёсны хаяг, дараа нь код, ярианы хаяг (mn, en, богино ба урт), entrance (internal)-ны цэг, entrance (internal)-ны төрөл ба дугаар, итгэлийн түвшин 0-4, эх сурвалж, заавар.
  • 7QSVX 17: тоот бүртгэлтэй бол түүнийг буцаана.
  • Үл мэдэгдэх кодод 404 not_found, хасагдсан хаалганд 410 retired_code.

0.2.0 (2026-10-01) ​

  • Түлхүүр (API key). /v1 зам бүр тухайн замын эрхтэй түлхүүр шаардана. GET /v1/door/{code}: door:read.
  • Түлхүүр тус бүрийн минутын хязгаар, хэтэрвэл 429 ба Retry-After. Хязгаарын толгойнууд хариу бүрт.
  • Түлхүүр, зам тус бүрийн өдрийн хэрэглээ, Улаанбаатарын цагаар.

0.1.0 (2026-09-28) ​

  • GET /health, GET /health/ready.
  • GET /v1/door/{code}: кодын хэлбэр шалгана. Хайлт 501 буцаана.
  • OpenAPI: /openapi.json.