Bus Sun Side API Online
Која страна аутобуса добија сунце или сенку на путовању и која седишта су најбоља за сенку или за поглед. Путовање се прелази у корацима од 5 минута: положај и смер из руте, положај сунца на том месту и у то време, затим процена за свако седиште према изабраном распореду аутобуса. Користите руту из нашег регистра лиценцираних линија (route_id), две тачке (from/to) или пошаљите сопствену руту методом POST (станице или polyline) да бисте добили и шему седишта, мапу руте и временску линију као слике. Резултати су процена на основу геометрије и положаја сунца; стварна сенка зависи и од завеса, зграда, терена и времена.
GET https://nakordoni.eu/api/v2/data/bus-sun-side
— класа квоте: heavy
| Параметар | Опис |
|---|---|
route_id | Id руте из нашег регистра аутобуских рута (исти id као на аутобуским страницама nakordoni.eu). Користите route_id или from+to. |
dir | direct (подразумевано) или return. |
date | Датум путовања YYYY-MM-DD (подразумевано данас). Положај сунца зависи од датума. |
dep | Време поласка HH:MM по локалном времену руте (подразумевано: ред вожње из регистра). |
from | Слободна рута: почетна тачка lat,lon (уз to). |
to | Слободна рута: крајња тачка lat,lon (уз from). |
depart | Слободна рута: полазак YYYY-MM-DDTHH:MM, локално време почетне тачке. |
lang | Језик назива места и текстова, 25 језика (en, uk, pl, de, …). Подразумевано en. |
bus_model | Id модела аутобуса из bus-sun-catalog (подразумевано standard_coach). Свако поље испод замењује модел. |
rows | Seat rows, 8-20. |
layout | Распоред седишта: 2+2, 2+1 или 1+2 (лево+десно од пролаза). |
door_side | right (континентална Европа) или left. |
windshield | large или normal — колико сунца први редови добијају кроз ветробранско стакло. |
rear_window | none, small или large — сунце на последњим редовима. |
window_height | standard или panoramic (високи бочни прозори). |
deck | single, upper или lower (аутобуси на спрат). |
mid_door | 1 или 0 — постоје средња врата (уклања седишта на том месту). |
timeline | 0 = изоставља временску линију (редови од 15 минута). |
track | 0 = изоставља тачке трага са временом. |
weather | 1 (подразумевано) или 0. Са 1 се користи временска прогноза дуж путовања када је путовање у наредна 3 дана (72 h); каснија путовања и weather=0 користе ведро небо. |
animation | 1 (default) or 0. With 0, the animation block (sun and coach position every 5 minutes) is left out. POST body: animation true|false. |
Поља одговора — унутар објекта data у коверти одговора. [] означава листу, па је data.items[].name поље name сваког елемента. Поље је null, недостаје или је празна листа када немамо вредност — никада не убацујемо замену.
| Поље | Опис |
|---|---|
data.date / data.tz | Travel date and the time zone of the times in the answer. |
data.route | id, num, from, to, dir, dep, arr, km (registry route) — or the stops you sent (POST). |
data.basis | How the timed path was built: timetable (registry or your stop times), router (our road route between points) or geometry (your polyline). |
data.bus | The bus profile used: model, layout, rows, door_side, windshield, rear_window, window_height, deck, mid_door. |
data.summary | trip_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.recommend | shade_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_clear | The same recommendation for a clear sky (no weather). |
data.weather_changes_answer | true when the forecast changes the shade side compared with recommend_clear. |
data.weather | used, 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.zones | front / middle / back: left and right sun exposure 0-100 and rows [first, last] of that part. |
data.seats | layout, 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.input | POST only: how your route was read — source, timed_by, stops, points, legs_routed, legs_straight, timezone. |
data.images | POST 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_html | POST only: a self-contained HTML figure with the seat map (inline SVG) to paste into a page; null with embed_html=false. |
Пробајте без кода: планер сунчане стране покреће овај API за било коју линију или ваше путовање и приказује распоред седишта, мапу, временску линију, слике и код позива. Отвори планер →
Your route (POST)
Пошаљите сопствену руту као JSON тело методом POST на исти URL. Одговор има иста поља као GET, плус input (како је рута прочитана), images (шема седишта, мапа руте и временска линија) и embed_html.
Станице без геометрије повезују се нашим друмским рутером; деоница која не може да се рутира црта се као права линија и броји у input.legs_straight. Времена: најмање две станице са временом, или route.depart са route.duration_min или route.speed_kmh. Путовање може трајати до 72 h.
| Body field | Опис |
|---|---|
route.stops | 2-200 станица по реду: {lat, lon, name?, arr?, dep?, day?}. arr / dep су локално време HH:MM; day = дани после route.date (времена која прелазе поноћ преносе се аутоматски). |
route.geometry | Ваша путања: GeoJSON LineString, MultiLineString, Feature или FeatureCollection (редослед [lon, lat]) или кодирани polyline низ. До 5000 тачака. Уз stops, станице дају времена, а геометрија путању. |
route.polyline_precision | 5 (подразумевано) или 6, за кодирану polyline. |
route.date | YYYY-MM-DD времена прве станице (подразумевано данас). |
route.depart | Полазак YYYY-MM-DDTHH:MM, када станице немају времена или шаљете само геометрију. |
route.duration_min | Трајање путовања у минутима, заједно са depart (иначе се време рачуна из speed_kmh). |
route.speed_kmh | Просечна брзина уз depart, подразумевано 65. |
route.timezone | IANA временска зона времена која шаљете (подразумевано: зона земље прве тачке). |
bus | Аутобус: bus_model из каталога и/или seats, rows, layout, door_side, windshield, rear_window, window_height, deck, mid_door — иста поља као GET параметри. Подразумевано standard_coach. |
images | Које слике направити: било које од seat_map, route_map, timeline (подразумевано све три); [] = ниједна. |
format | png (подразумевано), webp или jpg: тип датотеке сваког URL-а слике. svg: PNG датотеке, а шема седишта се враћа и уграђена као SVG (seat_map.svg). |
theme | light (default) or dark. |
lang | Језик ознака на сликама и текстова, 25 језика (подразумевано en). |
width | Ширина слике у px, 240-1600 (подразумевано: природна величина). |
embed_html | true (подразумевано) = враћа и embed_html; false = null. |
timeline / track | false = та листа се изоставља из одговора. |
weather | true (подразумевано) или false: користи временску прогнозу дуж путовања (наредна 3 дана); false = само ведро небо. Прихватају се и 1 и 0. |
Погрешно или недостајуће поље даје HTTP 400, при чему error.field садржи његову путању, на пример route.stops[2].lat или 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
Свака слика има свој URL са насумичним називом датотеке (.png, .webp или .jpg). URL-ови не захтевају кључ и важе 12 сати (expires_at); копирајте датотеке ако су вам потребне дуже. embed_html је самосталан figure са шемом седишта као уграђеним SVG-ом и редом са навођењем извора nakordoni.eu; задржите навођење извора при приказу.
Испод: слике за пример тела изнад (минибус, Познањ – Варшава, 21. јун).



