Bus Sun Side API Online
Egy autóbusz melyik oldala kap napot vagy árnyékot az úton, és mely ülések a legjobbak árnyékhoz vagy kilátáshoz. Az utat 5 perces lépésekben járjuk végig: pozíció és haladási irány az útvonalból, a nap helyzete azon a helyen és időpontban, majd ülésenkénti becslés a választott buszelrendezésre. Használjon útvonalat engedélyezett járataink nyilvántartásából (route_id), két pontot (from/to), vagy küldje el POST-tal saját útvonalát (megállók vagy polyline), hogy ülésrendet, útvonaltérképet és idővonalat is kapjon képként. Az eredmények a geometria és a nap helyzete alapján készült becslések; a valódi árnyék a függönyöktől, épületektől, domborzattól és időjárástól is függ.
GET https://nakordoni.eu/api/v2/data/bus-sun-side
— kvótaosztály: heavy
| Paraméter | Leírás |
|---|---|
route_id | Útvonal id a buszútvonal-nyilvántartásunkból (ugyanazok az id-k, mint a nakordoni.eu buszoldalain). Használja a route_id vagy a from+to megadást. |
dir | direct (alapértelmezett) vagy return. |
date | Utazás dátuma YYYY-MM-DD (alapértelmezés a mai nap). A nap helyzete a dátumtól függ. |
dep | Indulási idő HH:MM az útvonal helyi idejében (alapértelmezés: a nyilvántartás menetrendje). |
from | Szabad útvonal: kiindulópont lat,lon (a to mezővel együtt). |
to | Szabad útvonal: végpont lat,lon (a from mezővel együtt). |
depart | Szabad útvonal: indulás YYYY-MM-DDTHH:MM, a kiindulópont helyi ideje. |
lang | A helynevek és szövegek nyelve, 25 nyelv (en, uk, pl, de, …). Alapértelmezés en. |
bus_model | Buszmodell id a bus-sun-catalog végpontból (alapértelmezés standard_coach). Bármely alábbi mező felülírja a modellt. |
rows | Seat rows, 8-20. |
layout | Ülésrend: 2+2, 2+1 vagy 1+2 (a folyosótól balra+jobbra). |
door_side | right (kontinentális Európa) vagy left. |
windshield | large vagy normal — mennyi napot kapnak az első sorok a szélvédőn át. |
rear_window | none, small vagy large — nap a hátsó sorokon. |
window_height | standard vagy panoramic (magas oldalablakok). |
deck | single, upper vagy lower (emeletes autóbuszok). |
mid_door | 1 vagy 0 — van középső ajtó (az ott lévő ülések kimaradnak). |
timeline | 0 = az idővonal kihagyása (15 perces sorok). |
track | 0 = az időbélyeges nyomvonalpontok kihagyása. |
weather | 1 (alapértelmezett) vagy 0. 1 esetén az út menti időjárás-előrejelzés használatos, ha az út a következő 3 napra esik (72 h); későbbi utaknál és weather=0 esetén derült égbolttal számolunk. |
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. |
Válaszmezők — a válaszboríték data objektumán belül. A [] listát jelöl, tehát a data.items[].name az egyes elemek name mezője. Egy mező null, hiányzik vagy üres lista, ha nincs rá értékünk — helykitöltőt soha nem teszünk oda.
| Mező | Leírás |
|---|---|
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. |
Próbálja ki kód nélkül: a napos oldal tervező bármely járatra vagy saját útra lefuttatja ezt az API-t, és megmutatja az ülésrendet, a térképet, az idővonalat, a képeket és a hívás kódját. Tervező megnyitása →
Your route (POST)
Küldje el saját útvonalát JSON törzsként POST kéréssel ugyanarra az URL-re. A válasz ugyanazokat a mezőket tartalmazza, mint a GET, továbbá input (hogyan lett beolvasva az útvonal), images (ülésrend, útvonaltérkép és idővonal) és embed_html.
A geometria nélküli megállókat közúti útvonaltervezőnk köti össze; a nem tervezhető szakaszt egyenes vonalként rajzoljuk, és az input.legs_straight számolja. Időpontok: legalább két időponttal megadott megálló, vagy route.depart a route.duration_min vagy route.speed_kmh mezővel. Egy út legfeljebb 72 h lehet.
| Body field | Leírás |
|---|---|
route.stops | 2-200 megálló sorrendben: {lat, lon, name?, arr?, dep?, day?}. Az arr / dep helyi idő HH:MM formában; day = napok száma a route.date után (az éjfélen átnyúló időpontok automatikusan átfordulnak). |
route.geometry | Az Ön útvonala: GeoJSON LineString, MultiLineString, Feature vagy FeatureCollection ([lon, lat] sorrend), vagy kódolt polyline karakterlánc. Legfeljebb 5000 pont. stops megadásakor a megállók adják az időpontokat, a geometria az útvonalat. |
route.polyline_precision | 5 (alapértelmezett) vagy 6, kódolt polyline esetén. |
route.date | Az első megálló időpontjának YYYY-MM-DD dátuma (alapértelmezés a mai nap). |
route.depart | Indulás YYYY-MM-DDTHH:MM, ha a megállóknak nincs időpontja, vagy csak geometriát küld. |
route.duration_min | Az út hossza percben, a depart mezővel együtt (különben az idő a speed_kmh értékből adódik). |
route.speed_kmh | Átlagsebesség a depart mezővel együtt, alapértelmezés 65. |
route.timezone | A küldött időpontok IANA időzónája (alapértelmezés: az első pont országának időzónája). |
bus | A busz: bus_model a katalógusból és/vagy seats, rows, layout, door_side, windshield, rear_window, window_height, deck, mid_door — ugyanazok a mezők, mint a GET paraméterek. Alapértelmezés standard_coach. |
images | Mely képek készüljenek: a seat_map, route_map, timeline bármelyike (alapértelmezés mindhárom); [] = egyik sem. |
format | png (alapértelmezett), webp vagy jpg: minden kép-URL fájltípusa. svg: PNG fájlok, és az ülésrend inline SVG-ként is visszaadásra kerül (seat_map.svg). |
theme | light (default) or dark. |
lang | A képfeliratok és szövegek nyelve, 25 nyelv (alapértelmezés en). |
width | Képszélesség px-ben, 240-1600 (alapértelmezés: természetes méret). |
embed_html | true (alapértelmezett) = az embed_html is visszaadásra kerül; false = null. |
timeline / track | false = az adott lista kimarad a válaszból. |
weather | true (alapértelmezett) vagy false: időjárás-előrejelzés használata az út mentén (következő 3 nap); false = csak derült égbolt. Az 1 és a 0 is elfogadott. |
Hibás vagy hiányzó mező esetén HTTP 400 a válasz, az error.field a mező útvonalát tartalmazza, például route.stops[2].lat vagy 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
Minden képnek saját URL-je van véletlenszerű fájlnévvel (.png, .webp vagy .jpg). Az URL-ekhez nem kell kulcs, és 12 óráig érvényesek (expires_at); másolja le a fájlokat, ha tovább van rájuk szüksége. Az embed_html egy önálló figure, amely az ülésrendet inline SVG-ként és egy nakordoni.eu forrássort tartalmaz; megjelenítéskor tartsa meg a forrásmegjelölést.
Lent: a fenti példa törzshöz tartozó képek (kisbusz, Poznań – Varsó, június 21.).



