Geliştiriciler için

Trackingen API belgeleri

Filonuzun konumlarını, araç verilerini, sürüşlerini, arıza kodlarını ve raporlarını okuyun; araçlarını, şoförlerini, geofence'lerini ve uyarı kurallarını kendi betiklerinizden ve ürünlerinizden kurun. HTTPS üzerinden düz JSON, kendi oluşturduğunuz bir anahtarla.

Bu sayfada

Buradan başlayın

  1. 1

    Bir anahtar oluşturun

    Panelde Yönetim'i, sonra API anahtarları'nı açın ve bir anahtar oluşturun. Neleri okuyabileceğini, neleri değiştirebileceğini ve ne zaman duracağını seçin. Sırrı yalnızca bir kez görünür; güvenli bir yerde saklayın.

    API anahtarlarını açın
  2. 2

    Her istekle gönderin

    Anahtarı Authorization başlığında bearer token olarak gönderin. Başkalarının açabildiği web sayfalarına ve uygulamalara koymayın.

    HTTP
    Authorization: Bearer $TRACKINGEN_API_KEY
  3. 3

    İlk sorunuzu sorun

    Araçlarınızı listeleyin. Her biri kimliğiyle gelir; tek bir araçla ilgili yollar bu kimliği alır.

    İstek · curl
    curl "https://trackingen.com/api/v1/vehicles" \
      -H "Authorization: Bearer $TRACKINGEN_API_KEY"

Bir anahtar, kuruluşunuzda API paketi olduğu sürece çalışır. Paket sayfasından isteyebilirsiniz.

Başvurunun tamamı, araçlarınızın okuyabileceği ve ondan istemci üretebileceği bir OpenAPI 3.1 belgesi olarak da var.openapi.json'u açın

Yanıtlar, sayfalar ve retler

Her yanıt, sonucu data içinde taşıyan bir JSON nesnesidir.

200
{ "data": … }

Bir liste sayfalarla gelir ve biter (keyset pagination): her sayfada page.next vardır; bu, hiç kurmadığınız ve okumadığınız, olduğu gibi geri gönderdiğiniz bir imleçtir (opaque cursor). Sonraki sayfa için after değerini ona eşitleyip yeniden sorun. Son sayfada page.next null olur ve liste biter. limit bir sayfada en çok kaç tane geleceğini söyler.

200
{
  "data": [ … ],
  "page": { "next": "MDE5OWIwMDAtMDAwMC03MDAwLTgwMDAtMDAwMDAwMDAwMDAy" }
}

Bir kopya hiç bitmez: imlecinden sonra alınanları alındıkları sırayla ve bir dakikalık olduklarında verir; böylece geç gelen bir bildirim hiç atlanmaz. page.next her zaman kaldığınız yerdir; sayfa boş olsa bile bir dahaki sefere after olarak gönderin. page.more hemen yeniden sorup sormayacağınızı söyler: bekleyen başka kayıt varken true, güncel olduğunuzda false olur; o zaman bir dakika ya da daha sonra yeniden sorun. after olmadan bir kopya 14 gün geriden başlar. from ile son 14 gün içindeki bir andan başlatmak hiçbir sınırdan düşmez; daha geriden, saklanan verileriniz içinde başlatmak ise her anahtar ya da kişi için iki kopyada toplam günde 5 başlangıç hakkından düşer. Bir öğe içine yeni şeyler eklenerek birden çok kez gelebilir (at-least-once delivery); bu yüzden her öğeyi deviceId ve recordedAt ile saklayın.

200
{
  "data": [ … ],
  "page": { "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE", "more": true }
}

Bir ret, HTTP durumunu ve değişmeyen bir kod, insanlar için bir ileti ve bazı kodlarda details taşıyan bir error içerir.

404
{
  "error": {
    "code": "NOT_FOUND",
    "message": "No such vehicle"
  }
}
  • Her an UTC'dir ve ISO 8601 ile yazılır, örneğin 2026-11-04T08:00:00.000Z.
  • Her yolun bir sınırı vardır (rate limiting): bir yol isteklerinizi bir zaman penceresinde sayar, bir kopya ise bunun yerine üzerinden geçtiği öğeleri sayar. Sınır aşılınca yol 429 ve beklenecek saniyeyi söyleyen Retry-After ile yanıt verir.
  • Bir şeyi değiştiren yol gövdesini JSON olarak, Content-Type: application/json ile alır. Bir şey oluşturan yol oluşturduğunu 201 ile döner ve 8 ile 64 arası harf, rakam, tire ya da alt çizgiden oluşan bir Idempotency-Key başlığı alır: bir yanıt yolda kaybolursa aynı isteği aynı anahtarla yeniden gönderin; bir gün boyunca ikinci bir kayıt yerine ilk yanıtı, Idempotent-Replayed: true işaretiyle geri alırsınız. Aynı anahtar başka bir gövdeyle IDEMPOTENCY_KEY_REUSED döner. Bir değişiklik adını verdiği alanları gönderdiğiniz değere getirir, bu yüzden yeniden göndermek başka bir şey değiştirmez; bir silme 204 döner, kayıt gittikten sonra da 404. Her değişiklik, her anahtar ya da kişi için kendi sınırından düşer.
  • Sürüm 1 sözünü tutar: bir yanıta alan eklenebilir ve bir değer listesi büyüyebilir, ama hiçbir şey yeniden adlandırılmaz ya da kaldırılmaz. Tanımadığınızı atlayın: bir alanı da, görmediğiniz türden bir akış kaydını da.

Yollar

Araçlar ve konumlar

Araçlarınız, her birinin şu anki yeri, bir dönemdeki izi, geldikçe her konumun bir kopyası ve taşıdığı takip cihazları.

GET/api/v1/vehicles

Araçlarınız

Araçlarınız; her biri içine takılı takip cihazıyla, o cihazda araç kiti olup olmadığıyla ve paketinizin hâlâ gerektirdiği donanımla

İzinler
vehicle:readAraçları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Sonraki sayfayı istemek için önceki sayfanın page.next değeri; geldiği gibi gönderin (opaque cursor)

İstek · curl
curl "https://trackingen.com/api/v1/vehicles" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "label": "Delivery van",
      "vin": "VF1EXAMPLE0000001",
      "status": "active",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "kit": true,
      "missingCapabilities": []
    },
    {
      "id": "0199b000-0000-7000-8000-000000000002",
      "plate": "34 API 002",
      "label": null,
      "vin": null,
      "status": "active",
      "deviceId": null,
      "kit": false,
      "missingCapabilities": []
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

PATCH/api/v1/vehicles/{vehicleId}

Bir araca etiket verin

Bir araca kendi etiketinizi verir ya da onu kaldırır; plaka, VIN ve takip cihazı platformun tuttuğu gibi kalır. Aracı araç listenizin verdiği gibi döner ve akış değişikliği vehicle-changed olarak söyler.

İzinler
vehicle:labelAraç etiketini değiştirme
vehicle:readAraçları görme
Paket
Her paket
İstek sınırı
Dakikada 60 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • labelgövdestringzorunlu

    Kuruluşunuzun araca verdiği ad, düz metin; kaldırmak için null

İstek · curl
curl -X PATCH "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Cold chain van"}'
Yanıt · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000001",
    "plate": "34 API 001",
    "label": "Cold chain van",
    "vin": "VF1EXAMPLE0000001",
    "status": "active",
    "deviceId": "0199b000-0000-7000-8000-000000000401",
    "kit": true,
    "missingCapabilities": []
  }
}
Hata kodları

GET/api/v1/vehicles/{vehicleId}/installations

Bir aracın zaman içindeki takip cihazları

Araca her takip cihazı takılışı, en eskisi önce, ve ne zaman yeniden söküldüğü; hâlâ takılı olanın removedAt değeri yoktur

İzinler
vehicle:readAraçları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/installations" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000b01",
      "deviceId": "0199b000-0000-7000-8000-000000000402",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "installedAt": "2026-09-01T08:00:00.000Z",
      "removedAt": "2026-10-12T09:10:00.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000b02",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "installedAt": "2026-10-12T09:30:00.000Z",
      "removedAt": null
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

GET/api/v1/fleet/positions

En yeni konumlar

Her aracın en yeni konumu; araç ilk bildirimine kadar null

İzinler
position:readKonumları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
İstek · curl
curl "https://trackingen.com/api/v1/fleet/positions" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "label": "Delivery van",
      "position": {
        "recordedAt": "2026-11-04T08:41:12.000Z",
        "latitude": 41.068,
        "longitude": 29.011,
        "accuracyM": 4,
        "speedKmh": 52,
        "headingDeg": 87,
        "moving": true,
        "silentAt": "2026-11-04T08:56:12.000Z",
        "parkedSince": null
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000003",
      "plate": "34 API 003",
      "label": "Service car",
      "position": {
        "recordedAt": "2026-11-04T08:40:30.000Z",
        "latitude": 41.042,
        "longitude": 28.987,
        "accuracyM": 6,
        "speedKmh": 0,
        "headingDeg": null,
        "moving": false,
        "silentAt": "2026-11-04T08:55:30.000Z",
        "parkedSince": "2026-11-04T08:12:40.000Z"
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "plate": "34 API 002",
      "label": null,
      "position": null
    }
  ]
}
Hata kodları

