Platform Servisi
StabilMerkezi yapılandırma otoritesi. Projeler, domainler, servis ayarları ve auth kuralları bu servis üzerinden yönetilir.
Platform servisi; proje oluşturma, proje listeleme, domain bağlama, domain resolve etme, servis ayarlarını yönetme ve auth ayarlarını düzenleme işlemlerinin tamamını merkezi olarak sağlar.
Genel Bakış
Platform Servisi, EVDSOFT mikro servis mimarisinin merkezinde yer alır. Her proje önce burada tanımlanır; ardından o projeye domainler, servis aktivasyonları ve auth kuralları bağlanır. Böylece diğer servisler domain veya proje bazlı çalışmak için gerekli yapılandırmayı bu servis üzerinden alabilir.
Servis Özeti
Base Pattern
/api/platform/*
Auth Header
X-PLATFORM-KEY
Sorumluluklar
Proje Yönetimi
Projeleri oluşturur, listeler, tekil getirir, slug ile bulur, günceller ve siler.
Domain Yönetimi
Projeye bağlı domain kayıtlarını ekler, listeler ve günceller.
Domain Resolve
Bir domain üzerinden proje, eşleşen domain, servis ayarları ve auth ayarlarını tek istekte çözer.
Servis Ayarları
Auth, Mail, SMS ve Audit servislerinin proje bazlı aktivasyonunu yönetir.
Auth Ayarları
Kayıt modu, doğrulama zorunlulukları, onay akışları ve 2FA kurallarını yönetir.
Kimlik Doğrulama
GET /api/platform/health dışında koleksiyondaki tüm endpoint örneklerinde X-PLATFORM-KEY header'ı kullanılıyor. Health endpoint'i ise header gerektirmeden servis durumunu döndürüyor.
Not
success,message,data vetimestamp alanlarından oluşuyor.API Endpoint'leri
Health Check
/api/platform/healthServisin çalıştığını doğrular. Kimlik doğrulama gerektirmez.
Yanıt Örneği
{
"data": {
"service": "platform-service"
},
"message": "Platform servisi çalışıyor.",
"success": true,
"timestamp": "2026-03-06T11:13:25.7716176"
}Proje Yönetimi
/api/platform/projectsYeni proje oluşturur.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
{
"name": "E-Sentinel",
"slug": "esentinel",
"description": "SEO ve crawl yönetim platformu"
}Yanıt Örneği
{
"data": {
"createdAt": "2026-03-06T11:14:02.3040421",
"description": "SEO ve crawl yönetim platformu",
"id": 4,
"name": "E-Sentinel",
"slug": "esentinel",
"status": "DRAFT",
"updatedAt": "2026-03-06T11:14:02.3040421",
"uuid": "3b148de8-a940-4895-83a5-de8e022280f1"
},
"message": "Proje başarıyla oluşturuldu.",
"success": true,
"timestamp": "2026-03-06T11:14:02.3188826"
}/api/platform/projectsTüm projeleri listeler.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": [
{
"createdAt": "2026-03-06T11:14:02.304042",
"description": "SEO ve crawl yönetim platformu",
"id": 4,
"name": "E-Sentinel",
"slug": "esentinel",
"status": "DRAFT",
"updatedAt": "2026-03-06T11:14:02.304042",
"uuid": "3b148de8-a940-4895-83a5-de8e022280f1"
}
],
"message": "Projeler listelendi.",
"success": true,
"timestamp": "2026-03-06T11:14:08.5877954"
}/api/platform/projects/{id}ID ile tek bir projeyi getirir.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": {
"createdAt": "2026-03-06T11:14:02.304042",
"description": "SEO ve crawl yönetim platformu",
"id": 4,
"name": "E-Sentinel",
"slug": "esentinel",
"status": "DRAFT",
"updatedAt": "2026-03-06T11:14:02.304042",
"uuid": "3b148de8-a940-4895-83a5-de8e022280f1"
},
"message": "Proje detayı getirildi.",
"success": true,
"timestamp": "2026-03-06T11:14:16.4475673"
}/api/platform/projects/by-slug/{slug}Slug ile proje detayını getirir.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": {
"createdAt": "2026-03-06T11:14:02.304042",
"description": "SEO ve crawl yönetim platformu",
"id": 4,
"name": "E-Sentinel",
"slug": "esentinel",
"status": "DRAFT",
"updatedAt": "2026-03-06T11:14:02.304042",
"uuid": "3b148de8-a940-4895-83a5-de8e022280f1"
},
"message": "Slug ile proje bulundu.",
"success": true,
"timestamp": "2026-03-06T11:14:23.4142394"
}/api/platform/projects/{id}Mevcut proje bilgilerini günceller.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
{
"name": "E-Sentinel Updated",
"slug": "esentinel",
"description": "Güncellenmiş açıklama"
}Yanıt Örneği
{
"data": {
"createdAt": "2026-03-06T11:14:02.304042",
"description": "Güncellenmiş açıklama",
"id": 4,
"name": "E-Sentinel Updated",
"slug": "esentinel",
"status": "DRAFT",
"updatedAt": "2026-03-06T11:14:02.304042",
"uuid": "3b148de8-a940-4895-83a5-de8e022280f1"
},
"message": "Proje güncellendi.",
"success": true,
"timestamp": "2026-03-06T11:14:30.019656"
}/api/platform/projects/{id}Projeyi siler.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": null,
"message": "Proje silindi.",
"success": true,
"timestamp": "2026-03-06T11:13:52.0038695"
}Domain Yönetimi
/api/platform/projects/{id}/domainsProjeye yeni domain ekler.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
{
"domain": "platform.evdsoft.com",
"primary": false,
"active": true
}Yanıt Örneği
{
"data": {
"active": true,
"createdAt": "2026-03-06T11:14:50.2285811",
"domain": "platform.evdsoft.com",
"id": 4,
"primary": false,
"projectId": 4,
"updatedAt": "2026-03-06T11:14:50.2285811"
},
"message": "Proje domaini eklendi.",
"success": true,
"timestamp": "2026-03-06T11:14:50.2326642"
}/api/platform/projects/{id}/domainsProjeye ait domain listesini döner.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": [
{
"active": true,
"createdAt": "2026-03-06T11:14:50.228581",
"domain": "platform-dev.evdsoft.com",
"id": 4,
"primary": true,
"projectId": 4,
"updatedAt": "2026-03-06T11:14:56.78918"
}
],
"message": "Proje domainleri getirildi.",
"success": true,
"timestamp": "2026-03-06T11:15:05.6122006"
}/api/platform/projects/{projectId}/domains/{domainId}Bir proje domain kaydını günceller.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
{
"domain": "platform-dev.evdsoft.com",
"primary": true,
"active": true
}Yanıt Örneği
{
"data": {
"active": true,
"createdAt": "2026-03-06T11:14:50.228581",
"domain": "platform-dev.evdsoft.com",
"id": 4,
"primary": true,
"projectId": 4,
"updatedAt": "2026-03-06T11:14:50.228581"
},
"message": "Proje domaini güncellendi.",
"success": true,
"timestamp": "2026-03-06T11:14:56.7916878"
}Domain Resolve
/api/platform/projects/resolveDomain değerine göre proje, eşleşen domain, auth ayarları ve servis ayarlarını çözer.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Query Parametreleri
| Parametre | Tip | Açıklama | Zorunlu |
|---|---|---|---|
| domain | string | Çözümlenecek domain adresi | Evet |
Yanıt Örneği
{
"data": {
"authSettings": {
"approvalRequired": false,
"emailVerificationRequired": false,
"id": 4,
"inviteOnly": false,
"phoneVerificationRequired": false,
"projectId": 4,
"registrationMode": "OPEN",
"twoFactorRequired": false
},
"matchedDomain": {
"active": true,
"createdAt": "2026-03-06T11:14:50.228581",
"domain": "platform-dev.evdsoft.com",
"id": 4,
"primary": true,
"projectId": 4,
"updatedAt": "2026-03-06T11:14:56.78918"
},
"project": {
"createdAt": "2026-03-06T11:14:02.304042",
"description": "Güncellenmiş açıklama",
"id": 4,
"name": "E-Sentinel Updated",
"slug": "esentinel",
"status": "DRAFT",
"updatedAt": "2026-03-06T11:14:30.017612",
"uuid": "3b148de8-a940-4895-83a5-de8e022280f1"
},
"serviceSettings": {
"auditEnabled": true,
"authEnabled": true,
"id": 2,
"mailEnabled": false,
"projectId": 4,
"smsEnabled": false
}
},
"message": "Domain çözümleme başarılı.",
"success": true,
"timestamp": "2026-03-06T11:15:01.7934204"
}Servis Ayarları
/api/platform/projects/{id}/service-settingsProjeye ait servis ayarlarını getirir.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": {
"auditEnabled": true,
"authEnabled": true,
"id": 2,
"mailEnabled": false,
"projectId": 4,
"smsEnabled": false
},
"message": "Proje servis ayarları getirildi.",
"success": true,
"timestamp": "2026-03-06T11:15:12.9058885"
}/api/platform/projects/{id}/service-settingsProjeye ait servis aktivasyon ayarlarını günceller.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
{
"authEnabled": true,
"mailEnabled": true,
"smsEnabled": true,
"auditEnabled": true
}Yanıt Örneği
{
"data": {
"auditEnabled": true,
"authEnabled": true,
"id": 2,
"mailEnabled": true,
"projectId": 4,
"smsEnabled": true
},
"message": "Proje servis ayarları güncellendi.",
"success": true,
"timestamp": "2026-03-06T11:16:08.1628662"
}Auth Ayarları
/api/platform/projects/{id}/auth-settingsProjeye ait auth ayarlarını getirir.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
Yanıt Örneği
{
"data": {
"approvalRequired": false,
"emailVerificationRequired": false,
"id": 4,
"inviteOnly": false,
"phoneVerificationRequired": false,
"projectId": 4,
"registrationMode": "OPEN",
"twoFactorRequired": false
},
"message": "Proje auth ayarları getirildi.",
"success": true,
"timestamp": "2026-03-06T11:15:19.8986982"
}/api/platform/projects/{id}/auth-settingsProjeye ait auth davranışlarını günceller.
Headers
| İsim | Değer | Zorunlu |
|---|---|---|
| X-PLATFORM-KEY | {{platformKey}} | Evet |
| Content-Type | application/json | Evet |
İstek Örneği
{
"registrationMode": "APPROVAL_REQUIRED",
"emailVerificationRequired": true,
"phoneVerificationRequired": false,
"approvalRequired": true,
"inviteOnly": false,
"twoFactorRequired": true
}Yanıt Örneği
{
"data": {
"approvalRequired": true,
"emailVerificationRequired": true,
"id": 4,
"inviteOnly": false,
"phoneVerificationRequired": false,
"projectId": 4,
"registrationMode": "APPROVAL_REQUIRED",
"twoFactorRequired": true
},
"message": "Proje auth ayarları güncellendi.",
"success": true,
"timestamp": "2026-03-06T11:16:26.6248607"
}Registration Mode Değerleri
OPEN- Herkes kayıt olabilirAPPROVAL_REQUIRED- Kayıt sonrası manuel onay gerekirINVITE_ONLY- Sadece davetli kullanıcılar kayıt olabilir
Veri Modelleri
Aşağıdaki tablolar, mevcut koleksiyondaki gerçek response örneklerine göre hazırlanmıştır.
Project Şeması
| Alan | Tip | Açıklama |
|---|---|---|
| id | number | Benzersiz proje ID değeri |
| uuid | string | Projenin global benzersiz UUID değeri |
| name | string | Proje adı |
| slug | string | URL dostu proje kısa adı |
| description | string | null | Proje açıklaması |
| status | enum | Mevcut örneklerde DRAFT değeri dönüyor |
| createdAt | datetime | Oluşturulma tarihi |
| updatedAt | datetime | Son güncellenme tarihi |
Domain Şeması
| Alan | Tip | Açıklama |
|---|---|---|
| id | number | Benzersiz domain ID değeri |
| projectId | number | İlgili projenin ID değeri |
| domain | string | Domain adresi |
| primary | boolean | Birincil domain olup olmadığı |
| active | boolean | Domain aktif mi? |
| createdAt | datetime | Oluşturulma tarihi |
| updatedAt | datetime | Son güncellenme tarihi |
Service Settings Şeması
| Alan | Tip | Açıklama |
|---|---|---|
| id | number | Servis ayarı kayıt ID değeri |
| projectId | number | İlgili proje ID değeri |
| authEnabled | boolean | Auth servisi aktif mi? |
| mailEnabled | boolean | Mail servisi aktif mi? |
| smsEnabled | boolean | SMS servisi aktif mi? |
| auditEnabled | boolean | Audit servisi aktif mi? |
Auth Settings Şeması
| Alan | Tip | Açıklama |
|---|---|---|
| id | number | Auth ayar kayıt ID değeri |
| projectId | number | İlgili proje ID değeri |
| registrationMode | enum | Kayıt modu |
| emailVerificationRequired | boolean | E-posta doğrulama zorunlu mu? |
| phoneVerificationRequired | boolean | Telefon doğrulama zorunlu mu? |
| approvalRequired | boolean | Kayıt sonrası onay gerekiyor mu? |
| inviteOnly | boolean | Sadece davetli kullanıcılar mı kayıt olabilir? |
| twoFactorRequired | boolean | 2FA zorunlu mu? |
Yanıt Standardı
Koleksiyondaki tüm örneklerde response gövdesi tutarlı biçimde aşağıdaki alanları kullanıyor:
| Alan | Tip | Açıklama |
|---|---|---|
| success | boolean | İşlemin başarılı olup olmadığını belirtir |
| message | string | İşleme ait kullanıcı dostu açıklama mesajı |
| data | object | array | null | Asıl yanıt yükü |
| timestamp | datetime | Yanıtın üretildiği zaman damgası |