API Uç Noktaları
AnchorSpot REST API'si https://api.siperone.com/v1 temel URL'si üzerinden hizmet verir. Tüm istekler JWT token veya API anahtarı ile yetkilendirilmelidir.
Temel URL: https://api.siperone.com/v1
Tüm yanıtlar Content-Type: application/json formatındadır. Tarihler ISO 8601 UTC formatında döner.
Oturumlar
Aktif Oturumları Listele
curl -X GET "https://api.siperone.com/v1/sessions?status=active&limit=50" \
-H "Authorization: Bearer {token}"
Yanıt (200):
{
"data": [
{
"id": "ses_abc123",
"mac": "AA:BB:CC:DD:EE:FF",
"ip": "10.0.1.42",
"username": "+90 5** *** ** 67",
"auth_method": "sms_otp",
"started_at": "2026-06-08T14:23:01Z",
"duration_seconds": 1834,
"bytes_in": 52428800,
"bytes_out": 1048576,
"hotspot_id": "hs_xyz789"
}
],
"total": 23,
"limit": 50,
"offset": 0
}
Oturum Detayı
curl -X GET "https://api.siperone.com/v1/sessions/ses_abc123" \
-H "Authorization: Bearer {token}"
Oturum Sonlandır
curl -X DELETE "https://api.siperone.com/v1/sessions/ses_abc123" \
-H "Authorization: Bearer {token}"
Yanıt (200):
{
"id": "ses_abc123",
"status": "disconnected",
"disconnected_at": "2026-06-08T15:00:00Z",
"reason": "admin_disconnect"
}
Misafirler
Misafir Arama (MAC ile)
curl -X GET "https://api.siperone.com/v1/guests?mac=AA:BB:CC:DD:EE:FF" \
-H "Authorization: Bearer {token}"
Misafir Geçmişi
curl -X GET "https://api.siperone.com/v1/guests/AA:BB:CC:DD:EE:FF/history?days=30" \
-H "Authorization: Bearer {token}"
Kupon Kodları
Kupon Oluştur
curl -X POST "https://api.siperone.com/v1/vouchers" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"code": "KONFERANS-2026",
"max_uses": 100,
"duration_minutes": 480,
"bandwidth_down_mbps": 10,
"bandwidth_up_mbps": 5,
"expires_at": "2026-06-30T23:59:59Z"
}'
Yanıt (201):
{
"id": "vch_def456",
"code": "KONFERANS-2026",
"max_uses": 100,
"current_uses": 0,
"status": "active",
"created_at": "2026-06-08T10:00:00Z",
"expires_at": "2026-06-30T23:59:59Z"
}
Kuponları Listele
curl -X GET "https://api.siperone.com/v1/vouchers?status=active" \
-H "Authorization: Bearer {token}"
Kupon Sil
curl -X DELETE "https://api.siperone.com/v1/vouchers/vch_def456" \
-H "Authorization: Bearer {token}"
Hotspotlar (Siteler)
Hotspot Listele
curl -X GET "https://api.siperone.com/v1/hotspots" \
-H "Authorization: Bearer {token}"
Hotspot Oluştur
curl -X POST "https://api.siperone.com/v1/hotspots" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Ana Lobi",
"location": "İstanbul, Kadıköy",
"timezone": "Europe/Istanbul"
}'
Hotspot Güncelle
curl -X PUT "https://api.siperone.com/v1/hotspots/hs_xyz789" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Ana Lobi - Yeni Ad"
}'
Raporlar
Oturum Raporu
curl -X GET "https://api.siperone.com/v1/reports/sessions?from=2026-06-01&to=2026-06-08" \
-H "Authorization: Bearer {token}"
Analitik Raporu
curl -X GET "https://api.siperone.com/v1/reports/analytics?from=2026-06-01&to=2026-06-08" \
-H "Authorization: Bearer {token}"
Yanıt (200):
{
"period": {"from": "2026-06-01", "to": "2026-06-08"},
"total_sessions": 1247,
"unique_devices": 892,
"avg_duration_minutes": 47,
"auth_methods": {
"sms_otp": 523,
"whatsapp_otp": 312,
"sponsor": 189,
"voucher": 156,
"email": 67
},
"device_types": {
"ios": 412,
"android": 356,
"windows": 89,
"macos": 35
},
"peak_hour": "14:00"
}
Uyum
5651 Kanıt Paketi Dışa Aktar
curl -X GET "https://api.siperone.com/v1/compliance/5651/export?from=2026-06-01&to=2026-06-08" \
-H "Authorization: Bearer {token}" \
-o evidence_pack.zip
Audit Chain Sorgula
curl -X GET "https://api.siperone.com/v1/compliance/audit-chain?date=2026-06-08" \
-H "Authorization: Bearer {token}"
Webhook'lar
Webhook Oluştur
curl -X POST "https://api.siperone.com/v1/webhooks" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"url": "https://sirketiniz.com/webhook/anchorspot",
"events": ["session.start", "session.end", "auth.failure"],
"secret": "whsec_guclu-rastgele-deger"
}'
Desteklenen Olay Türleri
| Olay | Açıklama |
|---|---|
session.start | Yeni oturum başladı |
session.end | Oturum sonlandı (timeout, disconnect, admin) |
auth.success | Başarılı kimlik doğrulama |
auth.failure | Başarısız kimlik doğrulama denemesi |
voucher.redeemed | Kupon kodu kullanıldı |
sponsor.approved | Sponsor talebi onaylandı |
sponsor.rejected | Sponsor talebi reddedildi |
device.new | İlk kez bağlanan cihaz |
Webhook Doğrulama
Gelen webhook isteklerini X-Signature-256 başlığı ile doğrulayın:
import hmac
import hashlib
def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)
warning
Webhook endpoint'iniz 5 saniye içinde 200 yanıtı dönmelidir. Aksi halde istek yeniden gönderilir (3 deneme, üstel bekleme).