GET/api/v1/vehicles/{vehicleId}/track

Bir aracın izi

Bir aracın bir andan diğerine konumları, en çok yedi gün

İzinler
position:readKonumları görme
Paket
Her paket
İstek sınırı
Dakikada 60 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/track?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "latitude": 41.068,
      "longitude": 29.011,
      "accuracyM": 4,
      "speedKmh": 52,
      "headingDeg": 87,
      "moving": true
    }
  ]
}
Hata kodları

GET/api/v1/positions

Konumları kopyalayın

Her aracın konumları alındıkları sırayla, son sayfanızın bittiği yerden, bir dakikalık olduklarında

İzinler
position:readKonumları görme
Paket
Her paket
İstek sınırı
Dakikada 120.000 öğe
Parametreler
  • aftersorgustring

    Kaldığı yerden sürdürmek için önceki sayfanın page.next değeri

  • fromsorgudate-time

    Bunun yerine buradan yeni bir kopya başlatın. Son 14 gün içindeyse hiçbir sınırdan düşmez; daha geriden, saklanan verileriniz içinde, her anahtar ya da kişi için günde 5 başlangıç hakkından düşer

  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 1000 arasıvarsayılan 1000

İstek · curl
curl "https://trackingen.com/api/v1/positions" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "serial": "EXAMPLE-0001",
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "receivedAt": "2026-11-04T08:41:44.000Z",
      "latitude": 41.068,
      "longitude": 29.011,
      "accuracyM": 4,
      "speedKmh": 52,
      "headingDeg": 87,
      "moving": true
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "deviceId": "0199b000-0000-7000-8000-000000000402",
      "serial": "EXAMPLE-0002",
      "recordedAt": "2026-11-04T08:12:30.000Z",
      "receivedAt": "2026-11-04T08:41:45.000Z",
      "latitude": 41.0712,
      "longitude": 29.0146,
      "accuracyM": 6,
      "speedKmh": 0,
      "headingDeg": null,
      "moving": false
    }
  ],
  "page": {
    "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE",
    "more": false
  }
}
Hata kodları

Takip cihazları

Platformun size verdiği takip cihazları, her birinin takılı olduğu araç, durumu ve şu an ters giden.

GET/api/v1/devices

Takip cihazlarınız

Platformun size verdiği takip cihazları, seri numaralarıyla ve her birinin şu an takılı olduğu araçla

İzinler
device:readCihazları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

İstek · curl
curl "https://trackingen.com/api/v1/devices" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000401",
      "serial": "356938035643809",
      "label": "Van tracker",
      "status": "active",
      "vehicleId": "0199b000-0000-7000-8000-000000000001"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000402",
      "serial": "356938035643817",
      "label": null,
      "status": "active",
      "vehicleId": null
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

GET/api/v1/devices/{deviceId}/health

Bir takip cihazının durumu

Takip cihazının kendisi hakkında en son söyledikleri: mobil sinyali, aracın beslemesi, uydu konumu ve ne zamandır çalıştığı. İlk kez söyleyene dek her alan null

İzinler
device:readCihazları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • deviceIdyoluuidzorunlu

    Takip cihazının kimliği, takip cihazlarınızdan

İstek · curl
curl "https://trackingen.com/api/v1/devices/0199b000-0000-7000-8000-000000000401/health" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "signalDbm": -71,
    "supplyMillivolts": 12600,
    "gnss": "fixed",
    "lastFixAt": "2026-11-04T08:39:40.000Z",
    "uptimeSeconds": 5400,
    "healthReportedAt": "2026-11-04T08:40:00.000Z",
    "lastReportAt": "2026-11-04T08:41:00.000Z"
  }
}
Hata kodları

GET/api/v1/devices/{deviceId}/health-alerts

Bir takip cihazının açık sağlık uyarıları

Takip cihazında şu an ters giden, sessiz kalmak gibi, her biri ne zamandan beri olduğuyla; bir şey yoksa boş

İzinler
device:readCihazları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • deviceIdyoluuidzorunlu

    Takip cihazının kimliği, takip cihazlarınızdan

İstek · curl
curl "https://trackingen.com/api/v1/devices/0199b000-0000-7000-8000-000000000401/health-alerts" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000a01",
      "condition": "silent",
      "since": "2026-11-03T18:20:00.000Z",
      "startedAt": "2026-11-04T18:20:00.000Z"
    }
  ]
}
Hata kodları

Şoförler

Araçlarınızı süren kişiler, rotalar için telefonları ve ehliyetleriyle. Rota planlama paketiyle gelirler.

GET/api/v1/drivers

Şoförleriniz

Etkin ve etkin olmayan şoförleriniz, telefonları ve ehliyetleriyle

İzinler
driver:readŞoförleri görme
Paket
Rota planlama
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

İstek · curl
curl "https://trackingen.com/api/v1/drivers" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000601",
      "name": "Ayşe Yılmaz",
      "phone": "+905321234567",
      "licenseNumber": "B1234567",
      "status": "active",
      "userId": null
    },
    {
      "id": "0199b000-0000-7000-8000-000000000602",
      "name": "Mehmet Demir",
      "phone": null,
      "licenseNumber": null,
      "status": "inactive",
      "userId": "0199b000-0000-7000-8000-000000000901"
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

POST/api/v1/drivers

Şoför ekleyin

Baştan etkin bir şoför ekler; rotalarınız ona verilebilir

İzinler
driver:createŞoför ekleme
Paket
Rota planlama
İstek sınırı
Dakikada 60 istek
Parametreler
  • Idempotency-Keybaşlıkstring

    Bu istek için kendi anahtarınız, 8 ile 64 arası harf, rakam, tire ya da alt çizgi. Yanıt kaybolunca isteği aynı anahtarla yeniden gönderin; ikinci bir kayıt yerine ilk yanıt geri gelir

  • namegövdestringzorunlu

    Şoförün adı soyadı, düz metin

  • phonegövdestring

    7 ile 15 haneli bir telefon numarası, başında + ve ülke koduyla ya da onlarsız; boşluk, parantez, nokta ve tireler atılır. Yoksa null

  • licenseNumbergövdestring

    Ehliyet numarası, büyük harfle saklanır; yoksa null

  • userIdgövdeuuid

    Şoförün rotalarını görmek için oturum açtığı kişinin hesap kimliği. Bir hesabı yalnızca oturum açmış bir kişi bağlar ya da çözer: bir anahtar bu alanı göndermez ya da değiştirmeden gönderir, yoksa PERSON_REQUIRED alır

İstek · curl
curl -X POST "https://trackingen.com/api/v1/drivers" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ayşe Yılmaz","phone":"+905321234567","licenseNumber":"B1234567"}'
Yanıt · 201
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000601",
    "name": "Ayşe Yılmaz",
    "phone": "+905321234567",
    "licenseNumber": "B1234567",
    "status": "active",
    "userId": null
  }
}
Hata kodları

PATCH/api/v1/drivers/{driverId}

Bir şoförü değiştirin

Gönderdiğiniz alanları değiştirir, gerisini korur. Etkin olmayan bir şoföre yeni rota verilmez ve hesabı artık rotalarını görmez.

İzinler
driver:updateŞoförleri düzenleme
driver:readŞoförleri görme
Paket
Rota planlama
İstek sınırı
Dakikada 60 istek
Parametreler
  • driverIdyoluuidzorunlu

    Şoförün kimliği, şoförlerinizden

  • namegövdestring

    Şoförün adı soyadı, düz metin

  • phonegövdestring

    7 ile 15 haneli bir telefon numarası, başında + ve ülke koduyla ya da onlarsız; boşluk, parantez, nokta ve tireler atılır. Yoksa null

  • licenseNumbergövdestring

    Ehliyet numarası, büyük harfle saklanır; yoksa null

  • statusgövdestring

    active ya da inactive. Bir hesaba bağlı sürücünün durumunu yalnızca oturum açmış bir kişi değiştirir, çünkü hesabın ne gördüğünü bu belirler: bir anahtar PERSON_REQUIRED alır

    activeinactive

  • userIdgövdeuuid

    Şoförün rotalarını görmek için oturum açtığı kişinin hesap kimliği. Bir hesabı yalnızca oturum açmış bir kişi bağlar ya da çözer: bir anahtar bu alanı göndermez ya da değiştirmeden gönderir, yoksa PERSON_REQUIRED alır

İstek · curl
curl -X PATCH "https://trackingen.com/api/v1/drivers/0199b000-0000-7000-8000-000000000601" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+905339876543","status":"active"}'
Yanıt · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000601",
    "name": "Ayşe Yılmaz",
    "phone": "+905339876543",
    "licenseNumber": "B1234567",
    "status": "active",
    "userId": null
  }
}
Hata kodları

Araç verileri

Araçlarınızın okudukları, en yenisi ve zaman içinde, her aracın verdiği sinyaller ve değişen ECU'ları.

GET/api/v1/vehicles/{vehicleId}/readings

En yeni okumalar

