Haber gönderimi ve NakBus filosu artık iş ortağı panosunda
Nakordoni Partners paneline giriş yapmak için geliştirici hesabınızla aynı giriş bilgilerini (e-posta ve parola) kullanın ve orada haberleri ile otobüs filonuzu (NakDriver / NakManager) ekip rolleriyle yönetin. API anahtarlarınız, uç noktalarınız ve uygulamalarınız değişmeden kalır, buradaki sayfalar da çalışmaya devam eder. Nakordoni Partners'ı Aç

← Tüm uç noktalar

Bus Sun Side API Online

Bir yolculukta otobüsün hangi tarafının güneş ya da gölge aldığı ve gölge veya manzara için en iyi koltukların hangileri olduğu. Yolculuk 5 dakikalık adımlarla izlenir: güzergâhtan konum ve yön, o yerde ve saatte güneşin konumu, ardından seçilen otobüs düzeni için koltuk başına bir tahmin. Lisanslı hat kaydımızdaki bir güzergâhı (route_id), iki noktayı (from/to) kullanın ya da koltuk planı, güzergâh haritası ve zaman çizelgesini görsel olarak da almak için kendi güzergâhınızı POST ile gönderin (duraklar veya polyline). Sonuçlar geometri ve güneşin konumuna dayalı bir tahmindir; gerçek gölge perdelere, binalara, araziye ve havaya da bağlıdır.

GET https://nakordoni.eu/api/v2/data/bus-sun-side — kota sınıfı: heavy

ParametreAçıklama
route_idOtobüs güzergâhı kaydımızdaki güzergâh id'si (nakordoni.eu otobüs sayfalarındaki id'lerin aynısı). route_id veya from+to kullanın.
dirdirect (varsayılan) veya return.
dateYolculuk tarihi YYYY-MM-DD (varsayılan bugün). Güneşin konumu tarihe bağlıdır.
depGüzergâhın yerel saatine göre kalkış saati HH:MM (varsayılan: kayıttaki tarife).
fromSerbest güzergâh: başlangıç noktası lat,lon (to ile birlikte).
toSerbest güzergâh: bitiş noktası lat,lon (from ile birlikte).
departSerbest güzergâh: kalkış YYYY-MM-DDTHH:MM, başlangıç noktasının yerel saati.
langYer adlarının ve metinlerin dili, 25 dil (en, uk, pl, de, …). Varsayılan en.
bus_modelbus-sun-catalog içindeki otobüs modeli id'si (varsayılan standard_coach). Aşağıdaki her alan modeli geçersiz kılar.
rowsSeat rows, 8-20.
layoutKoltuk düzeni: 2+2, 2+1 veya 1+2 (koridorun sol+sağ tarafı).
door_sideright (kıta Avrupası) veya left.
windshieldlarge veya normal — ön sıraların ön camdan ne kadar güneş aldığı.
rear_windownone, small veya large — son sıralardaki güneş.
window_heightstandard veya panoramic (yüksek yan pencereler).
decksingle, upper veya lower (iki katlı otobüsler).
mid_door1 veya 0 — orta kapı var (oradaki koltukları kaldırır).
timeline0 = zaman çizelgesini çıkar (15 dakikalık satırlar).
track0 = zaman damgalı iz noktalarını çıkar.
weather1 (varsayılan) veya 0. 1 ile, yolculuk önümüzdeki 3 gün (72 h) içindeyse yolculuk boyunca hava tahmini kullanılır; sonraki yolculuklar ve weather=0 açık gökyüzü kullanır.
animation1 (default) or 0. With 0, the animation block (sun and coach position every 5 minutes) is left out. POST body: animation true|false.

Yanıt alanları — yanıt zarfındaki data nesnesinin içinde. [] bir listeyi gösterir; yani data.items[].name her öğenin name alanıdır. Değerimiz olmayan bir alan null olur, hiç bulunmaz ya da boş liste döner — asla yer tutucu koymayız.

AlanAçıklama
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.

Kod yazmadan deneyin: güneşli taraf planlayıcısı bu API’yi herhangi bir hatta veya kendi yolculuğunuzda çalıştırır; koltuk planı, harita, zaman çizelgesi, görseller ve çağrı kodunu gösterir. Planlayıcıyı aç →

Your route (POST)

Kendi güzergâhınızı JSON gövdesi olarak POST ile aynı URL'ye gönderin. Yanıt, GET ile aynı alanlara ek olarak input (güzergâhınızın nasıl okunduğu), images (koltuk planı, güzergâh haritası ve zaman çizelgesi) ve embed_html içerir.

Geometrisi olmayan duraklar karayolu yönlendiricimizle birleştirilir; yönlendirilemeyen bir kesim düz çizgi olarak çizilir ve input.legs_straight içinde sayılır. Saatler: saati olan en az iki durak ya da route.duration_min veya route.speed_kmh ile birlikte route.depart. Bir yolculuk en fazla 72 h sürebilir.

