Domain Resolve

Stabil

Domain 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

Bu endpoint, EVDSOFT platformunun temel yapı taşıdır. Tüm servisler, işlem yapmadan önce bu endpoint'i çağırarak ilgili proje yapılandırmasını alır.

Endpoint

GET/api/platform/projects/resolve?domain={domain}

Verilen domain için proje ve yapılandırma bilgilerini döner.

Headers

İsimDeğerZorunlu
X-PLATFORM-KEYyour-api-keyEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
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

JSON
{
  "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:

resolve-client.ts
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ım
27const config = await resolveProject('example.com');
28console.log('Project:', config.project.name);
29console.log('JWT Enabled:', config.authSettings.jwtEnabled);

Önbellekleme Önerisi

Resolve sonuçlarını 5 dakika önbellekleyerek platform-service yükünü azaltabilirsiniz. Redis veya in-memory cache kullanılabilir.

Auth Service Entegrasyonu

Auth-service, her kimlik doğrulama işleminden önce domain resolve yapar ve alınan yapılandırmayı kullanır:

1

Kullanıcı Login İsteği

Kullanıcı, auth-service'e login isteği gönderir.

2

Domain Resolve

Auth-service, isteğin geldiği domain için platform-service'ten yapılandırma çeker.

TypeScript
// Auth-service içinde
const config = await platformClient.resolve(request.headers.origin);
3

Yapılandırma Uygulanır

JWT ayarları, session timeout gibi parametreler alınan yapılandırmadan okunur.

4

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:

KodDurumAçıklama
400Bad RequestDomain parametresi eksik veya geçersiz
401UnauthorizedX-PLATFORM-KEY eksik veya geçersiz
404Not FoundDomain için proje bulunamadı
403ForbiddenDomain doğrulanmamış veya proje askıya alınmış

Hata Yönetimi

Resolve hatalarını uygun şekilde yönetin. 404 hatası durumunda kullanıcıya "Geçersiz domain" mesajı gösterilebilir.