Bir aracın, takip cihazının okuduğu her sinyalin en yeni değeri

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • kindssorguarray

    Yanıtlanacak sinyal türleri, virgülle ayrılmış. Ölçüler, sayaçlar ve durumlar her zaman gelir; sözle verilen değerler için text ekleyin.

    measurecounterstatetext

  • signalssorguarray

    Yalnızca bu sinyaller, virgülle ayrılmış, en çok 32; her biri aracın sinyal listesinin saydığı bir ad. Türleri ne olursa olsun gelir.

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/readings" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "recordedAt": "2026-11-04T08:41:12.000Z",
    "readings": {
      "speed": 52,
      "engine-speed": 1726,
      "coolant-temperature": 88,
      "fuel-level": 63.5
    }
  }
}
Hata kodları

GET/api/v1/vehicles/{vehicleId}/readings/series

Zaman içinde okumalar

Bir aracın bir andan diğerine okumaları, en çok 240 dilimde, her sinyal kendi türüyle

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

  • kindssorguarray

    Yanıtlanacak sinyal türleri, virgülle ayrılmış. Ölçüler, sayaçlar ve durumlar her zaman gelir; sözle verilen değerler için text ekleyin.

    measurecounterstatetext

  • signalssorguarray

    Yalnızca bu sinyaller, virgülle ayrılmış, en çok 32; her biri aracın sinyal listesinin saydığı bir ad. Türleri ne olursa olsun gelir.

  • bucketSecondssorguinteger

    Bir dilimin saniye cinsinden uzunluğu: en az dönemin 240 parçaya bölünmüşü kadar, en çok dönemin tamamı. Verilmezse en kısası alınır.

    60 ile 2678400 arası

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/readings/series?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "from": "2026-11-04T08:00:00.000Z",
    "to": "2026-11-04T09:00:00.000Z",
    "bucketSeconds": 900,
    "quiet": [],
    "series": [
      {
        "signal": "speed",
        "kind": "measure",
        "unit": "km/h",
        "paceSeconds": 20,
        "rare": false,
        "points": [
          {
            "at": "2026-11-04T08:00:00.000Z",
            "low": 0,
            "high": 74,
            "mean": 41.2,
            "last": 52
          }
        ]
      },
      {
        "signal": "odometer",
        "kind": "counter",
        "unit": "km",
        "paceSeconds": 60,
        "rare": false,
        "points": [
          {
            "at": "2026-11-04T08:00:00.000Z",
            "low": 84211.4,
            "high": 84219.8,
            "last": 84219.8
          }
        ]
      },
      {
        "signal": "driver-working-state",
        "kind": "state",
        "paceSeconds": null,
        "rare": true,
        "points": [
          {
            "at": "2026-11-04T08:00:00.000Z",
            "state": "drive"
          }
        ]
      }
    ]
  }
}
Hata kodları

GET/api/v1/vehicles/{vehicleId}/signals

Bir aracın sinyalleri

Bir aracın takip cihazının okuduğu her sinyal: adı, her dildeki etiketleri, türü ve bir sayının birimi ile ondalık basamağı ya da bir durumun halleri

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/signals" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "signals": [
      {
        "name": "speed",
        "labels": {
          "tr": "Hız",
          "en": "Speed",
          "de": "Geschwindigkeit"
        },
        "base": true,
        "kind": "measure",
        "unit": "km/h",
        "decimals": 0
      },
      {
        "name": "fuel-level",
        "labels": {
          "tr": "Yakıt seviyesi",
          "en": "Fuel level",
          "de": "Tankfüllstand"
        },
        "base": true,
        "kind": "measure",
        "unit": "%",
        "decimals": 1
      },
      {
        "name": "odometer",
        "labels": {
          "tr": "Kilometre",
          "en": "Odometer",
          "de": "Kilometerstand"
        },
        "base": true,
        "kind": "counter",
        "unit": "km",
        "decimals": 1
      },
      {
        "name": "driver-working-state",
        "labels": {
          "tr": "Sürücü çalışma durumu",
          "en": "Driver working state",
          "de": "Arbeitszustand des Fahrers"
        },
        "base": false,
        "kind": "state",
        "states": [
          {
            "name": "rest",
            "labels": {
              "tr": "Dinlenme",
              "en": "Rest",
              "de": "Ruhezeit"
            }
          },
          {
            "name": "available",
            "labels": {
              "tr": "Hazır bekleme",
              "en": "Available",
              "de": "Bereitschaft"
            }
          },
          {
            "name": "work",
            "labels": {
              "tr": "Diğer iş",
              "en": "Other work",
              "de": "Andere Arbeit"
            }
          },
          {
            "name": "drive",
            "labels": {
              "tr": "Sürüş",
              "en": "Driving",
              "de": "Lenkzeit"
            }
          }
        ]
      }
    ]
  }
}
Hata kodları

GET/api/v1/fleet/readings

Filonun en yeni okumaları

Saydığınız sinyalleri okuyan her aracın en yeni değeri; tüm filo için tek istek

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120 istek
Parametreler
  • signalssorguarrayzorunlu

    Yanıtlanacak sinyaller, virgülle ayrılmış, en çok 32; her biri her araçta aynı anlama gelen bir ad

İstek · curl
curl "https://trackingen.com/api/v1/fleet/readings?signals=fuel-level" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "readings": {
        "fuel-level": 61.5
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "recordedAt": "2026-11-04T08:40:58.000Z",
      "readings": {
        "fuel-level": 24
      }
    }
  ]
}
Hata kodları

GET/api/v1/readings

Okumaları kopyalayın

Her aracın okumaları alındıkları sırayla, son sayfanızın bittiği yerden, bir dakikalık olduklarında. Bir sayfanın üzerinden geçtiği her satır sınıra sayılır; sinyallerinizden hiçbirini taşımadığı için dışarıda kalan da.

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120.000 öğe
Parametreler
  • aftersorgustring

    Kaldığı yerden sürdürmek için önceki sayfanın page.next değeri

  • fromsorgudate-time

    Bunun yerine buradan yeni bir kopya başlatın. Son 14 gün içindeyse hiçbir sınırdan düşmez; daha geriden, saklanan verileriniz içinde, her anahtar ya da kişi için günde 5 başlangıç hakkından düşer

  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 1000 arasıvarsayılan 1000

  • signalssorguarray

    Yalnızca bu sinyaller, virgülle ayrılmış, en çok 32; bir aracın sinyal listesinin verdiği adlarla

İstek · curl
curl "https://trackingen.com/api/v1/readings" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "deviceId": "0199b000-0000-7000-8000-000000000401",
      "serial": "EXAMPLE-0001",
      "recordedAt": "2026-11-04T08:41:12.000Z",
      "receivedAt": "2026-11-04T08:41:44.000Z",
      "readings": {
        "speed": 52,
        "engine-speed": 1840,
        "fuel-level": 61.5
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "deviceId": "0199b000-0000-7000-8000-000000000402",
      "serial": "EXAMPLE-0002",
      "recordedAt": "2026-11-04T08:40:58.000Z",
      "receivedAt": "2026-11-04T08:41:46.000Z",
      "readings": {
        "coolant-temperature": 88,
        "odometer": 84219.8
      }
    }
  ],
  "page": {
    "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE",
    "more": false
  }
}
Hata kodları

GET/api/v1/ecu-replacements

Değişen ECU'lar

Aynı aracın aynı adresinde seri numarası değişen her ECU, en yenisi önce; ECU'nun verdiği haliyle önceki ve sonraki seri numarası, onaltılık olarak

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Sonraki sayfayı istemek için önceki sayfanın page.next değeri; geldiği gibi gönderin (opaque cursor)

  • vehicleIdsorguuuid

    Yalnızca bu aracın değişen ECU'ları, kimliğiyle

İstek · curl
curl "https://trackingen.com/api/v1/ecu-replacements" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000701",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "ecu": {
        "tr": "Motor kontrol ünitesi",
        "en": "Engine control unit",
        "de": "Motorsteuergerät"
      },
      "address": 2016,
      "serialBefore": "3132333435363738",
      "serialAfter": "3132333435363739",
      "foundAt": "2026-11-04T08:12:30.000Z"
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

Yakıt

Her aracın yakıt ve AdBlue depoları, ve platformun onlarda bulduğu düşüşler ve dolumlar. Yakıt takibi paketiyle gelirler.

GET/api/v1/vehicles/{vehicleId}/fuel-tanks

Bir aracın yakıt depoları

Aracın yakıt ve AdBlue depoları; her biri platform biliyorsa hacmiyle ve aracın seviyesini verip vermediğiyle

İzinler
fuel:readYakıt düşüşlerini ve yakıt alımlarını görme
Paket
Yakıt takibi
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/fuel-tanks" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "tank": "fuel",
      "litres": 80,
      "given": true
    },
    {
      "tank": "def",
      "litres": null,
      "given": false
    }
  ]
}
Hata kodları

GET/api/v1/fuel-events

Yakıt düşüşleri ve dolumlar

Platformun bir depoda bulduğu her düşüş ve dolum, en yenisi önce; önceki ve sonraki seviyeyle ve bunun kaç litre ettiğiyle

İzinler
fuel:readYakıt düşüşlerini ve yakıt alımlarını görme
Paket
Yakıt takibi
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

  • vehicleIdsorguuuid

    Yalnızca bu aracın düşüşleri ve dolumları, kimliğiyle

  • kindsorgustring

    Yalnızca düşüşler, drop, ya da yalnızca dolumlar, refuel

    droprefuel

  • tanksorgustring

    Yalnızca bu deponunkiler: fuel, ya da AdBlue için def

    fueldef

