Geliştiriciler
API Dokümantasyonu
Harici sistemlerden kafe eklemek ve yayındaki kafeleri listelemek için JSON API.
Kimlik doğrulama
POST /api/cafes için API anahtarı zorunludur (app/config.php → api_key). Anahtar bu sayfada gösterilmez.
X-Api-Key: YOUR_API_KEY
Alternatif:
Authorization: Bearer YOUR_API_KEY
Geçersiz anahtar: 401 {"error":"Yetkisiz."}
Uç noktalar
| Method | Path | Açıklama |
|---|---|---|
| POST | /api/cafes |
Yeni kafe oluşturur (published) |
| GET | /api/cafes |
Yayındaki kafeleri listeler / filtreler (açık) |
| GET | /api/districts |
İlçeler (?city_id=) — geriye dönük |
Base URL: https://caferehberi.com
POST /api/cafes
Headers
Content-Type: application/json
Accept: application/json
X-Api-Key: YOUR_API_KEY
application/x-www-form-urlencoded de kabul edilir.
Zorunlu alanlar
| Alan | Tip | Not |
|---|---|---|
name | string | Kafe adı (max 180) |
email | string | İletişim e-postası; kullanıcı yoksa oluşturulur, contact_email olarak saklanır |
city | string | İl metin (max 120) |
district | string | İlçe metin (max 120) |
Opsiyonel alanlar
submitter_name, neighborhood, address, phone, working_hours, description, maps_url, menu_url, instagram, lat, lng, seo_title, seo_description, özellik alanları (wifi, laptop_friendly, …) veya features nesnesi.
Şehir/ilçe adı eşleşirse city_id / district_id da doldurulur; eşleşme şart değildir.
Örnek (cURL)
curl -X POST "https://caferehberi.com/api/cafes" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"name": "Sahil Kahve",
"email": "[email protected]",
"submitter_name": "Ayşe Yılmaz",
"city": "İstanbul",
"district": "Kadıköy",
"neighborhood": "Moda",
"wifi": "yes",
"laptop_friendly": "yes",
"description": "Deniz manzaralı çalışma kafesi."
}'
Başarı — 201
{
"ok": true,
"id": 42,
"slug": "sahil-kahve-moda",
"status": "published",
"contact_email": "[email protected]",
"city": "İstanbul",
"district": "Kadıköy",
"url": "https://caferehberi.com/kafe/sahil-kahve-moda"
}
Hata kodları
| Kod | Anlam |
|---|---|
401 | API anahtarı geçersiz |
422 | Doğrulama hatası (errors) |
429 | Rate limit |
500 | Sunucu / kayıt hatası |
503 | api_key yapılandırılmamış |
GET /api/cafes
Herkese açık. Filtreler metin kabul eder. Liste yanıtında contact_email dönmez.
| Query | Açıklama |
|---|---|
q | İsim araması |
city | Şehir metni |
district | İlçe metni |
page | Sayfa |
wifi, laptop_friendly, … | Özellik filtreleri |
curl "https://caferehberi.com/api/cafes?city=İstanbul&district=Kadıköy&wifi=yes"
Notlar
- Fotoğraf yükleme bu endpoint’te yoktur; hesap/admin panelinden eklenir.
- Yeni kullanıcı rastgele şifre ile oluşur (yalnızca sahiplik bağlama).
- Rate limit: yaklaşık 60 oluşturma / saat / IP.
- Üretimde
api_keydeğerini uzun ve rastgele tutun.