Bus catalogue
bus_model прихвата једну од ових општих класа возила (не конкретне марке). Свако послато поље аутобуса замењује модел; seats се претвара у rows према layout. Иста листа је доступна као JSON преко bus-sun-catalog.
| bus_model | layout | rows | door_side | windshield | rear_window | window_height | deck | mid_door | typical_seats |
|---|---|---|---|---|---|---|---|---|---|
standard_coachStandard touring coach (12-13 m, 2+2) |
2+2 | 13 | right | large | small | standard | single | true | 49-53 |
panoramic_coachCoach with panoramic (tall) side windows, 2+2 |
2+2 | 13 | right | large | small | panoramic | single | true | 49-53 |
midi_coachMidi coach (9-10 m, 2+2) |
2+2 | 9 | right | large | small | standard | single | false | 33-37 |
comfort_coach_2_1Comfort coach with 2+1 seating |
2+1 | 12 | right | large | small | standard | single | true | 33-36 |
minibusMinibus (7-8 m, 2+1) |
2+1 | 6 | right | normal | large | standard | single | false | 16-20 |
double_deck_upperDouble-deck coach, upper deck |
2+2 | 15 | right | large | small | panoramic | upper | false | 56-64 on the upper deck |
double_deck_lowerDouble-deck coach, lower deck |
2+2 | 5 | right | normal | none | standard | lower | true | 12-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 (подразумевано; у телу POST захтева "weather": true) одговор користи сатну временску прогнозу дуж путовања за наредна 3 дана (72 h); каснији делови путовања користе ведро небо. summary.sun_*_min се тада пондеришу према прогнози, сваки ред у timeline добија wx {code, f, temp, precip}, а weather {used, window_h, covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key} показује колики део путовања је покрила прогноза. recommend_clear је одговор за ведро небо; weather_changes_answer је true када прогноза мења страну сенке. Када је прогноза претежно облачна или кишна, recommend.reason_key је mostly_cloudy, а shade_side је any. recommend.tip_key hot_sun_side значи да се за сунчану страну прогнозира 28 °C или више.
Quota and accuracy
GET, као и POST са "images": [], рачунају се као 1 јединица тешке класе; POST који прави слике рачуна се као 2. bus-sun-catalog је јефтин позив. Исто POST тело враћа сачувани одговор до 6 сати (1 сат када је коришћена временска прогноза).
Резултат је процена на основу геометрије руте и положаја сунца. Завесе, затамњена стакла, зграде, дрвеће, терен и измењена рута нису нам познати. Облаци и киша потичу из временске прогнозе само за путовања у наредна 3 дана; каснија путовања претпостављају ведро небо. confidence је нижи када је сунце ниско, путовање кратко, рута често скреће или је прогноза претежно облачна.
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"
Ažurirano