İstek · curl
curl "https://trackingen.com/api/v1/fuel-events" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000901",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "tank": "fuel",
      "kind": "drop",
      "during": "parked",
      "levelBefore": 62,
      "levelAfter": 48,
      "litres": 11.2,
      "beforeAt": "2026-11-04T01:10:00.000Z",
      "afterAt": "2026-11-04T01:40:00.000Z",
      "detectedAt": "2026-11-04T01:52:00.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000902",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "tank": "fuel",
      "kind": "refuel",
      "during": "standing",
      "levelBefore": 48,
      "levelAfter": 95,
      "litres": 37.6,
      "beforeAt": "2026-11-04T07:05:00.000Z",
      "afterAt": "2026-11-04T07:14:00.000Z",
      "detectedAt": "2026-11-04T07:20:00.000Z"
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

GET/api/v1/fuel-events/{eventId}

Tek bir yakıt düşüşü ya da dolum

Listenin verdiği gibi bir düşüş ya da dolum; önceki seviye okunurken aracın durduğu yerle birlikte, position:read izni olmayan bir anahtar bunu görmez

İzinler
fuel:readYakıt düşüşlerini ve yakıt alımlarını görme
Paket
Yakıt takibi
İstek sınırı
Dakikada 120 istek
Parametreler
  • eventIdyoluuidzorunlu

    Düşüşün ya da dolumun kimliği, listeden

İstek · curl
curl "https://trackingen.com/api/v1/fuel-events/0199b000-0000-7000-8000-000000000901" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000901",
    "vehicleId": "0199b000-0000-7000-8000-000000000001",
    "plate": "34 API 001",
    "tank": "fuel",
    "kind": "drop",
    "during": "parked",
    "levelBefore": 62,
    "levelAfter": 48,
    "litres": 11.2,
    "beforeAt": "2026-11-04T01:10:00.000Z",
    "afterAt": "2026-11-04T01:40:00.000Z",
    "detectedAt": "2026-11-04T01:52:00.000Z",
    "place": {
      "latitude": 41.068,
      "longitude": 29.011
    }
  }
}
Hata kodları

Sürüşler ve raporlar

Her aracın rakamları ve puanıyla sürüşleri, sert hareketleri ve filonuzun bir dönemdeki raporları.

GET/api/v1/vehicles/{vehicleId}/drives

Bir aracın sürüşleri

Bir aracın bir andan diğerine başlayan sürüşleri, en çok 32 gün; rakamları hesaplandığında onlarla birlikte

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/drives?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000101",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "startedAt": "2026-11-04T07:58:40.000Z",
      "endedAt": "2026-11-04T08:41:12.000Z",
      "startedBy": "crank",
      "figures": {
        "drivingSeconds": 2350,
        "distance": {
          "km": 31.4,
          "by": "odometer"
        },
        "topSpeedKmh": 96,
        "fuel": {
          "litres": 2.6,
          "by": "counter"
        },
        "idleSeconds": 190,
        "highLoadSeconds": 240,
        "topCoolantC": 91,
        "topOilC": 104,
        "harshAccelerations": 1,
        "harshBrakings": 0
      },
      "score": {
        "value": 81,
        "band": "good",
        "parts": [
          {
            "figure": "harshBrakings",
            "value": 0,
            "points": 0
          },
          {
            "figure": "harshAccelerations",
            "value": 3.18,
            "points": 8
          },
          {
            "figure": "idleShare",
            "value": 0.074,
            "points": 5
          },
          {
            "figure": "highLoadShare",
            "value": 0.094,
            "points": 6
          }
        ]
      }
    }
  ]
}
Hata kodları

GET/api/v1/reports/fuel-distance

Yakıt ve mesafe raporu

Her aracın bir andan diğerine sürüşleri, mesafesi ve yakıtı, en çok bir yıl, ve toplamları

İzinler
vehicle:readAraçları görme
Paket
Her paket
İstek sınırı
Dakikada 30 istek
Parametreler
  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

İstek · curl
curl "https://trackingen.com/api/v1/reports/fuel-distance?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "includes": {
      "fuel": true,
      "fuelEvents": true
    },
    "vehicles": [
      {
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "label": "Delivery van",
        "drives": 42,
        "completed": 41,
        "drivingSeconds": 61200,
        "distanceKm": 1284.6,
        "trackKm": 12.3,
        "fuelLitres": 108.2,
        "litresPer100Km": 8.42,
        "fuelEvents": {
          "refuels": 2,
          "refuelLitres": 96.5,
          "drops": 0,
          "dropLitres": null
        }
      }
    ],
    "total": {
      "drives": 42,
      "completed": 41,
      "drivingSeconds": 61200,
      "distanceKm": 1284.6,
      "trackKm": 12.3,
      "fuelLitres": 108.2,
      "litresPer100Km": null,
      "fuelEvents": {
        "refuels": 2,
        "refuelLitres": 96.5,
        "drops": 0,
        "dropLitres": null
      }
    }
  }
}
Hata kodları

GET/api/v1/reports/driving

Sürüş tarzı raporu

Her aracın bir andan diğerine nasıl sürüldüğü, en çok bir yıl: rölanti, yüksek yük, sert hareketler ve en yüksek hız

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 30 istek
Parametreler
  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

İstek · curl
curl "https://trackingen.com/api/v1/reports/driving?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "vehicles": [
      {
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "label": "Delivery van",
        "drives": 42,
        "completed": 41,
        "drivingSeconds": 61200,
        "distanceKm": 1284.6,
        "idleSeconds": 5400,
        "idleShare": 0.088,
        "highLoadSeconds": 3100,
        "highLoadShare": 0.051,
        "harshAccelerations": {
          "count": 3,
          "per100Km": 0.23
        },
        "harshBrakings": {
          "count": 5,
          "per100Km": 0.39
        },
        "topSpeedKmh": 118,
        "score": {
          "value": 89,
          "band": "very-good",
          "parts": [
            {
              "figure": "harshBrakings",
              "value": 0.39,
              "points": 1
            },
            {
              "figure": "harshAccelerations",
              "value": 0.23,
              "points": 1
            },
            {
              "figure": "idleShare",
              "value": 0.088,
              "points": 6
            },
            {
              "figure": "highLoadShare",
              "value": 0.051,
              "points": 3
            }
          ]
        }
      }
    ],
    "total": {
      "drives": 42,
      "completed": 41,
      "drivingSeconds": 61200,
      "distanceKm": 1284.6,
      "idleSeconds": 5400,
      "idleShare": 0.088,
      "highLoadSeconds": 3100,
      "highLoadShare": 0.051,
      "harshAccelerations": {
        "count": 3,
        "per100Km": null
      },
      "harshBrakings": {
        "count": 5,
        "per100Km": null
      },
      "topSpeedKmh": 118,
      "score": {
        "value": 89,
        "band": "very-good",
        "parts": []
      }
    }
  }
}
Hata kodları

GET/api/v1/reports/power-take-off

Güç çıkışı raporu

Her aracın güç çıkışının bir andan diğerine ne kadar çalıştığı, en çok bir yıl

İzinler
vehicle:readAraçları görme
Paket
Güç çıkışı (PTO)
İstek sınırı
Dakikada 30 istek
Parametreler
  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

İstek · curl
curl "https://trackingen.com/api/v1/reports/power-take-off?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "vehicles": [
      {
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "label": "Delivery van",
        "drives": 42,
        "completed": 41,
        "drivingSeconds": 61200,
        "distanceKm": 1284.6,
        "powerTakeOffSeconds": 9000,
        "powerTakeOffShare": 0.147
      }
    ],
    "total": {
      "drives": 42,
      "completed": 41,
      "drivingSeconds": 61200,
      "distanceKm": 1284.6,
      "powerTakeOffSeconds": 9000,
      "powerTakeOffShare": 0.147
    }
  }
}
Hata kodları

GET/api/v1/vehicles/{vehicleId}/harsh-moves

Bir aracın sert hareketleri

Bir aracın bir andan diğerine sert hızlanmaları ve frenlemeleri, en çok 32 gün, en eskisi önce: her birinin en sert olduğu an, m/s² cinsinden ne kadar sert olduğu, başladığı ve bittiği hız ve biliniyorsa nerede olduğu. Yalnızca bir sürüşün sert hareketlerini sayan eşikler kadar sert olanlar gelir.

İzinler
vehicle:readAraçları görme
position:readKonumları görme
Paket
Araç verisi
İstek sınırı
Dakikada 120 istek
Parametreler
  • vehicleIdyoluuidzorunlu

    Aracın kimliği, araç listenizden

  • fromsorgudate-timezorunlu

    Dönemin ilk anı

  • tosorgudate-timezorunlu

    Dönemin son anı

İstek · curl
curl "https://trackingen.com/api/v1/vehicles/0199b000-0000-7000-8000-000000000001/harsh-moves?from=2026-11-04T08:00:00.000Z&to=2026-11-04T09:00:00.000Z" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "kind": "acceleration",
      "peakAt": "2026-11-04T08:03:12.000Z",
      "peakMs2": 3.4,
      "fromKmh": 0,
      "toKmh": 41,
      "place": {
        "latitude": 41.0151,
        "longitude": 28.9793
      }
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "kind": "braking",
      "peakAt": "2026-11-04T08:12:31.000Z",
      "peakMs2": 4.6,
      "fromKmh": 87,
      "toKmh": 52,
      "place": null
    }
  ]
}
Hata kodları