Bus catalogue
A bus_model ezen általános járműosztályok egyikét fogadja (nem konkrét márkákat). Bármely elküldött buszmező felülírja a modellt; a seats értékből a layout szerinti rows lesz. Ugyanez a lista JSON-ként elérhető a bus-sun-catalog végponton.
| 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 esetén (alapértelmezett; POST törzsben "weather": true) a válasz óránkénti időjárás-előrejelzést használ az út mentén a következő 3 napra (72 h); az út későbbi részeinél derült égbolttal számol. A summary.sun_*_min értékek ekkor az előrejelzés szerint súlyozottak, minden timeline sor kap wx {code, f, temp, precip} mezőt, a weather {used, window_h, covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key} pedig megmutatja, az út mekkora részét fedte le az előrejelzés. A recommend_clear a derült égboltra vonatkozó válasz; a weather_changes_answer értéke true, ha az előrejelzés megváltoztatja az árnyékos oldalt. Ha az előrejelzés főleg felhős vagy esős, a recommend.reason_key értéke mostly_cloudy, a shade_side értéke any. A recommend.tip_key hot_sun_side azt jelenti, hogy a napos oldalra 28 °C vagy több várható.
Quota and accuracy
A GET, valamint a POST "images": [] beállítással 1 egységnek számít a nehéz osztályban; a képeket készítő POST 2-nek számít. A bus-sun-catalog olcsó hívás. Ugyanaz a POST törzs legfeljebb 6 óráig a tárolt választ adja vissza (1 óráig, ha időjárás-előrejelzés került felhasználásra).
Az eredmény becslés az útvonal geometriája és a nap helyzete alapján. A függönyöket, sötétített üvegeket, épületeket, fákat, domborzatot és a módosított útvonalat nem ismerjük. A felhők és az eső csak a következő 3 napban induló utaknál származnak időjárás-előrejelzésből; későbbi utaknál derült égbolttal számolunk. A confidence alacsonyabb, ha a nap alacsonyan jár, az út rövid, az útvonal gyakran fordul, vagy az előrejelzés főleg felhős.
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"
Frissítve