Skip to navigation

Vehicle Catalog

Vehicle Catalog

Araç kataloğunu (TSB araç kasko değer listesi) sayfalı döndürür. Varsayılan olarak yalnızca güncel listede yer alan aktif araçlar döner; version verildiğinde tam liste yerine yalnızca o sürüme ait değişiklikler (delta) döner.

Uç Nokta (Endpoint)

GET {{baseUrl}}/api/VehicleCatalogs


Kullanım

Bu servis, araç kataloğunu kendi tarafında saklayan tüketicilerin ilk tam çekimi ve sonraki delta güncellemeleri için kullanılır.

Tam çekim akışı:

  1. Authentication Login servisinden token alınır.
  2. GET /api/VehicleCatalogs/meta ile Version okunur; eldeki sürümle aynıysa katalog değişmemiştir, çekime gerek yoktur.
  3. Bu servis page=1 ile çağrılır ve page değeri Data boş dönene ya da Page * PageSize >= TotalCount olana kadar artırılır.
  4. Yanıttaki Version değeri watermark olarak saklanır.

Delta akışı (version parametresi):

  1. GET /api/VehicleCatalogs/versions ile sürüm listesi alınır.
  2. Eldeki sürüm listede bulunur; sonrasındaki sürümler sırayla ?version=<hash> ile çekilir.
  3. Dönen kayıtlar Id ile upsert edilir.

version verildiğinde sürüm geçmişindeki bir önceki sürümden istenen sürüme kadar olan pencerede son kez değişen kayıtlar döner. Pasifleşen kayıtlar IsActive=false olarak includeDeactive değerinden bağımsız dahil edilir. Bir kayıt sonraki bir sürümde tekrar değiştiyse yalnızca o sonraki sürümün yanıtında görünür; sürümler sırayla çekildiğinde her kayıt en fazla bir kez, güncel hâliyle gelir.

💡 Yeni bir sürüm oluştuğunda aboneliği tanımlı platformlara VehicleCatalogChange push bildirimi gönderilir; bildirimdeki Version değeri doğrudan bu servisin version parametresinde kullanılır.

💡 Sayfalar tekil Id anahtarına göre sıralanır; sayfalar arasında kayıt kayması ya da yinelenmesi olmaz.

⚠️ Eski model yılları için de kasko değeri sunması gereken tüketiciler includeDeactive=true kullanmalıdır; aksi hâlde listeden düşmüş (15 yıldan eski) araçlar dönmez.


Kimlik Doğrulama

Bu uç nokta geçerli bir JWT erişim token’ı gerektirir. Token, Authentication Login servisinden alınır ve Authorization başlığında gönderilir.

BaşlıkTürZorunluAçıklama
Authorizationstring✅Bearer <token> biçiminde erişim token’ı.

Token’ın Read yetkisini taşıması gerekir.


İstek Parametreleri (Query Parameters)

ParametreTürZorunluMinMaxAçıklama
pageinteger (int32)—121474836471 tabanlı sayfa numarası. Varsayılan 1; 1’den küçük değerler sunucuda 1’e çekilir.
pageSizeinteger (int32)—11000Sayfa başına kayıt sayısı. Varsayılan ve üst sınır 1000; aralık dışı değerler hata vermez, sunucuda 1000’e çekilir.
brandCodeinteger (int32)———Marka kodu filtresi (bkz. GET /api/VehicleCatalogs/brands). Verilmezse tüm markalar döner.
includeDeactiveboolean———true verildiğinde güncel listeden düşmüş pasif (IsActive=false) araçlar da dahil edilir. Varsayılan false.
versionstring———Değişiklikleri istenen katalog sürümü (bkz. GET /api/VehicleCatalogs/versions). Sürüm geçmişinde yoksa 400 döner.

Örnek İstek:

GET {{baseUrl}}/api/VehicleCatalogs?brandCode=9&page=1&pageSize=3
Authorization: Bearer <token>

Başarılı Yanıt (200 OK)

