Yangilik yuborish va NakBus avtoparki endi hamkor panelida
Nakordoni Partners paneliga kirish uchun dasturchi hisobingiz bilan bir xil kirish ma'lumotlaridan (e-pochta va parol) foydalaning va u yerda yangiliklar hamda avtobus parkingizni (NakDriver / NakManager) jamoa rollari bilan boshqaring. API kalitlaringiz, endpointlaringiz va ilovalaringiz o'zgarishsiz qoladi, bu yerdagi sahifalar esa ishlashda davom etadi. Nakordoni Partners-ni ochish

← Barcha yakuniy nuqtalar

Bus Sun Side API Online

Safar davomida avtobusning qaysi tomoni quyosh yoki soya oladi va soya yoki manzara uchun qaysi o'rindiqlar eng yaxshi. Safar 5 daqiqalik qadamlar bilan o'tiladi: marshrutdan joylashuv va yo'nalish, o'sha joy va vaqtdagi quyosh holati, so'ng tanlangan avtobus joylashuvi bo'yicha har bir o'rindiq uchun baho. Litsenziyalangan reyslar reyestrimizdagi marshrutdan (route_id), ikki nuqtadan (from/to) foydalaning yoki o'rindiqlar sxemasi, marshrut xaritasi va vaqt shkalasini rasm sifatida ham olish uchun o'z marshrutingizni POST orqali yuboring (bekatlar yoki polyline). Natijalar geometriya va quyosh holatiga asoslangan baho; haqiqiy soya pardalar, binolar, relyef va ob-havoga ham bog'liq.

GET https://nakordoni.eu/api/v2/data/bus-sun-side — kvota sinfi: heavy

ParametrTavsif
route_idAvtobus marshrutlari reyestrimizdagi marshrut id'si (nakordoni.eu avtobus sahifalaridagi id'lar bilan bir xil). route_id yoki from+to dan foydalaning.
dirdirect (standart) yoki return.
dateSafar sanasi YYYY-MM-DD (standart bugun). Quyosh holati sanaga bog'liq.
depMarshrutning mahalliy vaqti bo'yicha jo'nash vaqti HH:MM (standart: reyestrdagi jadval).
fromErkin marshrut: boshlang'ich nuqta lat,lon (to bilan birga).
toErkin marshrut: yakuniy nuqta lat,lon (from bilan birga).
departErkin marshrut: jo'nash YYYY-MM-DDTHH:MM, boshlang'ich nuqtaning mahalliy vaqti.
langJoy nomlari va matnlar tili, 25 til (en, uk, pl, de, …). Standart en.
bus_modelbus-sun-catalog dagi avtobus modeli id'si (standart standard_coach). Quyidagi har qanday maydon modelni almashtiradi.
rowsSeat rows, 8-20.
layoutO'rindiqlar joylashuvi: 2+2, 2+1 yoki 1+2 (yo'lakning chap+o'ng tomoni).
door_sideright (kontinental Yevropa) yoki left.
windshieldlarge yoki normal — oldingi qatorlar old oyna orqali qancha quyosh oladi.
rear_windownone, small yoki large — oxirgi qatorlardagi quyosh.
window_heightstandard yoki panoramic (baland yon oynalar).
decksingle, upper yoki lower (ikki qavatli avtobuslar).
mid_door1 yoki 0 — o'rta eshik bor (u yerdagi o'rindiqlar olib tashlanadi).
timeline0 = vaqt shkalasi kiritilmaydi (15 daqiqalik qatorlar).
track0 = vaqtli trek nuqtalari kiritilmaydi.
weather1 (standart) yoki 0. 1 bilan, safar keyingi 3 kun (72 h) ichida bo'lsa, safar bo'ylab ob-havo prognozidan foydalaniladi; keyingi safarlar va weather=0 ochiq osmondan foydalanadi.
animation1 (default) or 0. With 0, the animation block (sun and coach position every 5 minutes) is left out. POST body: animation true|false.

Javob maydonlari — javob konvertidagi data obyekti ichida. [] ro‘yxatni bildiradi, ya’ni data.items[].name har bir elementning name maydonidir. Qiymatimiz bo‘lmagan maydon null bo‘ladi, umuman bo‘lmaydi yoki bo‘sh ro‘yxat qaytadi — o‘rniga hech qachon soxta qiymat qo‘ymaymiz.

