Ana içeriğe geç

Santral API

Base URL: https://api.sanalsantral.com.tr Prefix: /santral

Kimlik Doğrulama

Tüm isteklerde Authorization header’ı ile API anahtarınızı göndermeniz gerekmektedir.

Authorization: Bearer <API_KEY>

API anahtarınızı hesap yöneticinizden temin edebilirsiniz.

Endpointler

1. Agent Login

Bir agenti belirtilen kuyruğa dahil eder.

ÖzellikDeğer
URLPOST /santral/agentLogin
AuthBearer Token

Request Body:

{
"pbxId":1,
"dahiliNo":"1001",
"queue": "100",
"reason":"login"
}
AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
dahiliNostringEvetDahili numarası
queuestringEvetKuyruk numarası
reasonstringHayırGiriş nedeni

Response:

{
"success": true,
"message": "Agent login başarılı",
"data": {},
"dahiliNo": "1001",
"queue": "100",
"reason": "login"
}

2. Agent Logoff

Bir agenti kuyruktan çıkarır.

ÖzellikDeğer
URLPOST /santral/agentLogoff
AuthBearer Token

Request Body:

{
"pbxId": 1,
"dahiliNo": "1001",
"queue": "100",
"reason": "logoff"
}

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
dahiliNostringEvetDahili numarası
queuestringEvetKuyruk numarası
reasonstringHayırÇıkış nedeni

Response:

{
"success": true,
"message": "Agent logoff başarılı",
"data": {},
"dahiliNo": "1001",
"queue": "100",
"reason": "logoff"
}

3. Simple CDR (Çağrı Detay Kayıtları - Basit)

Basitleştirilmiş çağrı detay kayıtlarını getirir.

ÖzellikDeğer
URLPOST /santral/simpleCDR veya GET /santral/simpleCDR
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1,
"startDate": "2024-01-01 00:00:00",
"endDate": "2024-01-31 23:59:59",
"callerid": "05551234567",
"dialedNumber": "1001",
"direction": "inbound"
}
AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
startDatestringEvetBaşlangıç tarihi (YYYY-MM-DD HH:mm:ss)
endDatestringEvetBitiş tarihi (YYYY-MM-DD HH:mm:ss)
calleridstringHayırArayan numara filtresi
dialedNumberstringHayırAranan numara filtresi
directionstringHayırÇağrı yönü filtresi (inbound/outbound)

Response:

{
"success": true,
"message": "CDR kayıtları başarıyla getirildi",
"data": [
{
"id": 1,
"tenant": "SANAL",
"startAt": "2024-01-15 10:30:00",
"direction": "inbound",
"callerId": "05551234567",
"callerName": "John Doe",
"dialedNumber": "1001",
"disposition": "ANSWERED",
"durationSeconds": 120,
"uniqueId": "1705312200.123",
"whoAnswered": "1001"
}
]
}

4. CDR (Çağrı Detay Kayıtları - Detaylı)

Detaylı çağrı detay kayıtlarını getirir.

ÖzellikDeğer
URLPOST /santral/cdr veya GET /santral/cdr
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1,
"startDate": "2024-01-01 00:00:00",
"endDate": "2024-01-31 23:59:59",
"callerid": "05551234567",
"direction": "inbound"
}

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
startDatestringEvetBaşlangıç tarihi
endDatestringEvetBitiş tarihi
calleridstringHayırArayan numara filtresi
directionstringHayırÇağrı yönü filtresi

Response:

{
"success": true,
"message": "CDR kayıtları başarıyla getirildi",
"data": [
{
"startAt": "2024-01-15 10:30:00",
"answerAt": "2024-01-15 10:30:05",
"endAt": "2024-01-15 10:32:05",
"callerId": "05551234567",
"dialedNumber": "1001",
"firstDst": "100",
"lastDst": "1001",
"whereLanded": "1001",
"disposition": "ANSWERED",
"durationSeconds": 125,
"billSeconds": 120,
"uniqueId": "1705312200.123",
"linkedId": "1705312200.123"
}
]
}

5. Queue Stats (Kuyruk İstatistikleri)

Tüm kuyrukların anlık istatistiklerini getirir.