Arıza kodları

Araçlarınızın bildirdiği arıza kodları anlamlarıyla, ve her araçta kaçının hâlâ açık olduğu.

GET/api/v1/fleet/open-faults

Araç başına açık arıza

Her araçta hâlâ açık olan arıza sayısı; tüm filo için tek istek, arızası olmayan araç listede yer almaz

İzinler
fault:readAraç arızalarını görme
Paket
Araç arızaları
İstek sınırı
Dakikada 120 istek
İstek · curl
curl "https://trackingen.com/api/v1/fleet/open-faults" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "open": 2
    },
    {
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "open": 1
    }
  ]
}
Hata kodları

GET/api/v1/vehicle-faults

Arıza kodları

Arıza kodlarınız, en yenisi önce; her biri anlamıyla ve onu bildiren araç parçasıyla

İzinler
fault:readAraç arızalarını görme
Paket
Araç arızaları
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Sonraki sayfayı istemek için önceki sayfanın page.next değeri; geldiği gibi gönderin (opaque cursor)

  • vehicleIdsorguuuid

    Yalnızca bu aracın arıza kodları, kimliğiyle

İstek · curl
curl "https://trackingen.com/api/v1/vehicle-faults" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000601",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "code": "P0301",
      "system": "powertrain",
      "meaning": {
        "tr": "Silindir 1 ateşleme hatası algılandı",
        "en": "Cylinder 1 misfire detected",
        "de": "Zylinder 1 Fehlzündung erkannt"
      },
      "ecu": {
        "tr": "Motor kontrol ünitesi",
        "en": "Engine control unit",
        "de": "Motorsteuergerät"
      },
      "clearable": false,
      "status": "stored",
      "appearedAt": "2026-11-04T08:12:30.000Z",
      "clearedAt": null,
      "clearingRefusal": null,
      "clearingWarning": null
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

Geofence'ler

Haritada çizdiğiniz, girişleri ve çıkışları akışta söylenen yerler, kaçını tutabileceğiniz ve her aracın onlardaki kalışları.

GET/api/v1/geofences

Geofence'leriniz

Geofence'leriniz; her biri biçimi, neyi söylediği ve içinde kaç araç olduğuyla

İzinler
geofence:readGeofence'leri görme; kalışlar ve bildirimleri için Konumları görme de gerekir
Paket
Geofence
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

İstek · curl
curl "https://trackingen.com/api/v1/geofences" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000701",
      "name": "Depot",
      "shape": {
        "kind": "circle",
        "center": {
          "latitude": 41.0681,
          "longitude": 29.0109
        },
        "radiusMeters": 250
      },
      "tellEntries": true,
      "tellExits": true,
      "inside": 2,
      "createdAt": "2026-11-02T07:30:00.000Z",
      "shapedAt": "2026-11-02T07:30:00.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000702",
      "name": "Harbour gate",
      "shape": {
        "kind": "polygon",
        "corners": [
          {
            "latitude": 40.9921,
            "longitude": 29.0241
          },
          {
            "latitude": 40.9934,
            "longitude": 29.0263
          },
          {
            "latitude": 40.9917,
            "longitude": 29.0279
          }
        ]
      },
      "tellEntries": true,
      "tellExits": false,
      "inside": 0,
      "createdAt": "2026-11-03T09:12:00.000Z",
      "shapedAt": "2026-11-04T06:45:00.000Z"
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

POST/api/v1/geofences

Bir geofence çizin

Bir geofence çizer; giren ve çıkan araçlar o andan itibaren değerlendirilir. Geofence çizmek, değiştirmek ve kaldırmak ayrıca tüm kuruluşunuz için birlikte dakikada 60 hakkından düşer.

İzinler
geofence:configureGeofence çizme ve değiştirme
Paket
Geofence
İstek sınırı
Dakikada 60 istek
Parametreler
  • Idempotency-Keybaşlıkstring

    Bu istek için kendi anahtarınız, 8 ile 64 arası harf, rakam, tire ya da alt çizgi. Yanıt kaybolunca isteği aynı anahtarla yeniden gönderin; ikinci bir kayıt yerine ilk yanıt geri gelir

  • namegövdestringzorunlu

    Geofence için bir ad, düz metin, büyük küçük harf ne olursa olsun geofence'leriniz arasında tek

  • shapegövdeobjectzorunlu

    Bir daire, {kind: circle, center, radiusMeters}, ya da bir çokgen, {kind: polygon, corners}; her yer derece cinsinden {latitude, longitude}. Kaç köşe ve ne büyüklükte yarıçap çizebileceğinizi geofence sınırları yolu söyler

  • tellEntriesgövdeboolean

    Giren bir aracın ekibinize bildirimle ve akışta geofence-entered olarak söylenip söylenmeyeceği; yeni bir geofence'te gönderilmezse true

  • tellExitsgövdeboolean

    Çıkan bir aracın bildirimle ve akışta geofence-left olarak söylenip söylenmeyeceği; yeni bir geofence'te gönderilmezse true

İstek · curl
curl -X POST "https://trackingen.com/api/v1/geofences" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Depot","shape":{"kind":"circle","center":{"latitude":41.0681,"longitude":29.0109},"radiusMeters":250},"tellExits":true}'
Yanıt · 201
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000701",
    "name": "Depot",
    "shape": {
      "kind": "circle",
      "center": {
        "latitude": 41.0681,
        "longitude": 29.0109
      },
      "radiusMeters": 250
    },
    "tellEntries": true,
    "tellExits": true,
    "inside": 0,
    "createdAt": "2026-11-02T07:30:00.000Z",
    "shapedAt": "2026-11-02T07:30:00.000Z"
  }
}
Hata kodları

GET/api/v1/geofences/{geofenceId}

Bir geofence

Tek bir geofence, geofence listenizin verdiği gibi

İzinler
geofence:readGeofence'leri görme; kalışlar ve bildirimleri için Konumları görme de gerekir
Paket
Geofence
İstek sınırı
Dakikada 120 istek
Parametreler
  • geofenceIdyoluuidzorunlu

    Geofence'in kimliği, geofence'lerinizden

İstek · curl
curl "https://trackingen.com/api/v1/geofences/0199b000-0000-7000-8000-000000000701" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000701",
    "name": "Depot",
    "shape": {
      "kind": "circle",
      "center": {
        "latitude": 41.0681,
        "longitude": 29.0109
      },
      "radiusMeters": 250
    },
    "tellEntries": true,
    "tellExits": true,
    "inside": 2,
    "createdAt": "2026-11-02T07:30:00.000Z",
    "shapedAt": "2026-11-02T07:30:00.000Z"
  }
}
Hata kodları

PATCH/api/v1/geofences/{geofenceId}

Bir geofence'i değiştirin

Gönderdiğiniz alanları değiştirir, gerisini korur. Yeni bir biçim çizildiği andan itibaren değerlendirilir. Geofence çizmek, değiştirmek ve kaldırmak ayrıca tüm kuruluşunuz için birlikte dakikada 60 hakkından düşer.

İzinler
geofence:configureGeofence çizme ve değiştirme
geofence:readGeofence'leri görme; kalışlar ve bildirimleri için Konumları görme de gerekir
Paket
Geofence
İstek sınırı
Dakikada 60 istek
Parametreler
  • geofenceIdyoluuidzorunlu

    Geofence'in kimliği, geofence'lerinizden

  • namegövdestring

    Geofence için bir ad, düz metin, büyük küçük harf ne olursa olsun geofence'leriniz arasında tek

  • shapegövdeobject

    Bir daire, {kind: circle, center, radiusMeters}, ya da bir çokgen, {kind: polygon, corners}; her yer derece cinsinden {latitude, longitude}. Kaç köşe ve ne büyüklükte yarıçap çizebileceğinizi geofence sınırları yolu söyler

  • tellEntriesgövdeboolean

    Giren bir aracın ekibinize bildirimle ve akışta geofence-entered olarak söylenip söylenmeyeceği; yeni bir geofence'te gönderilmezse true

  • tellExitsgövdeboolean

    Çıkan bir aracın bildirimle ve akışta geofence-left olarak söylenip söylenmeyeceği; yeni bir geofence'te gönderilmezse true

İstek · curl
curl -X PATCH "https://trackingen.com/api/v1/geofences/0199b000-0000-7000-8000-000000000701" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tellExits":false}'
Yanıt · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000701",
    "name": "Depot",
    "shape": {
      "kind": "circle",
      "center": {
        "latitude": 41.0681,
        "longitude": 29.0109
      },
      "radiusMeters": 250
    },
    "tellEntries": true,
    "tellExits": false,
    "inside": 2,
    "createdAt": "2026-11-02T07:30:00.000Z",
    "shapedAt": "2026-11-02T07:30:00.000Z"
  }
}
Hata kodları

DELETE/api/v1/geofences/{geofenceId}

Bir geofence'i kaldırın

