Domain Resolve
StabilDomain bazlı proje yapılandırması sorgulama. Platform'un en kritik endpoint'i.
Genel Bakış
Domain resolve endpoint'i, verilen bir domain için ilişkili proje ve tüm yapılandırma bilgilerini döner. Bu endpoint, diğer servislerin (auth, mail, sms) çalışması için kritik öneme sahiptir.
Kritik Endpoint
Endpoint
/api/platform/projects/resolve?domain={domain}Verilen domain için proje ve yapılandırma bilgilerini döner.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | your-api-key | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
curl -X GET "https://platform.services.evdsoft.com/api/platform/projects/resolve?domain=example.com" \
-H "X-PLATFORM-KEY: your-api-key" \
-H "Content-Type: application/json"Yanıt Örneği
{
"success": true,
"data": {
"project": {
"id": "proj_abc123",
"name": "Example Project",
"slug": "example",
"status": "active",
"createdAt": "2024-01-15T10:00:00Z",
"updatedAt": "2024-02-10T14:30:00Z"
},
"authSettings": {
"jwtEnabled": true,
"jwtSecret": "your-jwt-secret-key",
"jwtExpiresIn": "1h",
"refreshTokenEnabled": true,
"refreshTokenExpiresIn": "7d",
"sessionTimeout": 3600,
"twoFactorEnabled": false,
"passwordMinLength": 8,
"passwordRequireUppercase": true,
"passwordRequireNumbers": true,
"emailVerificationRequired": true
},
"serviceSettings": {
"mailEnabled": true,
"mailProvider": "sendgrid",
"mailFromAddress": "noreply@example.com",
"smsEnabled": true,
"smsProvider": "twilio",
"auditEnabled": true,
"auditRetentionDays": 90
},
"matchedDomain": "example.com"
},
"timestamp": "2024-02-15T10:30:00Z"
}Yanıt Yapısı
Resolve yanıtı dört ana bölümden oluşur:
project
Proje temel bilgileri: ID, ad, slug, durum ve tarihler.
authSettings
Kimlik doğrulama yapılandırması: JWT ayarları, session timeout, 2FA, parola politikaları.
serviceSettings
Servis yapılandırması: Mail, SMS, Audit servisleri ve provider bilgileri.
matchedDomain
Eşleşen domain. Wildcard veya subdomain eşleşmelerinde faydalıdır.
Kullanım Örnekleri
Node.js ile domain resolve örneği:
1import axios from 'axios';2 3const PLATFORM_KEY = process.env.PLATFORM_KEY;4const PLATFORM_URL = 'https://platform.services.evdsoft.com';5 6async function resolveProject(domain: string) {7 try {8 const response = await axios.get(9 `${PLATFORM_URL}/api/platform/projects/resolve`,10 {11 params: { domain },12 headers: {13 'X-PLATFORM-KEY': PLATFORM_KEY,14 'Content-Type': 'application/json'15 }16 }17 );18 19 return response.data.data;20 } catch (error) {21 console.error('Resolve failed:', error.message);22 throw error;23 }24}25 26// Kullanım27const config = await resolveProject('example.com');28console.log('Project:', config.project.name);29console.log('JWT Enabled:', config.authSettings.jwtEnabled);Önbellekleme Önerisi
Auth Service Entegrasyonu
Auth-service, her kimlik doğrulama işleminden önce domain resolve yapar ve alınan yapılandırmayı kullanır:
Kullanıcı Login İsteği
Kullanıcı, auth-service'e login isteği gönderir.
Domain Resolve
Auth-service, isteğin geldiği domain için platform-service'ten yapılandırma çeker.
// Auth-service içinde
const config = await platformClient.resolve(request.headers.origin);Yapılandırma Uygulanır
JWT ayarları, session timeout gibi parametreler alınan yapılandırmadan okunur.
Token Üretimi
Kullanıcı doğrulandıktan sonra, yapılandırmaya uygun JWT token üretilir.
Hata Durumları
Resolve endpoint'i aşağıdaki hata durumlarını dönebilir:
| Kod | Durum | Açıklama |
|---|---|---|
| 400 | Bad Request | Domain parametresi eksik veya geçersiz |
| 401 | Unauthorized | X-PLATFORM-KEY eksik veya geçersiz |
| 404 | Not Found | Domain için proje bulunamadı |
| 403 | Forbidden | Domain doğrulanmamış veya proje askıya alınmış |
Hata Yönetimi