Ana içeriğe geç

Müşteri

Müşteri API'si, Sherlock müşteri kayıtlarınızı kendi sistemlerinizden yönetmenizi sağlar. Bu uç noktalarla yeni müşteri oluşturabilir, mevcut kayıtları sorgulayabilir (telefon veya e-posta üzerinden mükerrer kontrolü dâhil) ve müşteri bilgilerini güncelleyebilirsiniz.

Tüm istekler X-API-Key başlığı ile kimlik doğrulaması gerektirir ve yalnızca kendi firmanızın müşterilerine erişim sağlar.

Taban URL

https://sherlock.sanalsantral.com.tr/api/v1

Bu bölümdeki uç noktalar

MetotUç NoktaAçıklama
POST/customersYeni müşteri oluştur
GET/customersMüşterileri listele / ara
GET/customers/{id}Tek müşteri getir
PUT/customers/{id}Müşteri güncelle

Müşteri Veri Modeli

Bir müşteri kaydı aşağıdaki alanlardan oluşur:

AlanTipZorunluAçıklama
idinteger(otomatik)Müşteri ID
companystringEvetÜnvan / firma adı
namestringHayırYetkili kişi adı
phonestringHayırTelefon numarası (normalize edilir)
mailstringHayırE-posta adresi
addressstringHayırAdres
statusenumHayırbekliyor
assignedTointegerHayırAtanan kullanıcı (userId)
stageIdintegerHayırMüşteri aşaması
customValue1stringHayırSerbest özel alan 1
customValue2stringHayırSerbest özel alan 2
customValue3stringHayırSerbest özel alan 3
createdAtdatetime(otomatik)Oluşturulma tarihi

> companyId alanı API anahtarınızdan otomatik çözülür; istek gövdesinde gönderilmez.

1. Müşteri Oluşturma

Yeni bir müşteri kaydı oluşturur. Telefon numarası verilirse, aynı firmada daha önce eklenip eklenmediği kontrol edilir ve mükerrer kayıt engellenir.

POST /api/v1/customers

İstek Gövdesi

json

{
"company": "Acme Yazılım A.Ş.",
"name": "Ahmet Yılmaz",
"phone": "05321234567",
"mail": "[email protected]",
"address": "Maslak, İstanbul",
"status": "aktif",
"assignedTo": 12,
"stageId": 3,
"customValue1": "Web sitesinden geldi"
}
AlanZorunluAçıklama
companyEvetBoşsa 400 döner
phoneHayırNormalize edilir; 7 haneden kısaysa hata. Aynı firmada mükerrer telefon reddedilir
mailHayırAyrı iletişim kaydı olarak eklenir
DiğerleriHayırBkz. Veri Modeli

Örnek İstek

bash

curl -X POST "https://firma.sanalsantral.com/api/v1/customers" \
-H "X-API-Key: sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"company": "Acme Yazılım A.Ş.",
"name": "Ahmet Yılmaz",
"phone": "05321234567",
"mail": "[email protected]"
}'

Başarılı Yanıt (201)

json

{
"success": true,
"message": "Customer created successfully",
"data": {
"id": 8842,
"company": "Acme Yazılım A.Ş.",
"name": "Ahmet Yılmaz",
"phone": "905321234567",
"mail": "[email protected]",
"status": "aktif",
"companyId": 4213,
"createdAt": "2026-07-07T09:15:00.000Z"
}
}

Hatalar

HTTPDurumYanıt
400Ünvan eksik{ "success": false, "error": "company is required" }
409Telefon mükerrer{ "success": false, "error": "Bu telefon numarası daha önce eklenmiş." }
422Telefon hatalı{ "success": false, "error": "Telefon numarası hatalı" }

2. Müşteri Sorgulama / Kontrol

a) Tek müşteri getir

GET /api/v1/customers/{id}

bash

curl "https://firma.sanalsantral.com/api/v1/customers/8842" \
-H "X-API-Key: sk_live_xxx"

Kayıt başka bir firmaya aitse veya bulunamazsa 404 döner.

json

{
"success": true,
"data": {
"id": 8842,
"company": "Acme Yazılım A.Ş.",
"name": "Ahmet Yılmaz",
"phone": "905321234567",
"mail": "[email protected]",
"status": "aktif",
"stageId": 3,
"companyId": 4213,
"contacts": [
{ "id": 1, "type": 0, "value": "905321234567", "name": "Ahmet Yılmaz" },
{ "id": 2, "type": 1, "value": "[email protected]", "name": "Ahmet Yılmaz" }
],
"createdAt": "2026-07-07T09:15:00.000Z"
}
}

b) Listele / Ara

GET /api/v1/customers

Firmanızın müşterilerini sayfalı olarak listeler. Mükerrer kontrolü için search ile telefon, e-posta veya ünvan üzerinden arama yapabilirsiniz.

ParametreZorunluVarsayılanAçıklama
searchHayır-Ünvan, ad, adres, özel alanlar ve telefon/e-posta içinde arar
statusHayırallbekliyor
pageHayır1Sayfa numarası
limitHayır10Sayfa başına kayıt (max 10000)

bash

# Telefonla mükerrer kontrolü
curl "https://firma.sanalsantral.com/api/v1/customers?search=05321234567" \
-H "X-API-Key: sk_live_xxx"

json

{
"success": true,
"data": [
{
"id": 8842,
"company": "Acme Yazılım A.Ş.",
"name": "Ahmet Yılmaz",
"phone": "905321234567",
"mail": "[email protected]",
"status": "aktif"
}
],
"pagination": { "total": 1, "page": 1, "limit": 10, "totalPages": 1 }
}

> data: [] (boş dizi) → eşleşen müşteri yok; yeni kayıt oluşturulabilir.

3. Müşteri Düzenleme

Var olan bir müşteriyi günceller. Yalnızca gönderilen alanlar değişir; gönderilmeyen alanlar mevcut değerini korur.

PUT /api/v1/customers/{id}

İstek Gövdesi

json

{
"company": "Acme Yazılım A.Ş. (Güncel)",
"status": "iptal",
"assignedTo": 15,
"customValue1": "Sözleşme yenilendi"
}
AlanZorunluAçıklama
companyEvetBoş gönderilemez
name, status, assignedTo, address, stageId, customValue1..3HayırVerilmeyen alan mevcut değerini korur

Örnek İstek

bash

curl -X PUT "https://firma.sanalsantral.com/api/v1/customers/8842" \
-H "X-API-Key: sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "company": "Acme Yazılım A.Ş.", "status": "iptal" }'

Başarılı Yanıt (200)

json

{
"success": true,
"message": "Customer updated successfully",
"data": { "id": 8842, "company": "Acme Yazılım A.Ş.", "status": "iptal", "companyId": 4213 }
}

Hatalar

HTTPDurumYanıt
400ID veya ünvan eksik{ "success": false, "error": "company cannot be empty" }
404Müşteri yok / başka firmaya ait{ "success": false, "error": "Customer not found" }

Ortak Hata Kodları

HTTPAnlam
400Geçersiz istek (eksik/hatalı alan)
401API anahtarı eksik/geçersiz
404Kayıt bulunamadı (veya erişim dışı)
409Çakışma (mükerrer telefon)
422İşlenemeyen içerik (örn. telefon formatı)
429Hız limiti aşıldı
500Sunucu hatası
503Kimlik doğrulama servisi erişilemez