Bir geofence'i kaldırır: içindeki araçlar artık değerlendirilmez, kalışları söylenmeden biter ve geçmiş kalışları geçmişte kalır. Geofence çizmek, değiştirmek ve kaldırmak ayrıca tüm kuruluşunuz için birlikte dakikada 60 hakkından düşer.

İzinler
geofence:configureGeofence çizme ve değiştirme
Paket
Geofence
İstek sınırı
Dakikada 60 istek
Parametreler
  • geofenceIdyoluuidzorunlu

    Geofence'in kimliği, geofence'lerinizden

İstek · curl
curl -X DELETE "https://trackingen.com/api/v1/geofences/0199b000-0000-7000-8000-000000000701" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"

204Tamam; yanıtın gövdesi yok.

Hata kodları

GET/api/v1/geofence-limits

Geofence sınırları

Kaç geofence tutabileceğiniz ve şu an kaç tane tuttuğunuz, bir çokgenin en çok kaç köşesi olabileceği ve bir dairenin en küçük ve en büyük yarıçapı

İzinler
geofence:readGeofence'leri görme; kalışlar ve bildirimleri için Konumları görme de gerekir
Paket
Geofence
İstek sınırı
Dakikada 120 istek
İstek · curl
curl "https://trackingen.com/api/v1/geofence-limits" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "geofencesMax": 100,
    "geofencesUsed": 2,
    "cornersMax": 50,
    "radiusMinMeters": 50,
    "radiusMaxMeters": 30000
  }
}
Hata kodları

GET/api/v1/geofence-stays

Geofence'lerdeki kalışlar

Bir aracın bir geofence içinde olduğu her süre, girdiği andan çıktığı ana, en yenisi önce; süren bir kalışın sonu yoktur

İzinler
geofence:readGeofence'leri görme; kalışlar ve bildirimleri için Konumları görme de gerekir
position:readKonumları görme
Paket
Geofence
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

  • vehicleIdsorguuuid

    Yalnızca bu aracın kalışları, kimliğiyle

  • geofenceIdsorguuuid

    Yalnızca bu geofence'teki kalışlar, kimliğiyle

  • insidesorgustring

    Yalnızca süren kalışlar için true

    truefalse

İstek · curl
curl "https://trackingen.com/api/v1/geofence-stays" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000302",
      "geofenceId": "0199b000-0000-7000-8000-000000000701",
      "geofence": "Depot",
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "plate": "34 API 002",
      "start": "entered",
      "startedAt": "2026-11-04T06:02:10.000Z",
      "end": "left",
      "endedAt": "2026-11-04T08:43:58.000Z"
    },
    {
      "id": "0199b000-0000-7000-8000-000000000303",
      "geofenceId": "0199b000-0000-7000-8000-000000000701",
      "geofence": "Depot",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "start": "already-inside",
      "startedAt": "2026-11-02T07:30:00.000Z",
      "end": null,
      "endedAt": null
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

Uyarılar

Bir aracın okuması bir eşiği geçince uyarı veren kurallar, bir kuralın izleyebileceği sinyaller ve verilen uyarılar.

GET/api/v1/alert-rules

Uyarı kurallarınız

Açık ve kapalı uyarı kurallarınız ve bir kuralın izleyebileceği her sinyal; aldığı eşiklerle ve paketinizin şu an bir kuralın onu izlemesine izin verip vermediğiyle

İzinler
alert:readUyarıları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
İstek · curl
curl "https://trackingen.com/api/v1/alert-rules" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": {
    "rules": [
      {
        "id": "0199b000-0000-7000-8000-000000000201",
        "name": "Engine running hot",
        "signal": "coolant-temperature",
        "comparison": "above",
        "threshold": 105,
        "unit": "°C",
        "holdSeconds": 60,
        "on": true
      },
      {
        "id": "0199b000-0000-7000-8000-000000000202",
        "name": "Battery running low",
        "signal": "battery-low",
        "comparison": "below",
        "threshold": null,
        "unit": "V",
        "holdSeconds": 300,
        "on": false
      }
    ],
    "signals": [
      {
        "signal": "coolant-temperature",
        "unit": "°C",
        "threshold": {
          "by": "customer",
          "min": 40,
          "max": 130,
          "step": 1
        },
        "usable": true
      },
      {
        "signal": "battery-low",
        "unit": "V",
        "threshold": {
          "by": "platform",
          "comparison": "below"
        },
        "usable": true
      }
    ]
  }
}
Hata kodları

POST/api/v1/alert-rules

Uyarı kuralı ekleyin

Baştan açık bir kural ekler: sinyali bekleme süresi boyunca eşiğin ötesinde kalan bir araç uyarı verir; ekibinize ve akışta vehicle-alert olarak söylenir. Uyarı kuralı eklemek ve değiştirmek ayrıca tüm kuruluşunuz için birlikte günde 100 hakkından düşer.

İzinler
alert:configureUyarı kurallarını belirleme
Paket
Her paket
İstek sınırı
Dakikada 60 istek
Parametreler
  • Idempotency-Keybaşlıkstring

    Bu istek için kendi anahtarınız, 8 ile 64 arası harf, rakam, tire ya da alt çizgi. Yanıt kaybolunca isteği aynı anahtarla yeniden gönderin; ikinci bir kayıt yerine ilk yanıt geri gelir

  • namegövdestringzorunlu

    Kural için bir ad, düz metin, her uyarıyla gösterilir

  • signalgövdestringzorunlu

    Kuralın izlediği sinyal: uyarı kuralları listesinin saydığı sinyallerden biri ya da battery-low

  • comparisongövdestringzorunlu

    above ya da below: uyarının eşiğin hangi yanında olduğu

    abovebelow

  • thresholdgövdestringzorunlu

    Sinyalin geçmesi gereken değer; uyarı kuralları listesinin verdiği aralıkta ve adımlarla. Eşiğini platformun koyduğu battery-low için null

  • holdSecondsgövdeintegerzorunlu

    Uyarı verilmeden önce sinyalin eşiğin ötesinde kaç tam saniye kalacağı; 0 hemen uyarı verir

    0 ile 3600 arası

İstek · curl
curl -X POST "https://trackingen.com/api/v1/alert-rules" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"Engine running hot","signal":"coolant-temperature","comparison":"above","threshold":105,"holdSeconds":60}'
Yanıt · 201
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000201",
    "name": "Engine running hot",
    "signal": "coolant-temperature",
    "comparison": "above",
    "threshold": 105,
    "unit": "°C",
    "holdSeconds": 60,
    "on": true
  }
}
Hata kodları

PATCH/api/v1/alert-rules/{ruleId}

Bir uyarı kuralını değiştirin

Gönderdiğiniz alanları değiştirir, gerisini korur ve kuralı açar ya da kapatır. Uyarı kuralı eklemek ve değiştirmek ayrıca tüm kuruluşunuz için birlikte günde 100 hakkından düşer.

İzinler
alert:configureUyarı kurallarını belirleme
alert:readUyarıları görme
Paket
Her paket
İstek sınırı
Dakikada 60 istek
Parametreler
  • ruleIdyoluuidzorunlu

    Kuralın kimliği, uyarı kurallarınızdan

  • namegövdestring

    Kural için bir ad, düz metin, her uyarıyla gösterilir

  • signalgövdestring

    Kuralın izlediği sinyal: uyarı kuralları listesinin saydığı sinyallerden biri ya da battery-low

  • comparisongövdestring

    above ya da below: uyarının eşiğin hangi yanında olduğu

    abovebelow

  • thresholdgövdestring

    Sinyalin geçmesi gereken değer; uyarı kuralları listesinin verdiği aralıkta ve adımlarla. Eşiğini platformun koyduğu battery-low için null

  • holdSecondsgövdeinteger

    Uyarı verilmeden önce sinyalin eşiğin ötesinde kaç tam saniye kalacağı; 0 hemen uyarı verir

    0 ile 3600 arası

  • ongövdeboolean

    Kuralın uyarı verip vermediği; aynı anda açık olabilecek kurallar doluyken birini açmak ALERT_RULE_LIMIT döner

İstek · curl
curl -X PATCH "https://trackingen.com/api/v1/alert-rules/0199b000-0000-7000-8000-000000000201" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"threshold":110,"on":true}'
Yanıt · 200
{
  "data": {
    "id": "0199b000-0000-7000-8000-000000000201",
    "name": "Engine running hot",
    "signal": "coolant-temperature",
    "comparison": "above",
    "threshold": 110,
    "unit": "°C",
    "holdSeconds": 60,
    "on": true
  }
}
Hata kodları

DELETE/api/v1/alert-rules/{ruleId}

Bir uyarı kuralını kaldırın

Bir kuralı kaldırır; verdiği uyarılar uyarı geçmişinde kalır

İzinler
alert:configureUyarı kurallarını belirleme
Paket
Her paket
İstek sınırı
Dakikada 60 istek
Parametreler
  • ruleIdyoluuidzorunlu

    Kuralın kimliği, uyarı kurallarınızdan

İstek · curl
curl -X DELETE "https://trackingen.com/api/v1/alert-rules/0199b000-0000-7000-8000-000000000201" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"

204Tamam; yanıtın gövdesi yok.

Hata kodları

GET/api/v1/alert-episodes

Verilen uyarılar

