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/partsOpsiyonel query parametreleri:
| Parametre | Tip | Açıklama |
|---|---|---|
| page | number | Sayfa numarası (varsayılan: 1) |
| limit | number | Sayfa başına sonuç (max: 100, varsayılan: 20) |
| category | string | Kategori adına göre filtre |
| origin | string | original | equivalent | aftermarket |
| oem | string | Parça numarasına göre filtre |
| brand | string | Marka adına göre filtre |
Örnek İstek
GET /api/v1/external/parts?category=Frenler&origin=equivalent&page=1&limit=10Yanı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/:idYanı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"
}4. Arama
Platformdaki tüm aktif parçalar arasında gelişmiş arama yapar. Parça numarası aramasında çapraz referanslar otomatik olarak genişletilir.
GET /api/v1/external/search| Parametre | Tip | Açıklama |
|---|---|---|
| q | string | Anahtar kelime araması (ürün adı, marka, açıklama) |
| oem | string | Parça numarasıyla arama (çapraz referans destekli) |
| make | string | Araç markası filtresi (örn: "BMW") |
| model | string | Araç modeli filtresi (örn: "3 SERİSİ") |
| year | number | Model yılı filtresi (örn: 2018) |
| category | string | Kategori filtresi |
| origin | string | original | equivalent | aftermarket |
| page | number | Sayfa numarası (varsayılan: 1) |
| limit | number | Sayfa başına sonuç (max: 100, varsayılan: 20) |
Örnek: Parça Numarasıyla Arama
GET /api/v1/external/search?oem=34116792219Örnek: Anahtar Kelime + Araç Filtresi
GET /api/v1/external/search?q=fren+diski&make=BMW&model=3+SERİSİ&year=2018Yanıt
{
"items": [
{
"id": "...",
"name": "Ön Fren Diski",
"partNumber": "34116792219",
"brandName": "TRW",
"price": 1250.00,
...
"crossReferences": [
{
"partNumber": "34116792219",
"oemBrand": "BMW",
"crossNumber": "DF6143",
"crossBrand": "TRW"
}
]
}
],
"total": 5,
"page": 1,
"limit": 20,
"totalPages": 1
}Çapraz Referans: Parça numarasıyla arama yaptığınızda, sistem otomatik olarak eşdeğer parça numaralarını genişletir. Örneğin bir orijinal parça numarası arattığınızda, TRW, Bosch gibi eşdeğer üreticilerin numaraları da sonuçlara dahil edilir.
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/stockYanı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=originalBelirli markanın tüm parçaları
GET /api/v1/external/parts?brand=Bosch&limit=100BMW 3 Serisi 2018 uyumlu parçalar
GET /api/v1/external/search?make=BMW&model=3+SERİSİ&year=2018Parça numarası ile arama
GET /api/v1/external/search?oem=34116792219Kullanılabilir Kategoriler:
8. Hata Kodları
| HTTP Kodu | Anlam | Çözüm |
|---|---|---|
| 400 | Geçersiz istek | Parametreleri kontrol edin |
| 401 | Yetkisiz | API anahtarını kontrol edin. Süresi dolmuş olabilir. |
| 403 | Yetersiz yetki | Pull yetkisi olan anahtar gerekli |
| 404 | Bulunamadı | Parça ID'si mevcut değil |
| 429 | Limit aşımı | Günlük istek limitini aştınız. Yarın tekrar deneyin. |
| 500 | Sunucu 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.toolPython - 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ılan | Açıklama |
|---|---|---|
| Günlük istek limiti | 1.000 istek/gün | API anahtarı başına. Yönetim tarafından artırılabilir. |
| Sayfa başına max kayıt | 100 | limit parametresinin maksimum değeri |
| Toplu işlem limiti | 500 kayıt/istek | bulk endpoint'lerinde tek seferde max kayıt |
| Dosya boyutu | 10 MB | Excel/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