Body fieldAçıklama
route.stopsSırayla 2-200 durak: {lat, lon, name?, arr?, dep?, day?}. arr / dep yerel saat HH:MM biçimindedir; day = route.date sonrasındaki gün sayısı (gece yarısını geçen saatler kendiliğinden devreder).
route.geometryYolunuz: GeoJSON LineString, MultiLineString, Feature veya FeatureCollection ([lon, lat] sırası) ya da kodlanmış bir polyline dizesi. En fazla 5000 nokta. stops ile birlikte duraklar saatleri, geometri ise yolu verir.
route.polyline_precisionKodlanmış polyline için 5 (varsayılan) veya 6.
route.dateİlk durak saatinin YYYY-MM-DD tarihi (varsayılan bugün).
route.departDuraklarda saat yoksa veya yalnızca geometri gönderiyorsanız kalkış YYYY-MM-DDTHH:MM.
route.duration_minDakika cinsinden yolculuk süresi, depart ile birlikte (aksi halde süre speed_kmh değerinden gelir).
route.speed_kmhdepart ile birlikte ortalama hız, varsayılan 65.
route.timezoneGönderdiğiniz saatlerin IANA saat dilimi (varsayılan: ilk noktanın ülkesinin dilimi).
busOtobüs: katalogdan bus_model ve/veya seats, rows, layout, door_side, windshield, rear_window, window_height, deck, mid_door — GET parametreleriyle aynı alanlar. Varsayılan standard_coach.
imagesHangi görsellerin üretileceği: seat_map, route_map, timeline içinden herhangi biri (varsayılan üçü de); [] = hiçbiri.
formatpng (varsayılan), webp veya jpg: her görsel URL'sinin dosya türü. svg: PNG dosyaları ve koltuk planı ayrıca satır içi SVG olarak döndürülür (seat_map.svg).
themelight (default) or dark.
langGörsel etiketlerinin ve metinlerin dili, 25 dil (varsayılan en).
widthGörsel genişliği px cinsinden, 240-1600 (varsayılan: doğal boyut).
embed_htmltrue (varsayılan) = embed_html de döndürülür; false = null.
timeline / trackfalse = bu liste yanıta eklenmez.
weathertrue (varsayılan) veya false: yolculuk boyunca hava tahminini kullan (önümüzdeki 3 gün); false = yalnızca açık gökyüzü. 1 ve 0 da kabul edilir.

Hatalı veya eksik bir alan HTTP 400 döndürür ve error.field alanın yolunu içerir, örneğin route.stops[2].lat veya 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

Her görselin rastgele dosya adına sahip kendi URL'si vardır (.png, .webp veya .jpg). URL'ler anahtar gerektirmez ve 12 saat geçerlidir (expires_at); daha uzun süre gerekiyorsa dosyaları kopyalayın. embed_html, koltuk planını satır içi SVG olarak ve bir nakordoni.eu kaynak satırını içeren bağımsız bir figure öğesidir; gösterirken kaynak satırını koruyun.

Aşağıda: yukarıdaki örnek gövde için görseller (minibüs, Poznań – Varşova, 21 Haziran).

Koltuk planı: her koltuk için gölge ve güneş
seat_map
Güneşin olduğu tarafa göre renklendirilmiş güzergâh haritası
route_map
Zaman çizelgesi: güneş ne zaman hangi tarafta
timeline

Bus catalogue

bus_model bu genel araç sınıflarından birini alır (belirli markaları değil). Gönderdiğiniz her otobüs alanı modeli geçersiz kılar; seats, layout için rows değerine dönüştürülür. Aynı liste bus-sun-catalog üzerinden JSON olarak da mevcuttur.

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 ile (varsayılan; POST gövdesinde "weather": true) yanıt, önümüzdeki 3 gün (72 h) için yolculuk boyunca saatlik hava tahminini kullanır; yolculuğun sonraki kısımlarında açık gökyüzü kullanılır. Bu durumda summary.sun_*_min tahmine göre ağırlıklandırılır, her timeline satırı wx {code, f, temp, precip} alır ve weather {used, window_h, covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key} yolculuğun ne kadarının tahminle kapsandığını gösterir. recommend_clear açık gökyüzü yanıtıdır; tahmin gölge tarafını değiştirdiğinde weather_changes_answer true olur. Tahmin çoğunlukla bulutlu veya yağmurlu olduğunda recommend.reason_key mostly_cloudy, shade_side ise any olur. recommend.tip_key hot_sun_side, güneşli tarafta 28 °C veya üzeri beklendiği anlamına gelir.

Quota and accuracy

GET ve "images": [] içeren POST, ağır sınıftan 1 birim sayılır; görsel üreten bir POST 2 sayılır. bus-sun-catalog ucuz bir çağrıdır. Aynı POST gövdesi, saklanan yanıtı 6 saate kadar döndürür (hava tahmini kullanıldıysa 1 saat).

Sonuç, güzergâh geometrisi ve güneşin konumuna dayalı bir tahmindir. Perdeler, renkli camlar, binalar, ağaçlar, arazi ve değişen bir güzergâh tarafımızdan bilinmez. Bulut ve yağmur yalnızca önümüzdeki 3 gün içindeki yolculuklar için hava tahmininden gelir; sonraki yolculuklarda açık gökyüzü varsayılır. Güneş alçakta olduğunda, yolculuk kısa olduğunda, güzergâh sık döndüğünde veya tahmin çoğunlukla bulutlu olduğunda confidence daha düşüktür.

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'i sandbox'ta canlı denemek için geliştirici olarak giriş yapın — ürün başına günde 10 ücretsiz test çağrısı. Giriş yap

Güncellendi