AlanTürAçıklama
Versionstring | nullYanıttaki verinin ait olduğu katalog sürümü. Tam listede son başarılı senkronun hash’i, version parametreli çağrıda istenen sürümün kendisidir. Katalog henüz senkronlanmadıysa null.
LatestVersionstring | nullKataloğun güncel sürümü; meta ucundaki Version ile aynıdır. Delta yanıtında, işlenmesi gereken daha yeni bir sürüm kalıp kalmadığını gösterir.
PageintegerDönen sayfa numarası (1 tabanlı).
PageSizeintegerUygulanan sayfa boyutu (sunucu üst sınıra çekmiş olabilir).
TotalCountinteger (int64)Filtreye uyan toplam kayıt sayısı (tüm sayfalar).
Dataarrayİstenen sayfanın araç kayıtları; Id anahtarına göre sıralıdır.

Data nesnesi:

AlanTürAçıklama
IdstringKaydın tekil anahtarı ({BrandCode}-{ModelCode}). Upsert anahtarı olarak kullanılır.
BrandCodeintegerTSB marka kodu.
BrandNamestringMarka adı.
ModelCodeintegerTSB model (tip) kodu.
ModelNamestringModel adı.
PricesarrayModel yılı bazında kasko değerleri.
IsActivebooleanAracın güncel listede yer alıp almadığı. Listeden düşmüş araçlarda false.
UpdatedAtdatetimeKaydın son değiştiği senkron zamanı.

Prices nesnesi:

AlanTürAçıklama
YearintegerModel yılı.
Priceinteger (int64)İlgili model yılı için kasko değeri.

Örnek Başarılı Yanıt:

{
"Version": "52C958DB9124FAD5021C7AFA54F2699E0459A5B0",
"LatestVersion": "52C958DB9124FAD5021C7AFA54F2699E0459A5B0",
"Page": 1,
"PageSize": 3,
"TotalCount": 774,
"Data": [
{
"Id": "9-1001",
"BrandCode": 9,
"BrandName": "AUDI",
"ModelCode": 1001,
"ModelName": "S3 S TRONIC",
"Prices": [
{
"Year": 2012,
"Price": 1530369
}
],
"IsActive": true,
"UpdatedAt": "2026-08-10T11:14:17.38+03:00"
},
{
"Id": "9-1002",
"BrandCode": 9,
"BrandName": "AUDI",
"ModelCode": 1002,
"ModelName": "A6 AVANT 3.0 TFSI QUATTRO S TRONIC",
"Prices": [
{
"Year": 2016,
"Price": 2526015
},
{
"Year": 2015,
"Price": 2450234
}
],
"IsActive": true,
"UpdatedAt": "2026-08-10T11:14:17.38+03:00"
},
{
"Id": "9-1003",
"BrandCode": 9,
"BrandName": "AUDI",
"ModelCode": 1003,
"ModelName": "A6 AVANT 2.0 TDI (177) MULTITRONIC",
"Prices": [
{
"Year": 2016,
"Price": 2038213
},
{
"Year": 2015,
"Price": 1977068
}
],
"IsActive": true,
"UpdatedAt": "2026-08-10T11:14:17.38+03:00"
}
]
}

Hatalı Yanıt (400 Bad Request)

version parametresiyle gönderilen sürüm, sürüm geçmişinde bulunamadığında düz metin gövdeyle döner:

Sürüm bilgisi bulunamadı. Geçerli sürümleri versions ucundan alabilir ya da version parametresiz tam çekim yapabilirsiniz.

⚠️ Sayısal parametrelere metin gönderilmesi gibi model binding hataları da 400 döner; bu durumda gövde düz metin değil, alan bazlı hata nesnesidir.


Hatalı Yanıt (401 Unauthorized)

Token gönderilmediğinde, geçersiz olduğunda veya süresi dolduğunda HTTP 401 Unauthorized döner. Yanıt gövdesi boştur.

💡 Token’ın süresi dolduysa yanıtta Token-Expired: true başlığı bulunur. Bu durumda POST /api/authentication/refreshtoken ile yeni token alınmalıdır.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Headers

AuthorizationstringOptional

Query parameters

pageintegerOptional

1 tabanlı sayfa numarası.

pageSizeintegerOptional

Sayfa başına kayıt sayısı.

brandCodeintegerOptional
Marka kodu filtresi.

Response headers

Content-TypestringOptional

Response

OK