ÖzellikDeğer
URLPOST /santral/queueStats veya GET /santral/queueStats
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1
}

Response:

{
"success": true,
"message": "Kuyruk istatistikleri başarıyla getirildi",
"data": [
{
"queueId": "100",
"queueName": "Destek",
"agentsAvailable": 5,
"agentsPaused": 1,
"agentsFree": 3,
"agentsOnline": 5,
"serviceLevel": 80,
"serviceLevel2": 90,
"callsInQueue": 2,
"firstWaiting": 15,
"secondWaiting": 8,
"thirdWaiting": 0,
"callsOnline": 2,
"talkTime": 3600,
"holdTime": 120,
"answeredCalls": 45,
"callsReceived": 50,
"abandonedCalls": 3,
"timedOutCalls": 2,
"maxHoldTime": 60,
"averageTalkTime": 80,
"averageHoldTime": 15
}
]
}

6. Extension Stats (Dahili İstatistikleri)

Tüm dahililerin anlık durumlarını getirir.

ÖzellikDeğer
URLPOST /santral/extensionStats veya GET /santral/extensionStats
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1
}

Response:

{
"success": true,
"message": "Dahili istatistikleri başarıyla getirildi",
"data": [
{
"extensionNumber": "1001",
"extensionName": "Ahmet Yılmaz",
"state": "Idle",
"uniqueId": "",
"dndStatus": "off"
}
]
}

7. Extension Queues (Dahilinin Kuyrukları)

Bir dahilinin üye olduğu kuyrukları listeler.

ÖzellikDeğer
URLPOST /santral/extensionQueues veya GET /santral/extensionQueues
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1,
"extensionNumber": "1001"
}

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
extensionNumberstringEvetDahili numarası

Response:

{
"success": true,
"message": "Dahili kuyrukları başarıyla getirildi",
"data": {
"extensionNumber": "1001",
"queues": [
{
"queueId": "100",
"queueName": "Destek"
},
{
"queueId": "200",
"queueName": "Satış"
}
]
}
}

8. Get DIDs (DID Numaraları)

PBX’e tanımlı DID (Direct Inward Dialing) numaralarını listeler.

ÖzellikDeğer
URLPOST /santral/getDIDs veya GET /santral/getDIDs
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1
}
AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası

Response:

{
"success": true,
"message": "DID listesi başarıyla getirildi",
"data": [
{
"id": 1,
"number": "02121234567"
},
{
"id": 2,
"number": "08501234567"
}
]
}

9. Get Recording (Ses Kaydı)

Çağrı ses kaydını indirir veya tarayıcıda oynatır. Dosya WAV formatında döner. Tarayıcı üzerinden oynatma için HTTP Range desteği mevcuttur.

ÖzellikDeğer
URLGET /santral/getRecording
AuthBearer Token

Query Params:

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
idstringEvetKayıt benzersiz kimlik numarası
typestringEvetdownload (indirme) veya play (oynatma)

Headers (Opsiyonel):

HeaderAçıklama
Rangebytes=0-1024 şeklinde kısmi içerik isteği (oynatma modu için)

Response (type=download):

  • Content-Type: audio/wav

  • Content-Disposition: attachment; filename="recording_<id>.wav"

  • Dosya doğrudan indirilir.

Response (type=play):

  • Content-Type: audio/wav

  • Content-Disposition: inline

  • Accept-Ranges: bytes

  • HTTP 206 Partial Content desteklidir.

Genel Response Yapısı

Tüm endpointler aşağıdaki formatta JSON response döner:

{
"success": true,
"message": "İşlem açıklaması",
"data": {}
}
AlanTipAçıklama
successbooleanİşlem başarılı ise true, hata durumunda false
messagestringİşlem sonucunu açıklayan mesaj
dataanyİşlem sonucu dönen veri (hata durumunda bulunmayabilir)

Hata Kodları

HTTP KoduAçıklama
400Geçersiz parametre veya eksik zorunlu alan
401Geçersiz veya eksik API anahtarı
403Bu kaynağa erişim yetkiniz bulunmamaktadır
404İstenen kaynak bulunamadı
500Sunucu hatası