MaydonTavsif
data.date / data.tzTravel date and the time zone of the times in the answer.
data.routeid, num, from, to, dir, dep, arr, km (registry route) — or the stops you sent (POST).
data.basisHow the timed path was built: timetable (registry or your stop times), router (our road route between points) or geometry (your polyline).
data.busThe bus profile used: model, layout, rows, door_side, windshield, rear_window, window_height, deck, mid_door.
data.summarytrip_min, daylight_min, night_min and minutes with the sun on the left, right, ahead and behind (weather-weighted when a forecast was used).
data.recommendshade_side, sun_side, shade_pct, best_shade_seats[], best_sun_seats[], confidence (high | medium | low), reason_key; tip_key hot_sun_side when the sunny side is forecast at 28 °C or more. reason_key mostly_cloudy (shade_side any) when the forecast is mostly cloud or rain.
data.recommend_clearThe same recommendation for a clear sky (no weather).
data.weather_changes_answertrue when the forecast changes the shade side compared with recommend_clear.
data.weatherused, window_h (72), covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key (forecast_used | partly_forecast | mostly_cloudy | rain_expected | clear_sky_only).
data.zonesfront / middle / back: left and right sun exposure 0-100 and rows [first, last] of that part.
data.seatslayout, rows, cols[], grid[][]: every seat — id (e.g. 4C), side, pos (window | aisle), exp (sun exposure 0-100), door (true next to a door).
data.timeline[]One row per 15 min: t, lat, lon, hd (heading), az / el (sun azimuth / elevation), side (left | right | ahead | behind | none), w (sun strength); wx {code, f, temp, precip} when a forecast was used.
data.track[]Track points [lat, lon, sun side] for drawing the route (leave out with track=0).
data.inputPOST only: how your route was read — source, timed_by, stops, points, legs_routed, legs_straight, timezone.
data.imagesPOST only: seat_map, route_map, timeline — each {url, format, expires_at}; url = https://api.nakordoni.dev/images/<random name>.<png | webp | jpg> (body format, default png). Files are kept 12 hours. format svg: PNG files plus the seat map as inline SVG (seat_map.svg).
data.embed_htmlPOST only: a self-contained HTML figure with the seat map (inline SVG) to paste into a page; null with embed_html=false.

Kodsiz sinab ko‘ring: quyoshli tomon rejalashtirgichi bu API’ni istalgan yo‘nalish yoki o‘z safaringiz uchun ishga tushiradi va o‘rindiqlar sxemasi, xarita, vaqt chizig‘i, rasmlar hamda so‘rov kodini ko‘rsatadi. Rejalashtirgichni ochish →

Your route (POST)

O'z marshrutingizni JSON tanasi sifatida POST orqali xuddi shu URL'ga yuboring. Javobda GET bilan bir xil maydonlar, shuningdek input (marshrut qanday o'qilgani), images (o'rindiqlar sxemasi, marshrut xaritasi va vaqt shkalasi) va embed_html bo'ladi.

Geometriyasiz bekatlar bizning yo'l marshrutizatorimiz bilan ulanadi; marshrut qurib bo'lmaydigan qism to'g'ri chiziq sifatida chiziladi va input.legs_straight da hisoblanadi. Vaqtlar: vaqti ko'rsatilgan kamida ikkita bekat yoki route.depart bilan route.duration_min yoki route.speed_kmh. Safar 72 h gacha davom etishi mumkin.

