Η υποβολή ειδήσεων και ο στόλος NakBus βρίσκονται πλέον στον πίνακα συνεργατών
Χρησιμοποιήστε τα ίδια στοιχεία σύνδεσης (email και κωδικό πρόσβασης) με τον λογαριασμό προγραμματιστή σας για να συνδεθείτε στον πίνακα Nakordoni Partners και να διαχειρίζεστε εκεί ειδήσεις και τον στόλο λεωφορείων σας (NakDriver / NakManager) με ρόλους ομάδας. Τα κλειδιά API, τα endpoints και οι εφαρμογές σας παραμένουν αμετάβλητα και οι σελίδες εδώ συνεχίζουν να λειτουργούν. Άνοιγμα Nakordoni Partners

← Όλα τα endpoints

Bus Sun Side API Online

Ποια πλευρά ενός πούλμαν δέχεται ήλιο ή σκιά σε ένα ταξίδι και ποιες θέσεις είναι οι καλύτερες για σκιά ή για θέα. Το ταξίδι διατρέχεται σε βήματα των 5 λεπτών: θέση και κατεύθυνση από τη διαδρομή, θέση του ήλιου σε εκείνο το σημείο και εκείνη την ώρα, και στη συνέχεια εκτίμηση ανά θέση για την επιλεγμένη διάταξη λεωφορείου. Χρησιμοποιήστε μια διαδρομή από το μητρώο αδειοδοτημένων γραμμών μας (route_id), δύο σημεία (from/to) ή στείλτε με POST τη δική σας διαδρομή (στάσεις ή polyline) για να λάβετε επίσης χάρτη θέσεων, χάρτη διαδρομής και χρονολόγιο ως εικόνες. Τα αποτελέσματα είναι εκτίμηση από τη γεωμετρία και τη θέση του ήλιου· η πραγματική σκιά εξαρτάται επίσης από κουρτίνες, κτίρια, ανάγλυφο και καιρό.

GET https://nakordoni.eu/api/v2/data/bus-sun-side — κλάση ποσόστωσης: heavy

ΠαράμετροςΠεριγραφή
route_idId διαδρομής από το μητρώο λεωφορειακών διαδρομών μας (τα ίδια id με τις σελίδες λεωφορείων του nakordoni.eu). Χρησιμοποιήστε route_id ή from+to.
dirdirect (προεπιλογή) ή 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_modelId μοντέλου λεωφορείου από το bus-sun-catalog (προεπιλογή standard_coach). Κάθε πεδίο παρακάτω αντικαθιστά το μοντέλο.
rowsSeat rows, 8-20.
layoutΔιάταξη θέσεων: 2+2, 2+1 ή 1+2 (αριστερά+δεξιά του διαδρόμου).
door_sideright (ηπειρωτική Ευρώπη) ή left.
windshieldlarge ή normal — πόσο ήλιο δέχονται οι πρώτες σειρές μέσα από το παρμπρίζ.
rear_windownone, small ή large — ήλιος στις τελευταίες σειρές.
window_heightstandard ή panoramic (ψηλά πλαϊνά παράθυρα).
decksingle, upper ή lower (διώροφα πούλμαν).
mid_door1 ή 0 — υπάρχει μεσαία πόρτα (αφαιρεί τις θέσεις σε εκείνο το σημείο).
timeline0 = παράλειψη του χρονολογίου (γραμμές 15 λεπτών).
track0 = παράλειψη των χρονοσημασμένων σημείων ίχνους.
weather1 (προεπιλογή) ή 0. Με 1 χρησιμοποιείται πρόγνωση καιρού κατά μήκος του ταξιδιού όταν το ταξίδι είναι εντός των επόμενων 3 ημερών (72 h)· τα μεταγενέστερα ταξίδια και το weather=0 χρησιμοποιούν αίθριο ουρανό.
animation1 (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.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.

Δοκιμάστε χωρίς κώδικα: ο σχεδιαστής ηλιόλουστης πλευράς εκτελεί αυτό το 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.stops2-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_precision5 (προεπιλογή) ή 6, για κωδικοποιημένη polyline.
route.dateYYYY-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 (προεπιλογή και οι τρεις)· [] = καμία.
formatpng (προεπιλογή), webp ή jpg: ο τύπος αρχείου κάθε URL εικόνας. svg: αρχεία PNG, και ο χάρτης θέσεων επιστρέφεται επίσης ενσωματωμένος ως SVG (seat_map.svg).
themelight (default) or dark.
langΓλώσσα των ετικετών των εικόνων και των κειμένων, 25 γλώσσες (προεπιλογή en).
widthΠλάτος εικόνας σε px, 240-1600 (προεπιλογή: φυσικό μέγεθος).
embed_htmltrue (προεπιλογή) = επιστρέφει και embed_html· false = null.
timeline / trackfalse = η λίστα αυτή παραλείπεται από την απάντηση.
weathertrue (προεπιλογή) ή 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 Ιουνίου).

Χάρτης θέσεων: σκιά και ήλιος ανά θέση
seat_map
Χάρτης διαδρομής χρωματισμένος ανάλογα με την πλευρά του ήλιου
route_map
Χρονολόγιο: πότε ο ήλιος είναι σε ποια πλευρά
timeline

Bus catalogue

Το bus_model δέχεται μία από αυτές τις γενικές κατηγορίες οχημάτων (όχι συγκεκριμένες μάρκες). Κάθε πεδίο λεωφορείου που στέλνετε αντικαθιστά το μοντέλο· το seats μετατρέπεται σε rows σύμφωνα με το layout. Η ίδια λίστα είναι διαθέσιμη ως JSON από το bus-sun-catalog.

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 (προεπιλογή· σε σώμα 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"
🔑 Συνδεθείτε ως προγραμματιστής για να δοκιμάσετε αυτό το endpoint ζωντανά στο sandbox — 10 δωρεάν δοκιμαστικές κλήσεις ανά προϊόν την ημέρα. Σύνδεση

Ενημερώθηκε