API Dokümantasyonu

Public JSON API ile kategori listesini alabilir ve firma başvurusu gönderebilirsiniz. Kimlik doğrulama gerekmez; tüm başvurular admin onayından sonra yayınlanır.

Genel bilgiler

  • Base URL: https://turkiyekobirehberi.com
  • Format: JSON (Content-Type: application/json)
  • Karakter seti: UTF-8
  • Auth: Yok (public)
  • Rate limit: Firma gönderiminde IP başına saatlik sınır uygulanır (aşımda 429)
  • Konum: İl ve ilçe metin olarak gönderilir ve metin olarak saklanır
GET /api/categories

Aktif kategori listesini döner. Firma gönderirken category_id için bu listedeki id değerlerini kullanın.

Örnek istek

curl -s https://turkiyekobirehberi.com/api/categories

Örnek yanıt 200

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Yazılım ve Teknoloji",
      "slug": "yazilim-ve-teknoloji"
    }
  ]
}
POST /api/companies

Yeni firma başvurusu oluşturur. Kayıt pending durumunda başlar; onay sonrası sitede görünür. İl/ilçe alanları metin saklanır.

İstek gövdesi (JSON)

AlanZorunluAçıklama
nameEvetFirma adı
category_idEvetGET /api/categories içinden
cityEvetİl adı metin (ör. İstanbul). Eşdeğer: il, city_name
districtEvetİlçe adı metin (ör. Kadıköy). Eşdeğer: ilce, district_name
descriptionEvetEn az 10 karakter
phoneKoşullu*Telefon
emailKoşullu*E-posta
websiteHayırWeb sitesi URL
addressHayırAçık adres
logo_urlHayırLogo URL; sunucu güvenli şekilde locale indirir

* phone veya email alanlarından en az biri zorunludur. İl/ilçe her zaman metin olarak kaydedilir.

Örnek istek

curl -s -X POST https://turkiyekobirehberi.com/api/companies \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Örnek Yazılım Ltd.",
    "category_id": 1,
    "city": "İstanbul",
    "district": "Kadıköy",
    "description": "Kurumsal yazılım ve dijital dönüşüm hizmetleri.",
    "phone": "05551234567",
    "email": "[email protected]",
    "website": "https://ornek.example",
    "logo_url": "https://ornek.example/logo.png"
  }'

Başarı yanıtı 201

{
  "success": true,
  "message": "Başvurunuz alındı; onay sonrası yayınlanacaktır.",
  "data": {
    "id": 123,
    "status": "pending"
  }
}

Doğrulama hatası 422

{
  "success": false,
  "message": "Doğrulama hatası.",
  "errors": {
    "city": "Geçerli bir il girin (ör. \"İstanbul\")."
  }
}

Rate limit 429

{
  "success": false,
  "message": "Rate limit aşıldı."
}

Notlar

  • application/x-www-form-urlencoded gövde de kabul edilir; JSON önerilir.
  • Geçersiz veya güvensiz logo_url başvuruyu engellemez; logo boş bırakılır.
  • Özel IP, localhost ve metadata adreslerine logo indirme engellenir (SSRF koruması).
  • İl/ilçe metinleri tercihen rehberdeki isimlerle gönderilir (örn. İstanbul, Kadıköy); bilinen isimler kanonik forma çevrilir.

Canlı kategori listesi: https://turkiyekobirehberi.com/api/categories