Body fieldTavsif
route.stopsTartib bo'yicha 2-200 bekat: {lat, lon, name?, arr?, dep?, day?}. arr / dep — mahalliy vaqt HH:MM; day = route.date dan keyingi kunlar (yarim tundan o'tgan vaqtlar avtomatik o'tkaziladi).
route.geometrySizning yo'lingiz: GeoJSON LineString, MultiLineString, Feature yoki FeatureCollection ([lon, lat] tartibi) yoki kodlangan polyline satri. 5000 nuqtagacha. stops bilan birga bekatlar vaqtni, geometriya esa yo'lni beradi.
route.polyline_precisionKodlangan polyline uchun 5 (standart) yoki 6.
route.dateBirinchi bekat vaqtining YYYY-MM-DD sanasi (standart bugun).
route.departJo'nash YYYY-MM-DDTHH:MM, bekatlarda vaqt bo'lmasa yoki faqat geometriya yuborsangiz.
route.duration_minSafar davomiyligi daqiqalarda, depart bilan birga (aks holda vaqt speed_kmh dan hisoblanadi).
route.speed_kmhdepart bilan birga o'rtacha tezlik, standart 65.
route.timezoneYuborilayotgan vaqtlarning IANA vaqt mintaqasi (standart: birinchi nuqta mamlakatining mintaqasi).
busAvtobus: katalogdagi bus_model va/yoki seats, rows, layout, door_side, windshield, rear_window, window_height, deck, mid_door — GET parametrlari bilan bir xil maydonlar. Standart standard_coach.
imagesQaysi rasmlar yaratilsin: seat_map, route_map, timeline dan istalgani (standart uchalasi ham); [] = hech biri.
formatpng (standart), webp yoki jpg: har bir rasm URL'ining fayl turi. svg: PNG fayllar, o'rindiqlar sxemasi esa qo'shimcha ravishda ichki SVG sifatida qaytariladi (seat_map.svg).
themelight (default) or dark.
langRasmdagi yozuvlar va matnlar tili, 25 til (standart en).
widthRasm kengligi px da, 240-1600 (standart: tabiiy o'lcham).
embed_htmltrue (standart) = embed_html ham qaytariladi; false = null.
timeline / trackfalse = bu ro'yxat javobga kiritilmaydi.
weathertrue (standart) yoki false: safar bo'ylab ob-havo prognozidan foydalanish (keyingi 3 kun); false = faqat ochiq osmon. 1 va 0 ham qabul qilinadi.

Noto'g'ri yoki yetishmayotgan maydon HTTP 400 qaytaradi, error.field esa uning yo'lini o'z ichiga oladi, masalan route.stops[2].lat yoki bus.seats.

curl -X POST "https://nakordoni.eu/api/v2/data/bus-sun-side" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "route": {
        "stops": [
            {
                "name": "Poznań Dworzec Autobusowy",
                "lat": 52.4011,
                "lon": 16.911,
                "dep": "08:00"
            },
            {
                "name": "Konin",
                "lat": 52.223,
                "lon": 18.2511,
                "arr": "09:20",
                "dep": "09:25"
            },
            {
                "name": "Łódź Kaliska",
                "lat": 51.7573,
                "lon": 19.4306,
                "arr": "10:55",
                "dep": "11:05"
            },
            {
                "name": "Warszawa Zachodnia",
                "lat": 52.219,
                "lon": 20.965,
                "arr": "13:10"
            }
        ],
        "date": "2026-06-21",
        "timezone": "Europe/Warsaw"
    },
    "bus": {
        "bus_model": "minibus"
    },
    "images": [
        "seat_map",
        "route_map",
        "timeline"
    ],
    "format": "png",
    "theme": "light",
    "lang": "en",
    "weather": true
}'
const res = await fetch('https://nakordoni.eu/api/v2/data/bus-sun-side', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer NKD-DEV-XXXX-XXXX-XXXX', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    route: { stops: [
      { name: 'Poznań', lat: 52.4011, lon: 16.911, dep: '08:00' },
      { name: 'Warszawa', lat: 52.219, lon: 20.965, arr: '11:30' } ],
      date: '2026-06-21', timezone: 'Europe/Warsaw' },
    bus: { bus_model: 'comfort_coach_2_1' },
    images: ['seat_map'], format: 'svg', lang: 'pl'
  })
});
const { data } = await res.json();
console.log(data.recommend.shade_side, data.recommend.best_shade_seats);
document.querySelector('#seats').innerHTML = data.embed_html;   // or <img src="data.images.seat_map.url">

Images and embed_html

Har bir rasmning tasodifiy fayl nomli o'z URL'i bor (.png, .webp yoki .jpg). URL'lar kalit talab qilmaydi va 12 soat amal qiladi (expires_at); uzoqroq kerak bo'lsa, fayllarni nusxalab oling. embed_html — o'rindiqlar sxemasi ichki SVG ko'rinishida va nakordoni.eu manba qatori bilan mustaqil figure; ko'rsatishda manba qatorini saqlang.

