Genel Bakış #
Halı Takip Sistemi API'si, halı yıkama firmaları için çok kiracılı (multi-tenant) sipariş, müşteri, halı kaydı ve ödeme yönetimi sağlar. Tüm endpoint'ler JSON formatında çalışır ve JWT (Bearer) tabanlı kimlik doğrulama kullanır.
| Base URL | /api/v1 |
| Sürüm | v1.0 |
| Auth | Bearer JWT (HS256) |
| İçerik | application/json; charset=utf-8 |
| Rate Limit | 60/dk · 1000/saat |
| CORS | Tüm origin'ler (varsayılan) |
- POST
/auth/loginile JWT token al - Tüm istekleri
Authorization: Bearer <token>header'ı ile gönder - Token süresi dolduğunda POST
/auth/refreshile yenile
Kimlik Doğrulama #
API, JWT (JSON Web Token) tabanlı kimlik doğrulama kullanır. Login endpoint'inden alınan access token (1 saat) ve refresh token (7 gün) kullanılır.
1. Giriş Yap
POST /api/v1/auth/login
Content-Type: application/json
{
"email": "admin@halitakip.com",
"password": "admin123"
}
cURL
curl -X POST 'http://localhost/api/v1/auth/login' \
-H 'Content-Type: application/json' \
-d '{"email":"admin@halitakip.com","password":"admin123"}'
Yanıt
{
"success": true,
"message": "Giriş başarılı",
"data": {
"access_token": "eyJ0eXAiOiJKV1Q...",
"refresh_token": "eyJ0eXAiOiJKV1Q...",
"token_type": "Bearer",
"expires_in": 3600,
"user": {
"id": 1,
"name": "Sistem Yöneticisi",
"email": "admin@halitakip.com",
"role": "super_admin",
"firm_id": null,
"firm": null
}
}
}
2. Korumalı İstek
GET /api/v1/firms
Authorization: Bearer eyJ0eXAiOiJKV1Q...
3. Token Yenile
POST /api/v1/auth/refresh
Content-Type: application/json
{ "refresh_token": "eyJ0eXAiOiJKV1Q..." }
Yanıt Formatı #
Başarılı Yanıt
{
"success": true,
"message": "Başarılı",
"data": { ... }
}
Sayfalanmış Liste
{
"success": true,
"data": [ ... ],
"meta": {
"current_page": 1,
"per_page": 20,
"total": 145,
"last_page": 8,
"has_more": true
}
}
Hata
{
"success": false,
"message": "Bir hata oluştu"
}
Doğrulama Hatası (422)
{
"success": false,
"message": "Doğrulama hatası",
"errors": {
"email": "E-posta zorunludur",
"password": "Şifre en az 6 karakter olmalıdır"
}
}
Roller #
Sistem 5 farklı rolü destekler. Her endpoint hangi rollerin erişebileceğini belirtir.
| Kod | Ad | Açıklama |
|---|
Yetkiler (Permissions) #
Sistem rol bazlı varsayılan yetkilerin yanı sıra kullanıcı bazlı override (özel yetki) destekler. Her kullanıcının role'ünden gelen varsayılan yetkileri vardır; firma yöneticisi users.custom_permissions JSON array ile bu yetkileri ezebilir.
users.custom_permissions NULL ise rol varsayılanı kullanılır. Array doluysa sadece o yetkiler aktif olur.
Rol Varsayılan Yetkileri
| Rol | Varsayılan Yetkiler |
|---|
Tüm Yetki Anahtarları (18 anahtar, 5 kategori)
Kullanım Örneği
Bir çalışana sadece müşteri ve sipariş görüntüleme yetkisi verme:
POST /api/v1/users
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Sınırlı Çalışan",
"email": "sinirli@firma.com",
"password": "******",
"role": "employee",
"firm_id": 1,
"custom_permissions": ["customers.view", "orders.view"]
}
HTTP Durum Kodları #
| Kod | Anlamı |
|---|
Webhook #
Sipariş durumu değiştiğinde firma ayarlarındaki webhook_url adresine POST isteği gönderilir.
Yapılandırma
Firma Ayarları → Bildirim → webhook_url ve webhook_secret
İstek Headers
POST <webhook_url>
Content-Type: application/json
X-Webhook-Signature: <HMAC-SHA256(payload, secret)>
X-Webhook-Event: order.status_changed
İstek Body
{
"event": "order.status_changed",
"order_id": 123,
"order_no": "SP25042500001",
"new_status": "pending_delivery",
"status_label": "Teslim Edilecek",
"customer": { "name": "Ahmet Yılmaz", "phone": "05001234567" },
"note": "Yıkama tamamlandı",
"timestamp": "2026-04-25T12:30:00+03:00"
}
İmza Doğrulama (PHP)
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $payload, $webhookSecret);
if (hash_equals($expected, $signature)) {
// Güvenilir payload
$data = json_decode($payload, true);
}
Sipariş Durum Kodları
| Kod | Türkçe |
|---|---|
pending_pickup | Teslim Alınacak (başlangıç durumu) |
pending_delivery | Teslim Edilecek (işlem tamamlandı, müşteriye iletilecek) |
delivered | Teslim Edildi (son durum) |
cancelled | İptal Edildi (terminal — linear akış dışı) |
Makine Okunur Formatlar #
API dokümantasyonuna programatik olarak erişebilirsiniz. AI asistanları bu URL'leri kullanarak API yapısını otomatik anlayabilir.
| Format | URL | İçerik |
|---|---|---|
| JSON | /api/v1/docs |
Yapılandırılmış JSON: tüm endpoint'ler, parametreler, örnekler, roller |
| Markdown | /api/v1/docs.md |
Tek sayfalık tam Markdown — AI asistanlara link iletmek için ideal |
| HTML | /docs |
Bu sayfa (insan-dostu görüntüleme) |
/api/v1/docs.md URL'sini paylaşın —
tüm API yapısını otomatik anlar ve entegrasyon kodu üretebilir.