Bir aracın okumasının bir uyarı kuralının eşiğini her geçişi, en yenisi önce; ne kadar ötesine gittiği, ne kadar sürdüğü ve position:read izni olan bir anahtara nerede başladığıyla

İzinler
alert:readUyarıları görme
Paket
Her paket
İstek sınırı
Dakikada 120 istek
Parametreler
  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 100 arasıvarsayılan 50

  • aftersorgustring

    Önceki sayfanın page.next değeri, sonraki sayfayı istemek için; geldiği gibi gönderin (opak imleç)

  • vehicleIdsorguuuid

    Yalnızca bu aracın uyarıları, kimliğiyle

İstek · curl
curl "https://trackingen.com/api/v1/alert-episodes" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000301",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "plate": "34 API 001",
      "name": "Engine running hot",
      "signal": "coolant-temperature",
      "comparison": "above",
      "threshold": 105,
      "unit": "°C",
      "peak": 112.5,
      "startedAt": "2026-11-04T08:41:12.000Z",
      "durationSeconds": 95,
      "place": {
        "latitude": 41.068,
        "longitude": 29.011
      }
    }
  ],
  "page": {
    "next": null
  }
}
Hata kodları

Akış

Filonuzda olanlar ve araçlarınızda, cihazlarınızda ve paketinizde değişenler, tek bir sırayla.

GET/api/v1/feed

Akış

Filonuzda olanlar yazıldıkları sırayla, son sayfanızın bittiği yerden, bir dakikalık olduklarında ve 14 gün boyunca. Her kaydın bir türü vardır; neyle ilgili olduğunu o şeyin kendi listesinin verdiği biçimde taşır ve hemen ardından sürdürmek için bir imleci vardır. Her tür kendi iznini ister; position:read olmadan bir kaydın yeri boş gelir. Araç verisi paketi olmadan bir sürüş, aracın sürüş listesindeki gibi yalnızca sürüş süresi ve mesafesiyle gelir. Zamanla yeni türler gelebilir; tanımadığınız türden bir kaydı atlayın ve imlecinden sonra sürdürün.

İzinler
alert:readUyarıları görme
device:readCihazları görme
fault:readAraç arızalarını görme
fuel:readYakıt düşüşlerini ve yakıt alımlarını görme
geofence:readGeofence'leri görme; kalışlar ve bildirimleri için Konumları görme de gerekir
package:readPaketi ve fiyatını görme
position:readKonumları görme
vehicle:readAraçları görme
Paket
Her paket
İstek sınırı
Dakikada 120.000 öğe
Türler

Filonuzda olanlar

  • vehicle-silentvehicle:read
  • vehicle-heard-againvehicle:read
  • vehicle-faultsfault:readAraç arızaları
  • vehicle-alertalert:read
  • geofence-enteredgeofence:readposition:readGeofence
  • geofence-leftgeofence:readposition:readGeofence
  • fuel-dropfuel:readYakıt takibi
  • refuelfuel:readYakıt takibi
  • health-alertdevice:readvehicle:read
  • health-alert-endeddevice:readvehicle:read
  • drive-completedvehicle:readposition:read
  • ecu-replacedvehicle:readposition:readAraç verisi

Araçlarınızda, cihazlarınızda ve paketinizde değişenler

  • vehicle-addedvehicle:read
  • vehicle-changedvehicle:read
  • device-assigneddevice:read
  • device-installeddevice:readvehicle:read
  • device-removeddevice:readvehicle:read
  • feature-switchedpackage:read
  • retention-changedpackage:read
  • retention-appliedpackage:read
Parametreler
  • aftersorgustring

    Kaldığı yerden sürdürmek için önceki sayfanın page.next değeri

  • fromsorgudate-time

    Bunun yerine buradan başlayın, en çok 14 gün geriden

  • limitsorguinteger

    Bir sayfada en çok kaç tane geleceği

    1 ile 1000 arasıvarsayılan 1000

  • kindssorguarray

    Yalnızca bu türlerin kayıtları, virgülle ayrılmış. Verilmezse okuyabileceğiniz her tür gelir; okuyamayacağınız bir tür reddedilir.

    vehicle-silentvehicle-heard-againvehicle-faultsvehicle-alertgeofence-enteredgeofence-leftfuel-droprefuelhealth-alerthealth-alert-endeddrive-completedecu-replacedvehicle-addedvehicle-changeddevice-assigneddevice-installeddevice-removedfeature-switchedretention-changedretention-applied

  • waitSecondssorguinteger

    Hazır bir şey yoksa bir sonraki kaydı en çok bu kadar saniye bekleyin; platform daha kısa bekleyebilir. 0 hemen yanıtlar.

    0 ile 30 arasıvarsayılan 0

İstek · curl
curl "https://trackingen.com/api/v1/feed" \
  -H "Authorization: Bearer $TRACKINGEN_API_KEY"
Yanıt · 200
{
  "data": [
    {
      "id": "0199b000-0000-7000-8000-000000000801",
      "kind": "vehicle-alert",
      "cursor": "Wm3kQ9vXEXAMPLE.Pz7cR2EXAMPLE",
      "customerId": "0199b000-0000-7000-8000-000000000501",
      "vehicleId": "0199b000-0000-7000-8000-000000000001",
      "writtenAt": "2026-11-04T08:43:05.000Z",
      "subject": {
        "id": "0199b000-0000-7000-8000-000000000301",
        "vehicleId": "0199b000-0000-7000-8000-000000000001",
        "plate": "34 API 001",
        "name": "Engine running hot",
        "signal": "coolant-temperature",
        "comparison": "above",
        "threshold": 105,
        "unit": "°C",
        "peak": 112.5,
        "startedAt": "2026-11-04T08:41:12.000Z",
        "durationSeconds": 95,
        "place": {
          "latitude": 41.068,
          "longitude": 29.011
        }
      }
    },
    {
      "id": "0199b000-0000-7000-8000-000000000802",
      "kind": "geofence-left",
      "cursor": "Hn4wLp9vEXAMPLE.Qe8tY1EXAMPLE",
      "customerId": "0199b000-0000-7000-8000-000000000501",
      "vehicleId": "0199b000-0000-7000-8000-000000000002",
      "writtenAt": "2026-11-04T08:44:30.000Z",
      "subject": {
        "id": "0199b000-0000-7000-8000-000000000302",
        "geofenceId": "0199b000-0000-7000-8000-000000000701",
        "geofence": "Depot",
        "vehicleId": "0199b000-0000-7000-8000-000000000002",
        "plate": "34 API 002",
        "start": "entered",
        "startedAt": "2026-11-04T06:02:10.000Z",
        "end": "left",
        "endedAt": "2026-11-04T08:43:58.000Z"
      }
    }
  ],
  "page": {
    "next": "q8Xr2vKmT0EXAMPLE.Hn4wLp9EXAMPLE",
    "more": false
  }
}
Hata kodları

Webhook'lar

Webhook, akışın kayıtlarını oturdukça kendi https adresinize gönderir; sisteminiz bir uyarıyı, aşılan bir geofence'i ya da tamamlanan bir sürüşü sormadan öğrenir. Akışın itilmiş hâlidir: aynı kayıtlar, aynı sırayla, aynı imleçlerle.

  • Webhook'u panelde, Yönetim'in altında Webhook'lar'da, bir kişi parolasıyla kaydeder; bir API anahtarı asla kaydetmez ve ekibinizi yöneten herkes yenisinden haberdar olur. Gönderilecek türleri ve konumları görüp görmeyeceğini seçin. Bir webhook tek bir kişiye, onu kaydedene ya da en son denetleyene bağlıdır ve o kişinin okuyabileceğinden fazlasını hiçbir zaman tutmaz: her gönderim o kişinin şimdi neyi okuyabildiğini, kuruluşunuzda API paketinin bulunduğunu ve webhook'un kaydın türünü okuyabildiğini yeniden denetler, böylece kapatılan bir özellik kendi türlerini durdurur. O kişi ayrıldığında ya da artık API anahtarlarını yönetemediğinde webhook durur ve API anahtarlarınızı yönetenlere haber verilir. Adresi o kişinin gördüğü sırrı hâlâ tuttuğundan bir daha denetlenmez: onu kaldırın ve yeni bir sır getiren yenisini kaydedin. Yalnızca başarısızlıkları yüzünden duran bir webhook'u başka biri denetlerse sorumlusu o olur. Konumsuz bir webhook'ta bir uyarının konumu, akışın position:read olmadan verdiği gibi null'dır. whsec_ ile başlayan imza sırrı yalnızca bir kez görünür; onu mühürlü tutarız.
  • Adres, herkese açık bir alan adı altında 443 numaralı porttan https'tir. Adı çözeriz; verdiği adreslerden biri bile özel, loopback, link-local, paylaşılan ya da başka biçimde herkese açık değilse, IPv4'te ya da herhangi bir IPv6 biçiminde, reddederiz; sonra tam o adrese bağlanır ve sertifikasını adla denetleriz.

Bir şey gönderilmeden önce adresi panelde denetleyin. Ona imzalı bir meydan okuma göndeririz; adres 2xx ile, answer alanı meydan okumanın sırla, bir imzadaki gibi anahtarlanmış HMAC-SHA256'sının base64 hâli olan bir JSON ile yanıtlar; bu, sırrı tuttuğunu kanıtlar. Denetimi geçmemiş bir webhook'a hiçbir şey gönderilmez; duran bir webhook, denetimi yeniden geçince kaldığı yerden devam eder.