Quyida: yuqoridagi namunaviy tana uchun rasmlar (mikroavtobus, Poznan – Varshava, 21-iyun).

O'rindiqlar sxemasi: har bir o'rindiq uchun soya va quyosh
seat_map
Quyosh tomoniga qarab ranglangan marshrut xaritasi
route_map
Vaqt shkalasi: quyosh qachon qaysi tomonda
timeline

Bus catalogue

bus_model ushbu umumiy transport sinflaridan birini qabul qiladi (aniq markalarni emas). Yuborilgan har qanday avtobus maydoni modelni almashtiradi; seats layout bo'yicha rows ga aylantiriladi. Xuddi shu ro'yxat bus-sun-catalog orqali JSON sifatida mavjud.

bus_modellayoutrowsdoor_sidewindshieldrear_windowwindow_heightdeckmid_doortypical_seats
standard_coach
Standard touring coach (12-13 m, 2+2)
2+213rightlargesmallstandardsingletrue49-53
panoramic_coach
Coach with panoramic (tall) side windows, 2+2
2+213rightlargesmallpanoramicsingletrue49-53
midi_coach
Midi coach (9-10 m, 2+2)
2+29rightlargesmallstandardsinglefalse33-37
comfort_coach_2_1
Comfort coach with 2+1 seating
2+112rightlargesmallstandardsingletrue33-36
minibus
Minibus (7-8 m, 2+1)
2+16rightnormallargestandardsinglefalse16-20
double_deck_upper
Double-deck coach, upper deck
2+215rightlargesmallpanoramicupperfalse56-64 on the upper deck
double_deck_lower
Double-deck coach, lower deck
2+25rightnormalnonestandardlowertrue12-20 on the lower deck

Allowed values: layout 2+2 | 2+1 | 1+2 · rows {"min":4,"max":20,"custom_min":8} · door_side right | left · windshield large | normal · rear_window none | small | large · window_height standard | panoramic · deck single | upper | lower · mid_door true | false

Weather

weather=1 bilan (standart; POST tanasida "weather": true) javob keyingi 3 kun (72 h) uchun safar bo'ylab soatlik ob-havo prognozidan foydalanadi; safarning keyingi qismlarida ochiq osmon olinadi. Bunda summary.sun_*_min prognoz bo'yicha tortiladi, har bir timeline qatori wx {code, f, temp, precip} oladi, weather {used, window_h, covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key} esa safarning qancha qismini prognoz qamraganini ko'rsatadi. recommend_clear — ochiq osmon uchun javob; prognoz soya tomonini o'zgartirsa, weather_changes_answer true bo'ladi. Prognoz asosan bulutli yoki yomg'irli bo'lsa, recommend.reason_key mostly_cloudy, shade_side esa any bo'ladi. recommend.tip_key hot_sun_side quyoshli tomonda 28 °C yoki undan yuqori kutilayotganini bildiradi.

Quota and accuracy

GET, shuningdek "images": [] bilan POST og'ir sinfning 1 birligi hisoblanadi; rasm yaratuvchi POST 2 hisoblanadi. bus-sun-catalog — arzon chaqiruv. Xuddi shu POST tanasi saqlangan javobni 6 soatgacha qaytaradi (ob-havo prognozi ishlatilgan bo'lsa, 1 soat).

Natija marshrut geometriyasi va quyosh holatiga asoslangan baho. Pardalar, tonlangan oynalar, binolar, daraxtlar, relyef va o'zgargan marshrut bizga noma'lum. Bulut va yomg'ir faqat keyingi 3 kundagi safarlar uchun ob-havo prognozidan olinadi; keyingi safarlar uchun ochiq osmon taxmin qilinadi. Quyosh past bo'lsa, safar qisqa bo'lsa, marshrut tez-tez burilsa yoki prognoz asosan bulutli bo'lsa, confidence pastroq bo'ladi.

curl "https://nakordoni.eu/api/v2/data/bus-sun-side?route_id=521&dir=direct&date=2026-06-21&bus_model=standard_coach&lang=en" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
🔑 Bu endpoint'ni sandbox'da jonli sinash uchun dasturchi sifatida kiring — har bir mahsulot uchun kuniga 10 ta bepul sinov chaqiruvi. Kirish

Yangilandi