Ana Sayfa/API Kılavuzu: Veri Çekme (Pull)

Partsgate API: Veri Çekme (Pull) Kılavuzu

Bu kılavuz, Partsgate platformundaki parça verilerini kendi sisteminize çekmenizi sağlayan API uç noktalarını açıklar. Parça listeleme, arama, detay görüntüleme ve stok sorgulama işlemlerini kapsar.

Ön Koşul: Bu API'yi kullanabilmek için Partsgate yönetimi tarafından size verilmiş bir API anahtarı (pg_...) gereklidir. API anahtarı almak için info@partsgate.io adresine başvurun.

1. Kimlik Doğrulama (Authentication)

Tüm isteklerde API anahtarınızı aşağıdaki yöntemlerden biriyle göndermelisiniz:

Yöntem 1: X-Api-Key Header (Önerilen)

GET /api/v1/external/parts
Host: partsgate.io
X-Api-Key: pg_abc123def456...

Yöntem 2: Authorization Header

GET /api/v1/external/parts
Host: partsgate.io
Authorization: Bearer pg_abc123def456...

2. Parça Listesi

Platformdaki parçaları listeler. API anahtarınız bir satıcıya bağlıysa, yalnızca o satıcının parçaları döner.

GET /api/v1/external/parts

Opsiyonel query parametreleri:

ParametreTipAçıklama
pagenumberSayfa numarası (varsayılan: 1)
limitnumberSayfa başına sonuç (max: 100, varsayılan: 20)
categorystringKategori adına göre filtre
originstringoriginal | equivalent | aftermarket
oemstringParça numarasına göre filtre
brandstringMarka adına göre filtre

Örnek İstek

GET /api/v1/external/parts?category=Frenler&origin=equivalent&page=1&limit=10

Yanıt

{
  "items": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Ön Fren Diski",
      "partNumber": "34116792219",
      "brandName": "TRW",
      "categoryName": "Frenler",
      "origin": "equivalent",
      "condition": "new",
      "price": 1250.00,
      "discountedPrice": 1100.00,
      "currency": "TRY",
      "stockQuantity": 15,
      "isActive": true,
      "compatibleVehicles": [
        { "make": "BMW", "model": "3 SERİSİ", "yearFrom": 2012, "yearTo": 2019 }
      ],
      "images": ["https://partsgate.io/uploads/part-images/abc.jpg"],
      "description": "BMW 3 Serisi (F30) uyumlu ön fren diski",
      "createdAt": "2026-08-15T10:30:00.000Z",
      "updatedAt": "2026-08-20T14:15:00.000Z"
    }
  ],
  "total": 87,
  "page": 1,
  "limit": 10,
  "totalPages": 9
}

3. Parça Detayı

Belirli bir parçanın tüm bilgilerini getirir.

GET /api/v1/external/parts/:id

Yanıt

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Ön Fren Diski",
  "partNumber": "34116792219",
  "brandName": "TRW",
  "categoryName": "Frenler",
  "origin": "equivalent",
  "condition": "new",
  "price": 1250.00,
  "discountedPrice": 1100.00,
  "currency": "TRY",
  "stockQuantity": 15,
  "isActive": true,
  "compatibleVehicles": [
    { "make": "BMW", "model": "3 SERİSİ", "yearFrom": 2012, "yearTo": 2019 }
  ],
  "images": [],
  "description": "BMW 3 Serisi (F30) uyumlu ön fren diski",
  "createdAt": "2026-08-15T10:30:00.000Z",
  "updatedAt": "2026-08-20T14:15:00.000Z"
}

5. Stok Sorgulama

Satıcıya bağlı API anahtarı ile kendi stok durumunuzu toplu olarak sorgulayabilirsiniz. Tüm aktif ürünlerinizin stok ve fiyat bilgisini döner.

GET /api/v1/external/stock

Yanıt

[
  {
    "id": "550e8400-...",
    "partNumber": "34116792219",
    "name": "Ön Fren Diski",
    "stockQuantity": 15,
    "price": 1250.00,
    "discountedPrice": 1100.00,
    "isActive": true
  },
  {
    "id": "660f9500-...",
    "partNumber": "34216862202",
    "name": "Arka Fren Balatası",
    "stockQuantity": 20,
    "price": 850.00,
    "discountedPrice": null,
    "isActive": true
  }
]

Not: Bu endpoint sadece satıcıya bağlı API anahtarlarında çalışır. Genel API anahtarlarında 400 hatası döner.

6. Sayfalama (Pagination)

Tüm liste endpointleri sayfalama destekler. Yanıtta dönen bilgilerle sonraki sayfaya geçebilirsiniz.

Sayfalama Bilgisi

{
  "items": [...],
  "total": 245,       // Toplam kayıt sayısı
  "page": 1,          // Mevcut sayfa
  "limit": 20,        // Sayfa başına kayıt
  "totalPages": 13    // Toplam sayfa sayısı
}

Python - Tüm Sayfaları Çekme

import requests

API_KEY = "pg_abc123..."
BASE = "https://partsgate.io/api/v1/external"
headers = {"X-Api-Key": API_KEY}

all_parts = []
page = 1