Meydan okuma
POST /your/path HTTP/1.1
Host: hooks.example.com
Content-Type: application/json
webhook-id: 0199b000-0000-7000-8000-000000000990
webhook-timestamp: 1762245785
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDNEXAMPLE=

{"challenge":"q8XbT0hZx2vYmR4cEXAMPLE"}
Yanıtınız
HTTP/1.1 200 OK
Content-Type: application/json

{"answer":"kOcc0/V1k6uRAwpp/m/bzF5VAhPZm7t/QXJRO0qG5ZY="}

Her gönderim, gövdesi tek bir akış kaydı olan tek bir POST'tur: kayıt, GET /api/v1/feed'in listelediği gibi, imleciyle birlikte gelir. Kayıtlar akışın sırasıyla, her webhook için birer birer, olduktan en az bir dakika sonra gider ve adresiniz alana kadar yeniden gönderilir (at-least-once delivery); bu yüzden her birini id'siyle saklayın. webhook-id, kaydın id'sidir. Bilmediğiniz bir türü atlayın.

Gönderim
POST /your/path HTTP/1.1
Host: hooks.example.com
Content-Type: application/json
webhook-id: 0199b000-0000-7000-8000-000000000801
webhook-timestamp: 1762245785
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDNEXAMPLE=

{
  "id": "0199b000-0000-7000-8000-000000000801",
  "kind": "vehicle-alert",
  "cursor": "Wm3kQ9vXEXAMPLE.Pz7cR2EXAMPLE",
  "customerId": "0199b000-0000-7000-8000-000000000501",
  "vehicleId": "0199b000-0000-7000-8000-000000000001",
  "writtenAt": "2026-11-04T08:43:05.000Z",
  "subject": {
    "id": "0199b000-0000-7000-8000-000000000301",
    "vehicleId": "0199b000-0000-7000-8000-000000000001",
    "plate": "34 API 001",
    "name": "Engine running hot",
    "signal": "coolant-temperature",
    "comparison": "above",
    "threshold": 105,
    "unit": "°C",
    "peak": 112.5,
    "startedAt": "2026-11-04T08:41:12.000Z",
    "durationSeconds": 95,
    "place": {
      "latitude": 41.068,
      "longitude": 29.011
    }
  }
}

Her gönderim ve meydan okuma, webhook'un kendi sırrıyla, Standard Webhooks başlıklarına uyularak imzalanır; böylece onun kütüphaneleri de denetleyebilir. İmzalanan içerik: webhook-id, bir nokta, webhook-timestamp, bir nokta ve ham gövde. whsec_'den sonraki kısmın base64 çözülmüş hâliyle anahtarlanan HMAC-SHA256'sı, webhook-signature'da v1,'den sonra base64 olarak durur; başlık boşlukla ayrılmış birden çok imza taşıyabilir. Gövdeyi ayrıştırmadan önce, geldiği hâliyle, sabit zamanlı karşılaştırın.

webhook-timestamp, onu gönderdiğimiz andır; 1970 UTC'den bu yana saniye. Zaman damgası saatinizden 300 saniyeden fazla uzak olan bir gönderimi geri çevirin ve bir tekrarı geri çevirmek için o pencerede aldığınız webhook-id değerlerini saklayın.

Bir gönderimi denetlemek · JavaScript
import { createHmac, timingSafeEqual } from "node:crypto";

function keyOf(secret) {
  return Buffer.from(secret.slice("whsec_".length), "base64");
}

export function challengeAnswer(secret, challenge) {
  return createHmac("sha256", keyOf(secret)).update(challenge).digest("base64");
}

export function isFromTrackingen(secret, headers, rawBody) {
  const sentAt = Number(headers["webhook-timestamp"]);
  if (!(Math.abs(Date.now() / 1000 - sentAt) <= 300)) {
    return false;
  }
  const signed = `${headers["webhook-id"]}.${headers["webhook-timestamp"]}.${rawBody}`;
  const expected = Buffer.from(
    createHmac("sha256", keyOf(secret)).update(signed).digest("base64"),
  );
  return headers["webhook-signature"].split(" ").some((each) => {
    const given = Buffer.from(each.slice("v1,".length));
    return (
      each.startsWith("v1,") &&
      given.length === expected.length &&
      timingSafeEqual(given, expected)
    );
  });
}
Bir gönderimi denetlemek · Python
import base64, hashlib, hmac, time

def mac_of(secret: str, content: bytes) -> str:
    key = base64.b64decode(secret.removeprefix("whsec_"))
    return base64.b64encode(hmac.new(key, content, hashlib.sha256).digest()).decode()

def challenge_answer(secret: str, challenge: str) -> str:
    return mac_of(secret, challenge.encode())

def is_from_trackingen(secret: str, headers: dict, raw_body: bytes) -> bool:
    sent_at = int(headers["webhook-timestamp"])
    if abs(time.time() - sent_at) > 300:
        return False
    signed = f'{headers["webhook-id"]}.{headers["webhook-timestamp"]}.'.encode() + raw_body
    expected = mac_of(secret, signed)
    return any(
        hmac.compare_digest(each.removeprefix("v1,"), expected)
        for each in headers["webhook-signature"].split(" ")
        if each.startswith("v1,")
    )
  • 10 saniye içinde 2xx ile yanıt verin, işi yanıttan sonra yapın. Başka her yanıt, bir yönlendirme, zaman aşımı, reddedilen bağlantı ya da adresin adıyla uyuşmayan bir sertifika başarısızlık sayılır. Yönlendirmeyi hiçbir zaman izlemeyiz; yanıtınızın gövdesini saklamayız ve birkaç bayttan fazlasını okumayız.
  • Başarısız bir kayıt 30 saniye sonra, sonra her seferinde iki kat sonra, en fazla 60 dakikada bir yeniden gönderilir ve ondan sonraki hiçbir şey ondan önce gönderilmez (backoff). Art arda 30 başarısızlıktan, yaklaşık bir günden sonra webhook durur ve API anahtarlarınızı yönetenlere haber verilir. Her başarısızlığın yalnızca nasıl olduğunu ve ne zaman olduğunu saklarız, hiçbir gövdeyi saklamayız.
  • Bir webhook başarısız olurken ya da dururken hiçbir şey kaybolmaz: GET /api/v1/feed'i aldığınız son imleç after olarak, aynı türlerle okuyun ve oradan devam edin. Akış 14 gün saklar.
  • Bir webhook dakikada en fazla 60, bir kuruluşun bütün webhook'ları birlikte 120 gönderim alır; bekleyen bir sonrakinde gönderilir. Bir kuruluş en fazla 5 webhook tutar.

Hata kodları

Bir ret bu kodlardan birini taşır. Koda göre çalışın: kod aynı kalır, ileti ise daha iyi yazılabilir.

  • INVALID_REQUEST400Bir yol, sorgu ya da gövde değeri eksik veya bozuk. Yalnızca gövde alan bir yol, çok büyük bir gövdeye 413, yanlış türde bir gövdeye 415 ile yanıt verir
  • UNAUTHENTICATED401İstekle geçerli bir bearer token, oturum ya da çalışan bir API anahtarı gelmedi
  • FEATURE_DISABLED403Müşterinin paketinde bunun gerektirdiği özellik yok ya da API anahtarının kuruluşunda API paketi yok
  • FORBIDDEN403Çağıranda bunun gerektirdiği bir izin yok ya da istek başka bir siteden geldi
  • KEY_NOT_ALLOWED403API anahtarı yalnızca anahtar yollarına ulaşır ve bu yol ile yöntem onlardan biri değil
  • PASSWORD_CHANGE_REQUIRED403Oturum açmış kişinin her şeyden önce parolasını değiştirmesi gerekiyor. Bunu yalnızca bir kişinin oturumu alır; API anahtarının parolası olmadığından anahtar bunu hiç almaz
  • PERSON_REQUIRED403Bunu yalnızca oturum açmış bir kişi yapar, örneğin parolayı yeniden soran bir işlem; bir API anahtarı hiçbir zaman yapmaz
  • NOT_FOUND404Çağıranın erişebildiği hiçbir şey bu kimliğe sahip değil
  • METHOD_NOT_ALLOWED405Bu yol bu yöntemi almaz; Allow başlığı aldığı yöntemleri sayar
  • ALERT_RULE_LIMIT409Aynı anda açık olabilecek kadar uyarı kuralı açık
  • CONFLICT409İstek şimdiki durumla çelişiyor
  • GEOFENCE_LIMIT409Müşteri tutabileceği kadar geofence tutuyor
  • GEOFENCE_NAME_TAKEN409Başka bir geofence bu adı taşıyor
  • IDEMPOTENCY_KEY_REUSED409Bu idempotency anahtarı daha önce başka bir istek için kullanıldı
  • CURSOR_EXPIRED410İmleç kaldığı yerden sürdürmek için çok eski; kopyayı yeniden başlatın, daha geriye gitmek için from ile
  • RATE_LIMITED429Çok fazla istek; Retry-After başlığı ne zaman yeniden denenebileceğini söyler
  • INTERNAL_ERROR500Bizim tarafımızda bir şeyler ters gitti