API Değişiklik Günlüğü
API'deki tüm önemli değişiklikler. En yeniler önce. v1 kararlılığı — yeni sürüm olmadan Breaking changes yok.
Aynı e-posta ile bir Nakordoni Partners hesabına bağlı geliştirici hesapları artık partners.nakordoni.eu üzerinden haber gönderebilir ve NakBus filolarını (NakDriver / NakManager) yönetebilir; takım rolleri (Owner, Manager, Viewer) ve iki portal arasında tek tıkla oturum açma ile. Geliştirici portalı sayfaları, API anahtarları, filo uç noktaları ve uygulamalar değişmeden kalır.
On Fuel Prices, updated_at and the response's own age_hours/stale flag were running on different clocks: updated_at moves only when a price actually changes, but staleness was computed as if it moved on every confirmation. 46.7% of the priced index showed age_hours ≤48 and stale:false while updated_at was in fact more than 48 hours old, 12,620 stations over a week old. Each price now also carries confirmed_at — the last time we confirmed the price, hour-floored, never earlier than updated_at — and age_hours/stale are computed from it. updated_at's meaning is unchanged: use it when you want to know when the price last moved, use confirmed_at when you want to know how current it is right now. Not present on the frozen v1 contract.
Two language bugs, both silent: sending the canonical grade code as lang=pl (or any of the other 24 site languages) got fuel_type_local back in English regardless — only 10 languages were ever checked against the label table, so anything outside that list fell through to the default UI vocabulary rather than the language you asked for. Separately, lang=tr (or several other valid codes) answered station listings in Ukrainian, because an internal default of uk fired whenever the requested language did not sit in that same 10-language list. Both are fixed: the language you send is now the language you get, across all 25.
Also: brand on Nearby Fuel Stations no longer returns the raw ingest sentinel OTHER for the ~330 stations where we do not know the brand — it is null, consistent with every other unknown field in the response.
Sınır AI Asistanı (/api/v1/data/assistant) aynı anahtar aynı soruyu beş dakika içinde iki kez sorduğunda 503 internal_error — “Asistan geçici olarak kullanılamıyor” — yanıtını veriyordu. Kullanılamayan bir şey yoktu: bu durumların çoğunda yanıt zaten hesaplanmış ve geri verilmeye hazırdı. Artık normal şekilde, ok: true ve HTTP 200 ile döndürülüyor.
Tekrar eden istek, ilk yanıt henüz yazılırken geldiğinde, çağrı artık 503 yerine 429 döndürüyor ve error.code değeri duplicate_request oluyor; böylece bir yeniden deneme politikası “birazdan tekrar sor” durumunu gerçek bir kesintiden ayırt edebiliyor. Her iki durum da hesabınızın hata oranına sunucu hatası olarak sayılıyordu; artık sayılmıyor. İstekte hiçbir şey değişmiyor — ne parametre ne de sürüm. duplicate_request, referansta diğer hata kodlarıyla birlikte listelenmiştir.
Truck Parking (/api/v2/data/truck-parkings), name değeri null ve address alanı boş olan kayıtlar döndürüyordu — Bensheim yakınında 50 kaydın 20'si. Bunlar yalnızca bir koordinat olarak tuttuğumuz yerler; gösterilecek bir şey yok, kendi POI kümenizle eşleştirilecek bir şey de yok. Artık bu ürünün parçası değiller: ürün şimdi yalnızca adlandırılmış konumları sunuyor, şu anda Avrupa genelinde 22.000'den fazla. Adsız kayıtları kendiniz eliyorduysanız, o kod artık gereksiz ama zararsız. Aynı radius ve limit için yanıtlar kısalıyor ve dönen her kayıt kullanılabilir durumda.
Ayrıca yaklaşık 10.000 otopark, name alanında ham bir koordinat çifti taşıyordu, örneğin 51.927301,10.14112; gerçek etiket ise address alanındaydı. Artık bu etiketi — Ionity, Seesen, Rest Area A5 E35 Kaelberpfad, Bensheim — göründükleri her yerde, /api/v1/data/pois dahil, taşıyorlar. Her yerin id değeri değişmedi, dolayısıyla önbelleğe alınmış bir eşleme geçerliliğini koruyor; yalnızca name farklı.
snapshot.updated_at alanı, /api/v1/data/queue ve /api/v1/data/multi uçlarında sınır kapısının kendi dilimindeki yerel saattir (örneğin Europe/Istanbul, Europe/Sofia, Europe/Budapest, Europe/Warsaw, Europe/Kyiv); şimdiye kadar yanıtta bunun hangi dilim olduğunu belirten bir şey yoktu, bu yüzden çağıran taraf bunu kesin bir ana çözemiyordu. snapshot, ek bir timezone alanı kazanıyor (IANA adı); bu alan updated_at ile birlikte yer alıyor. Parametre yok, sürüm yok, başka hiçbir alan değişmiyor.
Şimdiye kadar her yakıt uç noktası kendi kapsamını elle yazılmış bir listeyle anlatıyordu: AT, DE, DK, ES, FR, HR, IT, LU, PL, PT, SI ve Polonya bu listede Trójmiasto bölgesine indirgenmişti. Her iki bilgi de çoktan eskimişti. Kapsam artık istasyonların canlı dizininden ölçülüyor ve altı saatte bir yeniden hesaplanıyor: bugün 39 ülkede fiyatlı istasyon var, Polonya da bunların arasında ülke genelinde, üç şehirde değil. İsteğin kendisinde hiçbir şey değişmiyor: ne parametre ne sürüm.
Nearby Fuel Stations ve Cheapest Fuel: bir arama boş döndüğünde coverage bloğu artık ölçülmüş station_countries, station_counts, sparse_coverage ve measured_at değerlerini taşıyor; hem de genel olarak yakıta değil, sorduğunuz yakıt türüne göre daraltılmış olarak. Bir ülke, orada fiyatlı 25 ya da daha az istasyonumuz olduğunda sparse_coverage listesine girer — bu bir sayımdır, yargı değil.
Tanıdığımız, ama sorduğunuz yerde kimsenin fiyatlamadığı bir tür için yeni bir not var. Şimdiye kadar coverage.fuel_type_note yalnızca pompadaki adın kendisi bize yabancı olduğunda görünüyordu. Artık ad doğru çözümlendiği hâlde o ülkede onun için hiç fiyat bulunmadığında da görünüyor; bu türün fiyatlandığı ülkeleri ve çevrenizde fiyatladığımız türleri adlandırıyor. Çekçe Natural 100 adı temiz örnektir: çözümlenir, ama Çekya'da hiçbir kaynak ona fiyat vermez. Boş bir yanıt artık bozuk bir istek gibi görünmüyor.
Fuel Grades (/api/v2/data/fuel-grades) her tür için priced_countries ve priced_station_counts alanlarını kazanıyor; priced_here alanı ise ?country= gönderdiğinizde eklenir. İki liste farklı şeyler söyler: countries altındaki ülke, o pompa adını kabul ettiğimiz ülkedir; priced_countries ise bir kaynağın onu gerçekten fiyatladığı yerdir, dolayısıyla priced_here değerinin 0 olması yanıttaki bir boşluk değil, gerçek bir yanıttır. Yanıt ayrıca coverage_measured_at ve coverage_note taşır; Cache-Control ise yeniden hesaplama sıklığına uyacak şekilde 24 saatten 6 saate iner.
Pompadaki yerel adlardan daha fazlası da çözümleniyor; aralarında Klimadiesel 90 (HVO100) ve HVO Diesel, Erdgas ve Metano, Autogas ve Autogaz, AdBlue için DEF ve bir dizi premium dizel ve benzin marka adı var. Çözümleme sırası değişmedi, eşleşme tam kalıyor; bu yüzden daha önce çalışan hiçbir ad bugün başka bir şey ifade etmiyor, yeni bir ad ise ancak boş bir yanıtı fiyatlı bir yanıta çevirebilir. Aynı anda referans belgeleri ve uç nokta açıklamaları sitenin 25 dilinin tamamında düzeltildi.
Cheapest Fuel (/api/v2/data/fuel-cheapest) en ucuz istasyonlar yerine mesafeye göre sıralanmış en yakın istasyonları döndürüyordu. Sıralama, sonuç limit değerinize kırpılmadan önce uygulandığından, yarıçapınız içindeki en ucuz istasyonlar yanıttan tamamen eksik kalabiliyordu. Sıralama yeniden doğru çalışıyor: istediğiniz yakıt türü için önce en ucuzu, eşitlik durumunda en yakını kazanır ve o yakıt türü için fiyatı olmayan bir istasyon en sona sıralanır. İstekte hiçbir şey değişmiyor — ne parametre, ne de sürüm.
v2 yakıt yanıtları da artık gerçekte sunuldukları şekilde belgelenmiştir: istasyonlar data.stations[] altında gelir, her fiziksel istasyon için bir kayıt olacak şekilde; her yakıt türü prices nesnesi içine yerleştirilmiştir (price, currency, local_name, updated_at, age_hours, stale), ayrıca station_ref, grades, total_found ve notices alanları da bulunur. Nearby Fuel Stations ve Cheapest Fuel için referans dokümanı hâlâ eski, düz data.data[] satır listesini tanımlıyordu.
Faturalandırma sayfasında (aylık sekme), planınızı değiştirmeden herhangi bir planın üzerine iki eklenti alınabilir: Ek tahmin çağrıları — blok başına günde +100 tahmin ve istatistik çağrısı, blok başına ayda €2, en fazla 10 blok; ve Ek ülkeler — birim başına +1 bildirilebilir ülke, her biri ayda €2. Adet değiştirildiğinde, herhangi bir tahsilat yapılmadan önce tam orantılı bir fiyat teklifi gösterilir.
10 Kasım 2026 tarihinden itibaren her plan belirli sayıda bildirilen ülke içerir: Explorer ve Student 4, Starter 10, Pro ve üzeri sınırsız. Bu tarihten itibaren plan artı satın alınan ek ülkelerden daha uzun bir bildirim kaydedilemez; Hesap sekmesi hakkınızı şimdiden gösteriyor ve bu sınırı zaten aşan hesaplar panoda bir öneri görüyor. 10 Kasım öncesinde hiçbir şey değişmiyor.
API sandbox artık seçicideki her uç noktayı kota sınıfıyla (Ağır / Standart) etiketliyor, seçilen sürümün kota maliyetini siz herhangi bir şey çalıştırmadan önce gösteriyor ve bir çağrının ardından aynı çağrının canlı kotanızdan ne kadara mal olacağını gösteriyor — buna ceil(N ppids × M sub-products / 2) formülü de dahildir; bu formül /multi biçimindeki çağrılar için kullanılır.
Bu, yalnızca okunabilir bir ön izlemedir: sandbox çağrılarının kendisi ayrı sandbox test bütçenizden düşülür, asla canlı kotanızdan değil.
Bugünden itibaren, kaldırılacağını kamuya duyurduğumuz her şey, duyuru tarihinde veya sonrasında oluşturulan geliştirici hesaplarına kapalıdır. Hesabınız duyurudan önce mevcutsa hiçbir şey değişmez — tam geçiş süresini, onu duyuran kayıtta belirtilen kaldırma tarihine kadar korursunuz.
Bu kural neden var. 24 Ağustos 2026'da truck-bans v1'in 8 Eylül 2026'da kaldırılacağını duyurduk. Bu duyurudan birkaç gün sonra kaydolan iki hesap entegrasyonlarını v1 üzerine kurdu ve bir 410 yanıtına saatler kala geldiler; hiçbir e-postamız onlara ulaşmamıştı: hem duyuru hem de bildirim gönderimi kayıtlarından önceydi. API'de, kaldırılacağını çoktan söylediğimiz bir sürümü benimsemelerini engelleyen hiçbir şey yoktu. Bu bizim hatamızdı ve düzeltmesi şudur: kaldırılması zaten planlanmış bir şeyi yeniden benimseyemezsiniz.
Nasıl göründüğü. Böyle bir çağrı 410 Gone ve version_closed_to_new_accounts hata koduyla reddedilir. Mesaj kaldırma tarihini, duyuru tarihini ve bunun yerine kullanılacak sürümü belirtir. Bu, bilerek version_sunset kodundan farklıdır; ikincisini kaldırma tarihi geçtikten sonra her hesap alır — destek ekibi «başlamak için çok geç kaldınız» ile «bu artık herkes için yok» arasındaki farkı bir günlüğü okumadan görebilir.
Kazanılmış hak, ilk çağrıya göre değil, hesabın oluşturulma tarihine göre belirlenir. Duyurudan önce kaydolduğunuz halde entegrasyona ancak şimdi başlıyorsanız, tam geçiş süresini yine de alırsınız: baştan beri bunun üzerinde geliştirme yapıyor olabilirsiniz.
Şu andan itibaren geçerli truck-bans v1 için (24 Ağustos 2026'da duyuruldu, 8 Eylül 2026'da kaldırılıyor) ve bundan sonra duyuracağımız her kaldırma için otomatik olarak. Sizden yeni bir şey istenmiyor: kaldırılmakta olan bir sürümdeki her yanıt zaten Deprecation, Sunset ve Link: rel="successor-version" başlıklarını taşır; böylece yeni bir entegrasyon bu sayfayı okumadan yaklaşan bir kaldırmayı görebilir.
Dünkü v4 değişikliğinin devamı (geliştirici talebi #105). v1 ve v2 sürümlerinde virgülle ayrılmış destination listeleri çalışmaya devam ediyor, ancak artık destination=all ile aynı takvime tabi: her ikisi de 2026-10-06 tarihinde duruyor (o tarihe kadar Deprecation/Sunset başlıkları, sonrasında 400 destination_list_removed, yerine geçen adres olarak /api/v4/ belirtilir). Virgüllü listelerdeki mevcut 10 öğe sınırı kontrolü bu tarihe kadar değişmiyor.
v4 çağrı başına tek hedefte kalıyor — bugün bu değişmedi. Değişen tek şey v1/v2 için verilen mesaj: destination=all için dönen 400 hatası artık geçiş yolu olarak virgüllü liste önermiyor (aynı tarihte o da sona ererdi), doğrudan v4 sürümüne yönlendiriyor.
Belge düzeltmesi: bu sitedeki v4 örneği daha önce /api/v4/data/border/1/2,3,4/9 şeklindeydi — bu, v4 sürümünün reddettiği bir virgüllü listedir. Artık /api/v4/data/border/1/2/9 olarak yer alıyor. Eski örneği kopyalayan herkes ilk çağrısında 400 alırdı; özür dileriz.
Yeni çevrilmiş anahtar product_border_v4_p_destination sitenin 25 dilinin tamamında yayımlanıyor ve v1/v2 ifadesine geri düşmek yerine v4 sürümünün tek hedef kuralını açıkça belirtiyor.
/api/v4/data/border/{origin}/{destination}/{crossing_type} bugün yayında. v2'ye göre üç şey değişiyor ve bir arada, bunun bir düzenleme değil yeni bir sürüm olmasının nedeni bunlar.
1. Artık destination=all yok. Verilerimiz ülke bazında lisanslanır (Developer API Şartları, bölüm 7) ve "veri tuttuğumuz her komşu" anlamına gelen bir joker karakter, hesabınızın onaylı olmayabileceği ülkeleri döndürür — üstelik istekte bunu gösteren hiçbir şey olmaz. v4'te ülkeyi siz belirtirsiniz.
2. Çağrı başına tek hedef ülke. /api/v4/data/border/1/2/9 tek bir sınırı sorar. Virgüllü listeler kabul edilmez: 1/2/9, 1/3/9 ve 1/4/9 ayrı çağrılar olarak gönderin. Virgüllü bir liste veya all 400 döndürür ve gönderilmesi gereken çağrıları tek tek adlandırır; böylece hiçbir şey sessizce başarısız olmaz.
3. Tek bir kamyon kodu. v1 ve v2, yük taşımacılığını 8 (Freight Transport) ve 9 (7,5 t'a kadar Freight Transport) olarak ikiye ayırıyordu. Bu ayrım sınır kapısında gerçektir, ancak hiçbir entegratör buna göre hareket edemez: v2'den UA-PL sınırında 9 istemek 70 kamyon geçişinden 21'ini döndürüyordu ve bunu hiçbir şey belirtmiyordu. v4, 9 sorgusuna tüm kamyon şeritleriyle yanıt verir ve 8 kodunu 9 için takma ad olarak kabul eder. Her satır kendi crossing_type değerini taşır, böylece birleştirilmiş yanıt incelenebilir kalır.
v1 ve v2'de destination=all 2026-10-06 tarihine kadar çalışmayı sürdürür ve o tarihe kadar Deprecation / Sunset başlıklarını taşır. O tarihten itibaren bu sürümler de all için 400 döndürür — v1 ve v2'nin geri kalanı değişmeden kalır ve kullanılabilir olmayı sürdürür. Aynı tarih diğer tüm-ülke kısayolları için de geçerlidir: travel-matrix (?dest= olmadan), bus-carriers (?ppid=all ile) ve fuel-grades (?country= olmadan).
Bugün daha önce duyurulan v3'ün yerini v4 alıyor. v3, v4'ten yalnızca virgüllü listeyi hâlâ kabul etmesiyle ayrılıyordu ve hiçbir entegrasyon bu biçimi kullanmıyor. v3 URL'leri yanıt vermeyi sürdürür, böylece onlara göre yazılmış hiçbir şey bozulmaz; ancak v3 belgelenmiyor ve geliştirilmeyecek — v4'e geçin.
v4'teki diğer her şey v2 ile aynı: yönlü yol sırası, direction{from,to}, stale ve ?max_age_min=.
/border/{origin}/{destination}/{crossing_type} içindeki sayısal kimlikler hiçbir zaman bir tablo olarak yayımlanmamıştı; bu yüzden entegratörler bunları saat dilimlerinden ve örnek URL'lerden çıkarıyordu. Artık belgelerde Ülke ve araç türü kodları başlığı altındalar ve API'nin doğrulama için kullandığı tablolardan üretiliyorlar — her ülke kimliği, kapsadığı sınırlarla birlikte ve her crossing_type, API'nin döndürdüğü etiketle birlikte.
Bunları yayımlarken sandbox'ın ve uç nokta meta verilerinin 8 kodunu "truck<7.5t", 9 kodunu ise "truck" olarak tanımladığını gördük. Bu terstir: API 8 kodunu Freight Transport, 9 kodunu ise 7,5 tona kadar Freight Transport olarak etiketler ve hep böyle olmuştur. Kamyon kodunu parametre ipucundan seçtiyseniz, amaçladığınızın tam tersi şeridi filtreliyordunuz. Her yerde düzeltildi ve v3 bu seçimi tamamen ortadan kaldırıyor.
API Şartları v1.1, v1.0'ın yerini yürürlüğe girmeden önce alıyor ve 2026-10-06 tarihinden itibaren geçerli. Lütfen bunları kontrol panelinizden kabul edin.
Bölüm 7 artık Pazar'ın ne olduğunu söylüyor: kullandığınız verinin ait olduğu ülke — istediğiniz sınır kapısının veya sınırın bulunduğu ülke — kullanıcılarınızın yaşadığı ülke değil. Kontrol panelimiz farklı yerlerde her iki şeyi de söylüyordu; uygulama her zaman ilkini kastediyordu.
Lehinize iki değişiklik. Hesabınız için zaten onaylanmış ülkeler, sonraki bir değişiklik incelenirken kullanılabilir kalır (bir ülke eklemek artık mevcut ülkeleri askıya almaz). Ayrıca bir pazar bildirimini 5 iş günü içinde yanıtlamazsak, yanıtlayana kadar tam plan limitleriniz geçerli olur.
Bölüm 10.3 artık kontrol panelinin gerçekten istediğiyle örtüşüyor ve bölüm 13.2, ölçtüğümüz ve size gösterebileceğimiz bir kullanılabilirlik esasını belirtiyor.
Üç ürün artık, bir okumanın gerçek bir gözlem mi yoksa o geçişte canlı sayım kaynağı bulunmayan bir model tahmini mi olduğunu gösteren, eklemeli bir data_quality alanı (high veya low) taşıyor: queue (üst düzey snapshot üzerinde ve data[] içindeki her geçmiş satırda — tahmin satırlarında yoktur), update-info (zarf üzerinde) ve multi (her sınır kapısı için hem queue hem de update_info alt nesnelerinde). Bu yeni bir sinyal değil — bayrak dahili olarak zaten vardı — ancak hiçbir zaman dışarıya verilmemişti; bu yüzden tamamen modellenmiş bir sınır kapısı, doğrudan ölçülmüş olanla aynı görünüyordu. is_realtime bilerek değiştirilmedi: modellenmiş satırlarda hâlâ true döndürür ve bu anlamı değiştirmek, burada yapmadığımız v2 düzeyinde kırıcı bir değişiklik olurdu.
Bu sürümle birlikte ayrıca: queue-advanced ürünü artık ham yukarı akış hava durumu verisini yeniden dağıtmıyor. weather_main, temperature ve wind_speed yerlerini türetilmiş bir condition_code (0–5 tehlike ölçeği, hava durumu verisi yoksa null), condition ve severity alanlarına bıraktı.
2026-08-30 tarihinden itibaren bir /api/v1/data/multi isteği en fazla 5 sınır kapısı için yanıtlanır. Daha fazla PPID listeleyen bir çağrı reddedilmez: yine 200 döndürür, ancak yalnızca ?ppids= içindeki ilk 5 kimlik yanıtlanır. Kalan kimlikler yok sayılır, meta.ppid_cap.ignored içinde geri döndürülür ve kotanızdan düşülmez — çağrı, gerçekte döndürdüğü kadarıyla ücretlendirilir.
Bir çağrı sınırın üzerinde olduğu sürece yanıt, X-Devapi-Warning: multi_ppid_cap başlığını ve bir meta.ppid_cap bloğunu taşır; bu blokta cap, enforced_from, enforced, ppids_asked, ppids_answered ve ignored[] alanları bulunur. 2026-08-30 tarihine kadar bu alanlar enforced: false değeriyle ve sonuç kümesinin tamamıyla görünür; böylece yaklaşan değişikliği kendi günlüklerinizde görebilirsiniz.
Kotadaki yarı yarıya indirim değişmedi. Sınır kapılarınızı 5 kişilik gruplara ayırın ve normal yenileme döngünüzde her grup için bir çağrı gönderin; yalnızca kuyruk uzunluğunu ve verinin tazeliğini sık sık sorgulamak için update-info daha ucuz standart sınıf ürün olmaya devam ediyor.
Ukrayna için hesaplanan sıcaklık yasağı — include_ua_heat ile, country=UA sorgularında ise otomatik olarak dönüyor — artık istediğiniz tarih aralığı için yanıt veriyor. Önceden date_from ve date_to ne derse desin önümüzdeki yedi günü döndürüyordu; bu yüzden aralık ayına ait bir aralık sessizce bu haftanın satırlarını getiriyordu. Yasak, yasak takviminden okunmaz, hava tahmininden hesaplanır; bu nedenle takvimde olmayan iki sınırı vardır: geriye bakmaz ve tahmin nerede biterse orada biter. Aralığınız artık tahminin gerçekten kapsadığı dönemle kesiştiriliyor ve yeni ua_heat_ban.forecast_horizon alanı ulaşılan son tarihi bildiriyor. Bu ufkun ötesindeki bir aralık hiç satır döndürmez ve nedenini summary içinde açıklar — bu «yasak yok» ile aynı şey değildir. v1 yanıtları değişmedi.
Yanıtın biçimi bugüne kadar hiçbir yerde belgelenmemişti; bir ürünün ne döndürdüğünü öğrenmenin tek yolu onu çağırmaktı. Artık her ürün sayfasında, parametre tablosunun altında bir tablo var: Yanıt alanları her alanın kısa açıklamasıyla; liste ögelerinin alanları şu biçimde gösterilir: items[].name, zarf düzeyindeki alanlar (usage, meta, snapshot, resolved_location) ise öneksiz. 42 üründen 40 tanesi belgelendi: henüz yayına alınmayan iki ürün (weather, road-quality) bilerek açıklamasız bırakıldı. Aynı tablo GitHub üzerindeki açık belge aynamızda da yayımlanıyor.
Artık her yakıt ürünü, yalnızca bizim iç yazımımızı değil, yakıtın yerel adını da kabul ediyor: ON Polonya'da, Nafta Çekya'da, Gázolaj Macaristan'da, Motorină Romanya'da, ДП Ukrayna'da, Motorin Türkiye'de, Gasóleo Portekiz ve İspanya'da. Ad önce ülkeye göre çözümlenir — “95” bir Danimarka pompasında E10, bir Polonya pompasında E5 demektir — bu yüzden country parametresini yerel adla birlikte ya da noktayı konumlandırabileceğimiz koordinatları gönderin. Yanıtta fuel_type (kanonik), fuel_type_requested (yazdığınız haliyle) ve fuel_type_local döner. Konumlandıramadığımız bir adı asla varsayılan bir yakıtla değiştirmeyiz: yanıt boş döner ve bunu açıkça söyler.
Tablonun tamamı artık kendi başına bir ürün — GET /api/v2/data/fuel-grades[?country=PL][&fuel_type=ON] — kanonik yakıtlarımız ve bunların 41 Avrupa ülkesindeki yerel adları; fiyat vermediğimiz pazarlar da dahil. Ayrıca fuel ve fuel-local ürünlerinin ülke ve bölge katmanları grades nesnesini kazandı: her fiyat anahtarını yakıtına ve pompadaki adına bağlar.
Artık truck-bans ürünü şu adreste belirli bir tarih veya tarih aralığı için yanıt veriyor: /api/v2/data/truck-bans. Şimdiye kadar her zaman önümüzdeki 7 günü döndürüyor ve gönderdiğiniz tarihi yok sayıyordu; bu yüzden takvim oluşturmak için her güne bir istek gerekiyordu — saniyede iki istek veren bir planda ise bunların çoğu şu hatayla reddediliyor: 429 qps_exceeded.
Tek bir gün için ?date=YYYY-MM-DD parametresini, bir aralık için ?date_from= ve ?date_to= parametrelerini kullanın. Her iki uç da dahildir ve herhangi biri atlanabilir: başlangıç varsayılan olarak bugündür, bitiş ise başlangıç artı 7 gündür. Bir pencere en fazla 92 günü kapsayabilir — daha uzunu sessizce kısaltılmak yerine şu hatayla reddedilir: 400 date_range_too_long. Bu ileriye dönük bir takvimdir: bir pencere en fazla 7 gün geriden başlayabilir, daha eski tarihler sunulmak yerine reddedilir — kapsam ileriye doğru 31 Aralık 2028'e kadar, 23 ülkede geçerlidir.
Her yanıt artık kapsanan aralığı tam olarak belirten bir window nesnesi taşıyor. Bu ek bir alandır ve v1'de de gönderilir; v1 sabit 7 günlük penceresini değiştirmeden korur. Dikkat: include_ua_heat hangi pencereyi isterseniz isteyin her zaman önümüzdeki 7 günü kapsar — hava durumu tahmininden hesaplanır, yasak takviminden değil. Bu ürünün v1 sürümünün 8 Eylül 2026'da kaldırılacağını hatırlatırız.
API genelinde iki ilgili iyileştirme: bir ürünün kabul etmediği her parametre artık sessizce atılmak yerine yanıttaki ignored_params alanında listeleniyor ve veri servisinden gelen doğrulama hataları size yazıldığı gibi ulaşıyor; makine tarafından okunabilir kod ise şu alanda: error.reason.
Ağ geçidi denetiminden (ticket #43) çıkan üç yanıt kalitesi düzeltmesi.
X-API-Key başlığı artık kabul ediliyor — Authorization: Bearer ve ?key= yöntemlerinin yanı sıra. HTTP istemciniz anahtarları X-API-Key adlı bir başlıkla gönderiyorsa artık çalışıyor — daha önce sessizce yok sayılıyor ve çağrı missing_api_key olarak reddediliyordu. Authorization: Bearer belgelenmiş ve önerilen biçim olmayı sürdürüyor.
Eksik anahtar hata mesajı artık kimlik doğrulamanın üç yolunu da adlandırıyor (Bearer başlığı, X-API-Key başlığı veya ?key=); yalnızca kayıt sayfasına bağlantı vermekle yetinmiyor.
checkpoints dizini artık her satırda has_day_stats taşıyor — Best Time to Cross (day-stats) API'sinin o sınır kapısı için verisi olup olmadığını belirten ek bir boolean. Day-stats yalnızca izlenen sınır kapılarının bir bölümü için mevcuttur; öngörülebilir 404'lerden kaçınmak için sorgulamadan önce bu bayrağı denetleyin. Mevcut alanlar değişmedi.
Belgelerde ayrıca şu düzeltildi: road-conditions ürünü etiket yerelleştirmesi için lang parametresini her zaman dikkate alıyordu — yalnızca listelenmemişti.
truck-bans ürünü için iki düzeltme ve bir yeni sürüm.
Virgülle ayrılmış ülkeler artık çalışıyor. ?country= en fazla 3 ISO-2 kodundan oluşan bir liste kabul ediyor, örneğin ?country=DE,RO. Daha uzun bir liste sessizce kırpılmak yerine 400 too_many_countries ile reddediliyor — bu, toplu bir akış değil, ülke bazlı bir yasak takvimidir. Bu daha önce çalışmıyordu: ayırıcı kaldırılıyordu, dolayısıyla DE,RO tek bir DERO belirteci olarak okunuyor, hiçbir şeyle eşleşmiyor ve success: true ile total_bans: 0 döndürüyordu — ikisinde toplam 22 yasak bulunan iki ülke için kendinden emin bir “yasak yok” yanıtı. Bunu her ülke için ayrı istek göndererek aştıysanız, artık tek bir istek hepsini kapsıyor ve birkaç çağrı yerine tek çağrı harcıyor.
Yanıtlar artık kendi eksiksizliğini bildiriyor. Üç ek alan — returned, total_available ve truncated — bir yanıtın sınırlandırılıp sınırlandırılmadığını gösteriyor. Özellikle kapsamsız bir çağrı sınırlandırılmış bir dilim döndürür ve şimdiye kadar yükte bunu belirten hiçbir şey yoktu. total_bans mevcut anlamını koruyor (bu yanıttaki satırlar), dolayısıyla hâlihazırda ayrıştırdığınız hiçbir şey değişmiyor.
v2, ülke başına kapsamlandırılmıştır. /api/v2/data/truck-bans üzerinde ?country= zorunludur ve kapsamsız bir istek 400 scope_required ile reddedilir — bu ürün, toplu bir akış değil, ülke bazlı bir yasak takvimidir. v1 bugün değişmedi — hâlâ kapsamsız çağrıyı kabul ediyor ve her zaman döndürdüğü aynı sınırlı 50 satırı döndürüyor, dolayısıyla şu anda çalışan hiçbir şeyiniz bozulmuyor. Bu ürünün v1 sürümü 8 Eylül 2026'da kullanımdan kaldırılıyor. 7 Eylül dahil olmak üzere normal şekilde hizmet verir; 8 Eylül'den itibaren bir v1 isteği 410 Gone ve v2'yi gösteren bir mesajla reddedilir. O tarihe kadar her v1 yanıtı Deprecation: true, bu tarihi taşıyan bir Sunset başlığı ve ardıl sürümü belirten bir Link başlığı içerir; böylece bir istemci kitaplığı, kimse bu sayfayı okumadan son tarihi gösterebilir. Geçiş için: sürüm segmentini /api/v2/data/truck-bans olarak değiştirin ve ?country= gönderin.
Bir belge düzeltmesi: date parametresi kaldırıldı. Uzun süredir listelenmişti ancak servis tarafından hiç okunmuyordu; bu yüzden onu gönderen her istek, istediği gün yerine sessizce varsayılan 7 günlük pencereyi alıyordu. Bir gün seçmek için upcoming_bans dizisini date alanına göre filtreleyin. Ayrıca DEU gibi bir ISO-3 kodu artık özette bir ülke adına çözümlenmiyor; orada yanıltıcı “No truck ban data for: Germany.” çıktısını üretiyordu.
truck-bans ürünü artık beş ülke daha için ülke genelindeki trafik kısıtlamalarını döndürüyor: Belçika (BE), Belarus (BY), Karadağ (ME), Kuzey Makedonya (MK) ve İsveç (SE). Bulgaristan, Yunanistan ve Portekiz için mevcut kapsam genişletildi ve tazelendi — Yunan kısıtlamaları artık Eylül 2027'ye kadar uzanıyor, Portekiz ise yeniden veriyle dolu.
Yanıtın yapısı değişmedi. Yeni satırlar diğer tüm yasaklarla aynı anahtarları taşıyor: date, time_from, time_until, restriction_type, restriction_details, min_weight_tons ve details_url. Bir kısıtlama yalnızca belirli bir koşulda geçerliyse — örneğin Belarus'taki yaz yasakları 25 °C'nin üzerinde uygulanır — bu koşul restriction_details alanında belirtilir; bu nedenle bir sürücüyü uyarmadan önce bu alanı okuyun. Bir kural tonaj yerine bir taşıma sınıfını (tehlikeli madde) hedefliyorsa min_weight_tons değeri null olur.
fuel-stations ve fuel-cheapest ürünleri artık Polonya'da istasyon bazlı fiyat döndürüyor. Kapsam kısmi — Üçkent bölgesi (Gdansk, Gdynia, Sopot) — bu nedenle Polonya yeni ve ek bir coverage.sparse_coverage dizisinde, mevcut coverage.station_countries listesinin yanında bildiriliyor. sparse_coverage içinde listelenen bir ülkede istasyon verisi yalnızca toprakların bir bölümü için vardır; o ülkenin başka bir yerindeki sorgu, tıpkı eskisi gibi kapsam notuyla birlikte boş bir liste döndürür. Polonya fiyatları PLN cinsindendir.
Toplu sorgu hatası da daha nettir: lat eksik olduğunda scope_required mesajı artık ülke geneli ortalama fiyatlar için fuel ürününe (?country=XX) yönlendiriyor.
GET /api/v2/data/fuel-local?lat=&lon= artık fiyatı iki yerine üç katmanda çözüyor: station, ardından region, ardından country. Yeni orta katman, istasyon bazlı fiyatın hiçbir yerde bulunmadığı Ukrayna için var: Ukrayna'daki bir nokta artık ulusal ortalama yerine kendi ilinin ortalamasını alıyor ve yalnızca il için kotasyon yoksa ulusal ortalamaya düşüyor.
region katmanından gelen yanıt, il kodunu (UA-46 gibi bir ISO 3166-2 değeri), region_name ve region_center_dist_km alanlarını ve ülke katmanıyla aynı fiyat anahtarlarını taşır. Kodunuzu yanıtın şekline göre değil, yine resolution alanına göre dallandırın; station ve country yanıtları değişmedi.
Yeni GET /api/v2/data/fuel-local?lat=&lon= uç noktası, Avrupa'daki herhangi bir nokta için mevcut en iyi yakıt fiyatını döndürür. İstasyon bazlı verimizin bulunduğu yerlerde en yakın istasyonların fiyatlarıyla, aksi halde noktanın bulunduğu ülkenin ulusal ortalamasıyla yanıt verir — istasyon bazlı fiyatın hiçbir yerde bulunmadığı Ukrayna dahil.
Her yanıt, hangi katmanın yanıtladığını belirten resolution alanını taşır: station (her biri kendi para biriminde, distance_km bilgisiyle birlikte istasyon listesi) veya country (ulusal ortalamaları içeren tek bir nesne). Kodunuzu yanıtın şekline göre değil resolution alanına göre dallandırın. /api/v2/ sürümünden itibaren kullanılabilir; fuel, fuel-stations ve fuel-cheapest değişmedi.
fuel-stations ve fuel-cheapest ürünleri artık Almanya'da çok daha fazla istasyonu kapsıyor ve fiyatlar gün boyunca güncelleniyor — kırsal bölgeler dahil. fuel_type parametresi 13 yakıt türünü kabul ediyor: diesel, e5, e10, superplus, super100, premdiesel, truckdiesel, hvo, lpg, cng, adblue, e85 ve lng. Sorguyla eşleşen istasyon bulunmadığında yanıt, istasyon verisi bulunan ülkeleri listeleyen bir coverage nesnesi içerir.
radius= parametresi artık, onu belgeleyen tüm ürünlerde radius_km için uyumlu bir takma ad olarak kabul ediliyor. fuel-stations ve fuel-cheapest ürünleri, hiçbir istasyon eşleşmediğinde sessizce boş sonuç döndürmek yerine eklemeli bir coverage nesnesi (istasyon verisi olan ülkelerin listesi ve bir not) döndürüyor. route-plan sınır nesneleri artık eklemeli wait_basis anahtarını içeriyor (car_lane veya vehicle_lane); böylece istemciler kamyon bekleme verisinin aslında otomobil şeridinden geldiğini anlayabiliyor. Rota boyunca kamyon sınır kapılarının eşleştirilmesi belirgin biçimde daha isabetli: kamyon şeridi verisi olmayan kapı çiftleri için otomobil şeridine geri dönüş, yanlış yön koruması, daha sıkı bir mesafe eşiği ve aynı konumdaki geçişlerin yinelenenlerinin ayıklanması. Tüm değişiklikler eklemelidir; uyumluluğu bozan değişiklik yoktur.
Geliştirici açılış sayfasında artık atlama navigasyonuyla birlikte bağlantılı bölümler var (#products, #plans, #quickstart, #integrations, #datasets, #apps, #companies, #showcase) ve her ürün kartı kendi belge sayfasına bağlanıyor. Yeni Mobile apps bölümü, Google Play bağlantılarıyla Kordon Online ve Truck Bans'ı sunuyor. Çeviri tamamlama: faturalama geçmişi, giriş hataları, sandbox bağlantıları ve plan seçim düğmesi artık tüm 25 dilde yerelleştirildi.
Filo beacon yanıtı (POST /api/v1/fleet_position.php) artık sahipten sürücüye bekleyen mesajları ileten bir messages dizisi içeriyor. Sadece sahipler için yeni canlı JSON akışı (?ajax=live) ve filo panosunda bir "Sürücülere mesajlar" kartı. Yeni sürücü davet sayfası /{lang}/get-nakbus (25 dil).
product_fleet_vehicles/live/history başlık, açıklama (title, desc) ve fleet-history parametreleri, geliştirici portalının 25 dilinin tamamında yerelleştirildi.
/api/v1/data/truck-bans artık yanıtı hangi sorgunun tetiklediğinden bağımsız olarak aynı üst düzey alan kümesini döndürüyor. Daha önce, takvimde yasağı olmayan bir ülke için sorgu, tanınmayan bir ppid veya normal bir veritabanı eşleşmesi, her biri farklı alanları (ör. country, covered_countries, ppid) atlayabiliyordu. Artık her yanıt tutarlı bir şekilde as_of, bans_by_country, countries_not_covered, country, covered_countries, current_bans, is_ban_active, lang, page_url, ppid, relevant_countries, source, success, summary, total_bans ve upcoming_bans alanlarını içeriyor (uygun olmadığında null veya boş), bu da istemci tarafı ayrıştırmayı basitleştiriyor.
Hizmet başına dokuz yeni ürün. Konum tabanlı olanlar lat/lon veya city + country kabul eder (şehri sizin için biz coğrafi kodlarız): /api/v2/data/truck-parkings, /api/v2/data/shops, /api/v2/data/showers, /api/v2/data/restaurants, /api/v2/data/industrial, /api/v2/data/fuel-stations, /api/v2/data/fuel-cheapest (belirli bir yakıt türü için fiyata göre sıralanmış istasyonlar) ve /api/v2/data/internet-points; sonuçlar distance_km içerir ve radius ile sınırlıdır. /api/v2/data/vignettes, bir ülkenin vinyet gerektirip gerektirmediğini güncel fiyatlarla yanıtlar. Mevcut pois ürünü artık belgelendiği gibi lon ve radius'u destekliyor, fuel ürününün mode=nearest modu da lon'u kabul ediyor. Dokuzu da sandbox'ta mevcuttur.
/api/v1/data/truck-bans içindeki her yasak artık restriction_type (General / Local / Sunday / Holiday / Seasonal), restriction_details (etkilenen tam kapsam veya yollar) ve min_weight_tons içeriyor. details_url artık nakordoni.eu üzerindeki ülkeye özgü sayfalara işaret ediyor. Yeni isteğe bağlı lang parametresi, ülke adlarının ve özetin dilini seçiyor; varsayılan artık İngilizce.
Hatalı bir ?ppid= artık kısa "Request failed" yerine gerçek nedeni döndürüyor: hata parametreyi, beklenen id_<number> biçimini adlandırıyor ve /api/v1/data/checkpoints adresine yönlendiriyor. stats, forecast, update-info, weather ve bus-carriers parametre tabloları artık id_13 örneğini 25 dilin tamamında gösteriyor.
Yeniden tasarlanan portal arayüzü (üst çubuk, simgeli yan menü, KPI panosu, kart tabanlı düzenler) artık oturum açmış tüm geliştirici hesapları için varsayılan deneyim — planlanan 10 Ağustos yayınından önce. Klasik düzene istediğiniz zaman dönmek için ?v=1 kullanın.
Geliştirici portalının tüm sayfaları — açılış, dokümantasyon, pano, AI Studio, deneme alanı, destek talepleri, başvurular, dışa aktarma, filo, haberler, değişiklik günlüğü ve hesap sayfaları — artık hiçbir reklam betiği veya reklam alanı yüklemiyor. Bu, eskiden olduğu gibi yalnızca giriş ve kayıt sayfaları için değil, portalın tamamı için geçerli.
Sınır yolculuğunun tamamını tek çağrıyla planlayın: /api/v2/data/route-plan rotayı, gerçekten rota üzerinde bulunan sınır kapılarını canlı kuyrukla ya da varış saatinize göre tahminle ve sürücünün gerçekten yaptığı duraklamaları — mola, yemek, yakıt — tek bir zaman çizelgesinde döndürür.
Sınır bu çizelgenin parçasıdır. Uzun kuyruk zaten gelmiş olan molanın yerine sayılır ve direksiyon başındaki süreyi sıfırlar; böylece üç saatlik bekleme asla üç saat artı kimsenin yapmadığı eksiksiz bir mola dizisi olarak gösterilmez. Otomobiller için güvenli sürüş modeli geçerlidir; otobüs ve kamyonlar AB 561/2006 zorunlu dinlenmesini alır, otobüslerin servis süresi ise 1000'den fazla lisanslı uluslararası tarifeye göre kalibre edilmiştir. Her duraklamaya gerçek bir dinlenme alanı veya akaryakıt istasyonu adı vermek için stop_places=1, farklı bir kapıdan geçmek için via=lat,lon ekleyin.
Portal menüsünde yeni: Sunum — nakordoni veri platformunun canlı, her zaman güncel, pazarınıza göre kişiselleştirilmiş tanıtımı (sigorta, seyahat, lojistik, taşıyıcılar, medya, navigasyon, akaryakıt, fintek, kamu sektörü veya kişisel projeler). Platformun gerçek 30 günlük hacimlerini, kendi API kullanımınızı, yanıt süresi ve limit istatistiklerini ve çağrılarınız ücretsiz kademe sınırlarına dayandığında bir plan önerisini gösterir. Pazarınızı (veya pazarlarınızı) sayfada, profilinizde — ya da kayıt sırasında seçin veya onaylayın. İlk ziyaretinizde otomatik açılır; otomatik açılmayı sayfanın kendisinden kapatabilirsiniz.
Bir asistanda bir veri akışı etkinse ancak çağrı o akışın ihtiyaç duyduğu bağlamı taşımıyorsa — örneğin queue parametresi olmadan ppid— akış artık herhangi bir istek yapılmadan önce atlanıyor ve ücretlendirilmiyor. Önceden yine de çağrılıyor, başarısız oluyor ve yine de bir birim maliyet çıkarıyordu. Stüdyo her akışın neye ihtiyaç duyduğunu gösterir, bağlamı doldurdukça fiyatı yeniden hesaplar ve sonuçları ✓ çalıştı / ⊘ atlandı, ücretsiz / ✕ başarısız olarak işaretler; API, hangi parametreyi geçmeniz gerektiğini tam olarak söyleyen data.feeds_skipped alanını döndürür.
Yanıtlar artık akışlardan, veri kaynaklarından veya teknik hiçbir şeyden söz etmiyor: eksik bir akış, son kullanıcıya en fazla tek bir sade cümledir, asla dahili bir ad değildir. Yalnızca isteğe bağlı filtreleri olan akışlar (örneğin verimiz olmayan bir ülkeye daraltılmış fuel ) artık hiçbir şey döndürmek yerine geniş veri kümesine geri düşer.
Yeni: /{lang}/developers/studio. Kendi içeriğinizden ve bizim canlı sınır verilerimizden yanıt veren bir yapay zekâ asistanı kurun. Markdown dosyalarınızı verin ya da yalnızca sayfaları söyleyin, biz indirip dizinleyelim — siz yalnızca kendi dosyalarınızı bakımda tutarsınız. Hangi akışlarımızı kullanabileceğini seçin (kuyruk, tahmin, alternatifler, günlük istatistik, akaryakıt, kamyon yasakları, ticari pazarlar, resmî tatiller, yol durumu, otobüs taşıyıcıları, POI, döviz), bir model kademesi seçin (hızlı / dengeli / pro — fiyatı belirleyen budur), verilerimizin yanıtta tam olarak nereye yerleşeceğini söyleyen {{feed.slug}} yer tutucularıyla kendi yönergelerinizi yazın ve her yanıta eklenen kendi kapanış cümlenizi ekleyin. Hazır şablonlar: kişisel seyahat asistanı, iş/yük asistanı, sigorta ve Yeşil Kart satış asistanı.
Stüdyoda test edin (günde 30 yanıt, API kotanızdan ayrı), sonra üretimde GET /api/v2/data/assistant-custom?assistant_id=N&q=…adresinden çağırın. Yanıt başına fiyat = model kademesi birimleri + etkin her akış için 1 birim; X-Devapi-Unitsbaşlığında döndürülür. Ürün yalnızca v2'dedir — v1 URL'si unsupported_versiondöndürür. Mevcut assistant ürünü değişmedi.
Her asistan, sizin yönergelerinizin üzerinde yer alan bir platform içerik politikasıyla çalışır: resmî görevli gibi davranmak yok, sınır veya gümrük denetiminden kaçmaya yardım yok, uydurma sayı yok, küfür yok. Hem yönergeler hem yanıtlar taranır; engellenen çağrılar kaydedilir.
Yeni: https://nakordoni.eu/mcp adresinde gerçek bir MCP sunucusu, API'nin güvenli, salt okunur bir alt kümesini (status, checkpoints, border queue, live queue, forecast) MCP araçları olarak sunar. REST API ile aynı API anahtarı ve kota. Sunucu kartı /.well-known/mcp/server-card.json adresinde. Belgelerdeki MCP Sunucusu bölümüne bakın.
Aşağıda anlatılan „Live Queue & Freshness API“ adlandırması aslında dokümantasyon sayfasına ulaşmamıştı. Sayfa her ürün başlığını bir çeviri aramasıyla gösterir; bu arama yalnızca çeviri yoksa uç noktanın başlığına düşer — çeviri ise zaten vardı, eski adda donmuş halde, 25 arayüz dilinin tamamında. Artık, kendisi de güncellenene kadar temel başlığın her türlü gelecekteki güncellemesine üstün gelir.
Çeviri anahtarı 25 dilin tamamında yeniden adlandırıldı, böylece dokümantasyon sayfası artık uyuşuyor. Uç nokta, parametre veya yanıtta değişiklik yok — yalnızca başlık metni.
Canlı kuyruk verilerini sık sorguluyorsanız, gereksiz yere ağır kota harcıyor olabilirsiniz. /update-info standart sınıftır ve canlı değeri zaten döndürür:
GET /api/v1/data/update-info?ppid=id_13
Şunları döndürür: queue_now, freshness, age_minutes, is_realtime, status, timestamp ve timezone. Sık yenileme için bunu standart günlük kotanızdan kullanın; /queue, /multi ve /forecast uç noktalarını (hepsi ağır sınıf) ise wait_min, trend alanları veya geçmiş gerektiğinde saklayın.
Uç noktanın kendisinde hiçbir şey değişmedi — yalnızca dokümantasyonunda. „Data Freshness API“ olarak listelenmişti ve açıklaması yalnızca tazelik derecelendirmesinden söz ediyordu, hiçbir zaman queue_nowalanından değil; bu yüzden gözden kaçması kolaydı. Artık adı „Live Queue & Freshness API“ ve döndürülen alanlar tek tek yazılmış durumda. Bunu dile getiren geliştiriciye teşekkürler.
Bazı başarısız istekler HTTP 200 ile ok: true döndürüyor ve hatayı data içine gömüyordu — dolayısıyla belgelenmiş if (!ok) throw kalıbı bunları saptayamıyordu ve çağrı yine de ücretlendiriliyordu. Etkilenen çağrılar artık belgelendiği gibi HTTP 400 ile ok: false ve düzgün bir error.code / error.messagedöndürüyor. fuel-cities üzerinde desteklenmeyen bir ülkeyle ve travel-matrix üzerinde hatalı koordinatlarla görüldü.
Ayrıca, eksik bir zorunlu parametre 500 internal_error yerine 400 bad_request döndürüyordu (dahili servisin 4xx gövdesi, durumu okunmadan atılıyordu). Artık dahili servisin mesajıyla 400 bad_request döndürülüyor — örneğin search parametresi olmadan ?name=.
Başarılı yanıtlar bayt bayt değişmedi — aynı alanlar, aynı parametreler, aynı kota maliyeti. İstemciniz zaten okdeğerine göre dallanıyorsa yapılacak bir şey yok. Eğer ok değerini yok sayıp doğrudan data okuyorduysa, zaten hep başarısız olan çağrılarda artık hata zarflarını görecek.
Önbelleği her soğuk olduğunda /multi ürününün bazı sınır kapıları için — çoğunlukla Balkanlar ve Macaristan–Sırbistan sınırı — yanlış kuyruk sayısı döndürebildiği bir hata giderildi. Yedek yol, o kapılar için kuyruk verisi barındırmayan bir tabloyu okuyor ve ilgisiz değerleri araç sayısı olarak bildiriyordu. Ölçülen örnekler: 12 aracı olan bir kapı 6 bildiriyordu, gerçek kuyruğu olan birkaçı ise 0 bildiriyordu.
Fark edebileceğiniz üç değişiklik:
found: falseartık gerçekten güncel kuyruk verisi olmadığı anlamına geliyor. Önceden uydurma birfound: trueilequeue_now: 0alabiliyordunuz.wait_status,trend_percentvetrend_directionartık soğuk isteklerde de döndürülüyor — öncedennullidi.- Uç nokta, önbellekteki anlık görüntüsü eskimişse de (24 saatten eski) yedek yola geçiyor; yalnızca eksik olduğunda değil.
İstek parametrelerinde, kota maliyetinde veya yanıt yapısında değişiklik yok.
Her /multi çağrısının iki kez ücretlendirilmesine neden olan bir hata düzeltildi — önce genel bir 1 birimlik kontrolle, sonra uç noktanın kendi değişken maliyet formülüyle (N PPID × alt ürünler). Bir çağrı artık belgelendiği gibi tam olarak ⌈(N×M)/2⌉ birime mal oluyor, ekstra ücret olmadan.
Ayrıca dokümantasyon sayfasında her ürüne bir Standard/Heavy kota sınıfı rozeti eklendi, böylece bir uç noktanın hangi günlük kotayı kullandığı ilk bakışta netleşir.
country ve countries tek bir parametrede birleştirildi (1-15 virgülle ayrılmış kod). Yeni compare_to parametresi: ülkeler arası aynı/farklı tatil karşılaştırması, upcoming+days ile birlikte çalışır. lang artık birden fazla dili kabul ediyor (bir names nesnesi ekler). days=0 veya belirtilmemesi artık upcoming modunda limit yok anlamına gelir.
Her Avrupa ülkesi için resmi kamu tatilleri — tarihler, yerel adlar ve tür. nakordoni.eu tatil takvimi sayfasını ve tahmin sisteminin takvim faktörlerini besleyen aynı Nager.Date / OpenHolidaysAPI hizmeti (yerel olarak hesaplanan bir Kosova takvimi ile) tarafından desteklenir.
?country=PL&year=2026— bir ülke için tam yıllık tatil listesi?upcoming=1&days=30— ülkeler genelinde yaklaşan tatillerin düz listesi- Parametresiz — her bir sonraki tatille birlikte temel ülke kümesinin dizini
currency ürünü eklendi — Frankfurter (ECB) kaynağından alınan ve 6 saat önbelleğe alınan PLN, CZK, HUF, USD, GBP, CHF, NOK ve UAH için EUR tabanlı döviz kurları. Parametre yok, her zaman tam kur tablosunu döndürür. belgelere bakın.
Canlı Avrupa kamyon sürüş yasaklarını kendi web sitenize gömün — 3 tasarım (light, dark, board), 5 dil (en, uk, pl, de, ru), isteğe bağlı ülke bazında filtre ve canlı «şu an aktif» durumu olan ücretsiz bir iframe widget'ı. API anahtarı gerekmez. Kodu nakordoni.eu/en/for_truck_drivers/traffic_bans/widget adresinde yapılandırın ve kopyalayın. Ham veriyi mi tercih edersiniz? truck-bans API ürünü ve genel JSON akışı kullanılabilir durumda kalır.
border ve etkileşimli Sandbox
Üç ekleme, hepsi geriye dönük uyumlu — v1 değişmedi.
Endpoint bazında sürümleme. Artık bir /api/v2/ temel URL'si var. Bu, endpoint bazındadır: yalnızca gerçekten değişen endpointler v2 altında farklı davranır; diğer her endpoint şeffaf biçimde v1 yanıtını sunar (yani /api/v2/data/queue = v1 ile aynı veri, sadece "api_version":"v2" ile). Çalışan endpointleri taşımaya gerek yok.
border v2 yönlüdür. Yol sırası seyahat yönüdür:
GET /api/v2/data/border/1/2/6 → buses UA→PL (Ukrainian-side crossings) GET /api/v2/data/border/2/1/6 → buses PL→UA (Polish-side crossings)
Her kontrol noktası ayrıca bir direction {from,to} nesnesi ve bir stale boolean değeri kazanır ve ?max_age_min=N yalnızca son güncellenen geçişleri döndürür. (v1 border sıradan bağımsız olarak hâlâ sınırın her iki tarafını döndürür — değişmedi.)
Etkileşimli Sandbox. Oturum açmış geliştiriciler artık herhangi bir endpointi tarayıcıdan Developers → Sandbox adresinde deneyebilir — bir endpoint, sürüm ve anahtarlarınızdan birini seçin, parametreleri ayarlayın ve canlı yanıtı görün. Sandbox testinin kendi ayrı günlük bütçesi vardır (günde 50 çağrı) ve canlı API kotanıza asla dokunmaz.
Belgeler artık endpoint bazında bölünmüştür (Developers → API Docs) ve birden fazla sürümü olan endpointlerde bir sürüm seçici bulunur.
queue-advanced: iki yeni ayarlama faktörü
Mevcut section_mode ve hava durumu ayarlamalarının yanı sıra bekleme süresi formülüne iki yeni faktör eklendi:
service_rate— şu anda işlenen ölçülen araç/dk değerinin, kontrol noktasının yapılandırılmış temel oranına oranı. Çarpımsal, 0.5x-1.5x ile sınırlı.shift_change— kontrol noktasının kendi yerel 08:00/20:00 sınır muhafızı vardiya değişiminin etkisi. Toplamsal (dakika), çarpımsal değil — yalnızca bir vardiyanın +/-60 dakikası içinde uygulanır, asgari bir örnek geçmişi gerektirir, +/-120 dakika ile sınırlandırılır.
advanced_wait_min artık round(base_wait × section_mode × weather × service_rate) + shift_change.adjustment_min şeklindedir. Her iki faktör de geçmiş karşılaştırmalar için driver_reported.prognosed_advanced_wait_min içinde yansıtılır.
queue, border, multi, update-info ürünlerinden birkaç yalnızca dahili alan kaldırıldı
Bir güvenlik/gizlilik incelemesi kapsamında, aşağıdaki alanlar kaldırıldı — bunlar gerçek bir ürün değeri olmadan dahili uygulama ayrıntılarını (üst kaynak veri taksonomimiz, DB satır kimlikleri, dahili pipeline açıklamaları, kullanılmayan/ölü alanlar) açığa çıkarıyordu:
idvecorrected—queuesatır nesnelerinden kaldırıldısource(ham dize, ör."line") —queue,multiveupdate-infoürünlerinden kaldırıldı.update-infovemultiürünününupdate_infobloğu hâlâsource_category/source_label_entaşır (küçük bir genel sözcük dağarcığı);queuevemultiürünününqueuebloğu artık hiçbir source alanı taşımaztraffic_status—borderürününden kaldırıldı; her zamannullidi ve sistemin hiçbir parçası tarafından doldurulmadı
Entegrasyonunuz bu alanlardan herhangi birini okuyorsa, lütfen güncelleyin — güncel alan listesini ilgili ürünün belge sayfasında görün.
usage.used artık kesirli bir sayı olabilir
Günlük kota kullanımı (her yanıtta usage.used) artık her zaman tam sayı yerine ondalık bir değer (ör. 67.5) olabilir. Bu, queue-advanced ürününün kesirli bir oranla faturalandırılmasının bir yan etkisidir — aşağıya bakın. usage.limit etkilenmez ve her zaman tam sayıdır. İstemciniz usage.used değerini kesinlikle tam sayı olarak tipliyorsa, lütfen bir ondalık/float kabul edecek şekilde genişletin.
wait_status ve trend_percent/trend_direction, border, multi ve queue-advanced ürünlerine eklendi
Bu üç ürün artık web sitesinin gösterdiği aynı canlı durum alanlarını döndürüyor: wait_status (green/yellow/red, bu kontrol noktasının kendi son geçmişine dayalı) ve trend_percent/trend_direction (up/up-slight/down/down-slight/stable, son 3 saati karşılaştırarak). Tamamen ekleyici.
queue: wait_time artık her geçmiş satırda dolduruluyor
/api/v1/data/queue ürününün data[] satırlarında daha önce çoğu kaynak için wait_time: null vardı — yalnızca birkaç üst kaynak akışı bekleme süresini doğrudan bildirir. Bekleme süresi olmayan satırlar artık standart tahminini alır ve gerçek bir bildirilen değeri hesaplanmış olandan ayırt edebilmeniz için yeni bir wait_time_estimated boolean ile işaretlenir.
queue-advanced: 1.5x faturalandırılıyor, yanıt kırpıldı
queue-advanced artık çağrı başına 1 yerine 1.5 birim maliyetindedir (yaptığı ekstra trafik/hava/sürücü-raporu aramalarını yansıtarak) — yukarıdaki usage.used bölümüne bakın. Yanıt ayrıca artık total_crossing_time içermiyor ve driver_reported artık yalnızca {wait_min, ts, age_min} — önceki tahmin-gerçeklik karşılaştırma alanları (prognosed_wait_min, diff_min, historical_section_mode, historical_weather vb.) kaldırıldı. section_mode, weather, advanced_wait_min ve exceeds_crossing_time değişmedi.
active_window / next_window)
/api/v1/data/truck-bans artık bans_by_country içindeki her ülke için bir status (active/clear) artı active_window, next_window, local_time ve tz döndürüyor — bu, o ülkenin kendi saat diliminde hesaplanır, böylece artık ham yasak pencerelerini bir saate göre kendiniz değerlendirmek zorunda kalmazsınız. Yanıt ayrıca üst düzey bir covered_countries listesi ve bir as_of UTC zaman damgası ekler.
GET /api/v1/data/truck-bans?country=PL
Tamamen ekleyici — mevcut current_bans/upcoming_bans/bans_by_country alanları değişmedi. Bilinmeyen bir ?country= artık her ülkenin yasakları yerine countries_not_covered ile boş bir sonuç döndürür.
queue-advanced)
Standart bekleme süresini canlı trafik akışı ve hava durumuna göre ayarlayan yeni, isteğe bağlı bir ürün. Her ayarlamanın tam dökümünü döndürür.
GET /api/v1/data/queue-advanced?ppid=id_13
Talep üzerine verilir — etkinleştirmek için panonuzdan bir Data talebi açın.
/api/v1/data/border artık queue ve multi ürünleriyle eşleşecek şekilde yanıttaki her kontrol noktası için wait_min değerini doğru şekilde hesaplıyor. Daha önce bu alan her zaman null idi.
/api/v1/data/forecast artık herhangi bir prediction_steps değeri için güvenilir biçimde v4 topluluk modelini kullanıyor (daha önce bazı standart dışı ufuklar sessizce daha eski bir modele geri dönebiliyordu). Topluluğu besleyen hava durumu faktörü de düzeltildi ve artık her zaman kullanılamıyor bildirmek yerine canlı koşulları (yağmur, kar, rüzgâr, sis) gerçekten yansıtıyor.
Onaylı geliştiriciler artık yeni Data export sekmesinden en fazla 5 kontrol noktası için saatlik ortalaması alınmış geçmiş sınır kuyruğu verilerini (90 güne kadar kayan pencere) CSV veya NDJSON olarak indirebilir. Veriler yalnızca yayınlanmış ve kalite kontrolünden geçmiştir; zaman damgaları UTC'dir. Erişime mi ihtiyacınız var? Bir Data talebi açın.
Henüz web siteniz yok mu? Artık canlı bir sayfa URL'si girmeye zorlanmak yerine, verilerimizi nerede ve nasıl kullanmayı planladığınızı anlatarak bir geliştirici hesabı oluşturabilirsiniz. Siteniz veya uygulamanız yayına girer girmez gerçek URL'yi daha sonra panonuzdan (Account & data → Your project) ekleyin — o sayfada nakordoni.eu'ya görünür bir bağlantı Şartlarımız gereği zorunludur.
Geliştiriciler artık kendi sınırla ilgili haberlerini Nakordoni haber hattına gönderebilir. Editörlerimiz yayınlarsa, hizmetinize dizine eklenebilir bir dofollow backlink (yayıncı künyesi + kaynak satırı) alırsınız ve makaleyi ücretsiz olarak 24 dilin tümüne çeviririz.
Haftada bir makale ücretsizdir; ek makaleler ücretli bir eklentidir. 'hafifçe düzenleyebilir + dahili bağlantılar ekleyebiliriz' veya 'olduğu gibi yayınla' seçin. Developers → Submit news altında gönderin ve inceleme durumunu takip edin.
Multi-Checkpoint API (/api/v1/data/multi) artık kotayı ⌈(N PPID × alt ürün) / 2⌉ olarak faturalandırıyor — eşdeğer bireysel çağrıların yarısı maliyetinde. Her iki alt ürünle 10 kontrol noktası için bir istek artık 20 yerine 10 birim maliyetindedir. Yanıttaki X-Devapi-Units başlığı ve meta.units_consumed indirimli tutarı yansıtır.
multi)
Tek bir API çağrısında en fazla 20 kontrol noktası için canlı kuyruk durumunu ve veri tazeliğini alın — şu anda bir döngüde birçok PPID'yi yoklayan pano geliştiricileri için tasarlandı.
Kota adil biçimde istenen N PPID × alt ürün olarak sayılır, dolayısıyla toplam kullanım bireysel çağrılarla aynıdır — ancak çok yerine tek bir gidiş-dönüş ile. GreenTravel tarzı desenler saatte 24+ çağrıdan 2'ye düşer.
GET /api/v1/data/multi?ppids=id_2,id_13,id_15,id_59&include=queue,update-info&lang=en
include=queue— güncel queue_now, tahmini wait_min, veri yaşı ve kontrol noktası adıinclude=update-info— veri tazeliği, kaynak sınıflandırması, saniye/dakika cinsinden yaş- İstek başına en fazla 20 PPID; tam pano verisi için her iki alt ürünü tek bir çağrıda birleştirin
- Yanıt
meta.units_consumediçerir, böylece kota kullanımını hassas biçimde takip edebilirsiniz
queue ürününün yanıtı artık en son gerçek zamanlı verileri ve hesaplanmış tahmini bir bekleme süresini içeren üst düzey bir snapshot nesnesi içeriyor — nakordoni.eu hero bölümünde kullanılan aynı formül:
snapshot.queue_now — current cars in queue snapshot.wait_min — prognosed wait time (minutes) snapshot.updated_at — when the queue data was recorded snapshot.age_min — minutes since last update snapshot.source — data source identifier
data dizisi (geçmiş girişler) değişmedi — bu tamamen ekleyici bir eklemedir. snapshot öğesini okumayan istemciler etkilenmez.
border)
Her PPID için bir istek yapmak yerine, belirli bir sınır + araç türündeki tüm kontrol noktalarını tek bir çağrıda sorgulayın.
GET /api/v1/data/border/{origin}/{destination}/{crossing_type}
- Tek bir hedef ülkeyi, virgülle ayrılmış bir listeyi veya bir kerede izlenen her komşuya genişletmek için
alldeğerini destekler. - Sonuçlar
queue_nowdeğerine göre artan sırada sıralanır (önce en kısa kuyruk). - Tamamen yerelleştirilmiş: o dilde kontrol noktası adlarını almak için
?lang=uk(veya desteklenen 22 dilimizden herhangi birini) ekleyin.
search)
Tam dizini taramadan kontrol noktası PPID değerlerini ada göre keşfedin.
GET /api/v1/data/search?name=Krakovets,Shehyni&lang=en
- Tek bir adı veya virgülle ayrılmış bir listeyi (en fazla 20) kabul eder.
- Tüm 24 çeviri dilinde arama yapar — Ukraynaca, Lehçe, Almanca veya desteklenen herhangi bir dilde bir ad girin, eşleşecektir.
- O konumdaki tüm PPID'leri araç türüne göre gruplandırılmış olarak döndürür (araba / otobüs / yaya / kamyon).
crossing_type geçersiz kılma
alternatives ürünü artık desteklenen tüm 22 dilde ?lang= kabul ediyor (önceden yalnızca 12 idi).
Yeni crossing_type parametresi, araç türü filtresini geçersiz kılmanıza olanak tanır — örn. bir otobüs PPID'sinden sorgularken bile araba alternatiflerini almak için crossing_type=4 geçirin.
checkpoints, border ve search yanıtlarındaki crossing_type_label alanı artık desteklenen tüm 22 dilde istenen dile çevriliyor. Ülke adı alanları (origin_name, destination_name) aynı yerel ayarı izler.
Nakordoni Developer API portalı /en/developers adresinde yayında. Sınır kuyruğu verilerine, tahminlere, yakıt fiyatlarına, sürücü POI'lerine ve daha fazlasına erişmek için ücretsiz bir Explorer anahtarına (günde 200 istek) kaydolun.
Lansmanda mevcut ürünler: checkpoints, queue, stats, day-stats, forecast, alternatives, update_info, fuel, pois, truck_bans, trading_sundays, bus_carriers, road_conditions, assistant.
Bu günlük genel API değişikliklerini kapsar. Dahili güncellemeler listelenmez.
Güncellendi