while True:
    resp = requests.get(f"{BASE}/parts?page={page}&limit=100", headers=headers)
    data = resp.json()
    all_parts.extend(data["items"])

    if page >= data["totalPages"]:
        break
    page += 1

print(f"Toplam {len(all_parts)} parça çekildi.")

7. Filtreleme Rehberi

Filtreleri birleştirerek daha spesifik sonuçlar alabilirsiniz.

Sadece orijinal fren parçaları

GET /api/v1/external/parts?category=Frenler&origin=original

Belirli markanın tüm parçaları

GET /api/v1/external/parts?brand=Bosch&limit=100

BMW 3 Serisi 2018 uyumlu parçalar

GET /api/v1/external/search?make=BMW&model=3+SERİSİ&year=2018

Parça numarası ile arama

GET /api/v1/external/search?oem=34116792219

Kullanılabilir Kategoriler:

FrenlerMotorFiltrelerSüspansiyonEgzoz SistemiYağlar ve SıvılarDireksiyonDebriyajŞanzımanAmortisman (Damping)Motor Soğutma SistemiYakıt Besleme SistemiKayışlar, Zincirler, MakaralarIsıtma ve HavalandırmaKaportaİç MekanElektrik SistemiAydınlatmaKlima SistemiAteşleme ve Ön IsıtmaCam Silme ve Yıkama Sistemi

8. Hata Kodları

HTTP KoduAnlamÇözüm
400Geçersiz istekParametreleri kontrol edin
401YetkisizAPI anahtarını kontrol edin. Süresi dolmuş olabilir.
403Yetersiz yetkiPull yetkisi olan anahtar gerekli
404BulunamadıParça ID'si mevcut değil
429Limit aşımıGünlük istek limitini aştınız. Yarın tekrar deneyin.
500Sunucu hatasıDestek ile iletişime geçin: info@partsgate.io

9. Entegrasyon Örnekleri

cURL - Parça Listesi

curl -s "https://partsgate.io/api/v1/external/parts?limit=5" \
  -H "X-Api-Key: pg_abc123def456..." | python -m json.tool

Python - Fiyat Karşılaştırma

import requests

API_KEY = "pg_abc123..."
BASE = "https://partsgate.io/api/v1/external"
headers = {"X-Api-Key": API_KEY}

# Parça numarasıyla tüm tedarikçilerin fiyatlarını al
oem = "34116792219"
resp = requests.get(f"{BASE}/search?oem={oem}", headers=headers)
data = resp.json()

print(f"'{oem}' için {data['total']} sonuç bulundu:\n")
for part in data["items"]:
    fiyat = part.get("discountedPrice") or part["price"]
    print(f"  {part['brandName']:15s} {fiyat:>10.2f} TL  "
          f"(Stok: {part['stockQuantity']})")

JavaScript (Node.js) - Stok Kontrolü

const axios = require('axios');

const API_KEY = process.env.PARTSGATE_API_KEY;

const client = axios.create({
  baseURL: 'https://partsgate.io/api/v1/external',
  headers: { 'X-Api-Key': API_KEY },
});

async function checkStock() {
  const { data: stock } = await client.get('/stock');

  const lowStock = stock.filter(p => p.stockQuantity > 0 && p.stockQuantity < 5);
  const outOfStock = stock.filter(p => p.stockQuantity === 0);

  console.log(`Toplam: ${stock.length} ürün`);
  console.log(`Düşük stok: ${lowStock.length} ürün`);
  console.log(`Stokta yok: ${outOfStock.length} ürün`);

  if (lowStock.length > 0) {
    console.log('\nDüşük stoklu ürünler:');
    lowStock.forEach(p =>
      console.log(`  ${p.partNumber} - ${p.name} (Stok: ${p.stockQuantity})`)
    );
  }
}

checkStock();

C# (.NET) - Parça Arama

using System.Net.Http;
using System.Text.Json;

var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Api-Key", "pg_abc123...");

// Parça numarasıyla arama
var response = await client.GetAsync(
    "https://partsgate.io/api/v1/external/search?oem=34116792219");

var json = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<JsonElement>(json);

var total = result.GetProperty("total").GetInt32();
Console.WriteLine($"{total} sonuç bulundu");

foreach (var item in result.GetProperty("items").EnumerateArray())
{
    var name = item.GetProperty("name").GetString();
    var price = item.GetProperty("price").GetDecimal();
    var stock = item.GetProperty("stockQuantity").GetInt32();
    Console.WriteLine($"  {name} - {price:N2} TL (Stok: {stock})");
}

10. Kullanım Limitleri

Limit TürüVarsayılanAçıklama
Günlük istek limiti1.000 istek/günAPI anahtarı başına. Yönetim tarafından artırılabilir.
Sayfa başına max kayıt100limit parametresinin maksimum değeri
Toplu işlem limiti500 kayıt/istekbulk endpoint'lerinde tek seferde max kayıt
Dosya boyutu10 MBExcel/CSV import için max dosya boyutu

Limit artırma talebi: Daha yüksek limitlere ihtiyacınız varsa info@partsgate.io adresinden yönetim ile iletişime geçin.

Yardıma mı ihtiyacınız var?

Teknik destek ve API anahtarı talebi için: info@partsgate.io