Update User

## Kullanıcı Güncelle Offline kapsamındaki mevcut bir kullanıcının profil ve güvenlik alanlarını günceller. Bu endpoint; sigorta şirketlerinin veya acentelerin kendi kapsamlarındaki kullanıcıların kullanıcı adı, e-posta, ad soyad bilgilerini ve güvenlik ayarlarını (şifre değiştirme zorunluluğu, iki adımlı doğrulama, e-posta onay durumu) güncellemesine olanak tanır. İstek; doğrulama kontrolleri, kimlik kapsamı çözümlemesi, hedef kullanıcı erişim kontrolü ve duplicate e-posta/kullanıcı adı kontrollerinden sonra güncelleme işlemini gerçekleştirir. --- ## Endpoint Bilgisi | Özellik | Değer | | --- | --- | | **HTTP Metodu** | `PUT` | | **URL** | `/api/offline/users/{id}` | | **Content-Type** | `application/json` | | **Yetkilendirme** | `Authorization: Bearer {token}` | ### Yetkilendirme Rolleri Çağıranın aşağıdaki rollerden birine sahip olması gerekir: | Rol | Erişim Kapsamı | | --- | --- | | `InsuranceCompanyAPIAdmin` | Şirket kapsamındaki kullanıcıları güncelleyebilir | | `Supervizor` | Şirket/acente kapsamındaki kullanıcıları güncelleyebilir | > **Not:** Endpoint `Update` policy'si ile korunur. Bu rollere sahip olmayan kullanıcılar `403 Forbidden` alır. ### Route Parametreleri | Parametre | Tip | Zorunlu | Açıklama | | --- | --- | --- | --- | | `id` | `string` | Evet | Güncellenecek kullanıcının benzersiz tanımlayıcısı | --- ## İstek Modeli ### Ana İstek Tüm alanların gönderilmesi zorunludur. | Alan | Tip | Zorunlu | Açıklama | Doğrulama Kuralları | | --- | --- | --- | --- | --- | | `UserName` | `string` | Evet | Kullanıcı adı | Zorunlu: `"UserName is required."` <br>Min. 3 karakter: `"UserName must be at least 3 characters."` <br>Maks. 256 karakter: `"UserName must be less than or equal to 256 characters."` | | `Email` | `string` | Evet | E-posta adresi | Zorunlu: `"Email is required."` <br>Geçerli e-posta formatı olmalı: `"Email must be a valid email address."` <br>Maks. 256 karakter: `"Email must be less than or equal to 256 characters."` | | `FullName` | `string` | Evet | Ad soyad | Zorunlu: `"FullName is required."` <br>Min. 3 karakter: `"FullName must be at least 3 characters."` <br>Maks. 100 karakter: `"FullName must be less than or equal to 100 characters."` | | `NeedPasswordChange` | `boolean` | Evet | Sonraki girişte şifre değiştirme zorunluluğu | Zorunlu: `"NeedPasswordChange is required."` | | `TwoFactorEnabled` | `boolean` | Evet | İki adımlı doğrulama aktif/pasif durumu | Zorunlu: `"TwoFactorEnabled is required."` | | `EmailConfirmed` | `boolean` | Evet | E-posta onay durumu | Zorunlu: `"EmailConfirmed is required."` | --- ## İstek Örneği ``` http PUT /api/offline/users/4c31d679-b285-4040-9b57-5ce49e9f604c Authorization: Bearer {token} Content-Type: application/json { "UserName": "updated-user", "Email": "updated-user@acme.local", "FullName": "Updated User", "NeedPasswordChange": true, "TwoFactorEnabled": true, "EmailConfirmed": false } ``` --- ## Yanıt Formatı ### Başarılı Yanıt **HTTP Durumu:** `204 No Content` Başarılı güncellemede yanıt gövdesi boştur. ``` http HTTP/1.1 204 No Content ``` ### Hata Yanıtı ``` json { "Status": false, "Code": "Error.Code", "Message": "Error description", "Response": null } ``` Doğrulama hatalarında `Response` alanı detayları içerir: ``` json { "Status": false, "Code": "Validation.General", "Message": "One or more validation errors occurred", "Response": [ { "Field": "FieldName", "Message": "Error message description" } ] } ``` --- ## HTTP Durum Kodları | Durum | Açıklama | | --- | --- | | `204 No Content` | Kullanıcı başarıyla güncellendi | | `400 Bad Request` | İstek doğrulama hatası | | `401 Unauthorized` | Eksik, geçersiz veya süresi dolmuş token | | `403 Forbidden` | Yetersiz yetki, geçersiz rol/scope veya erişim kısıtı | | `404 Not Found` | Belirtilen kullanıcı mevcut değil | | `409 Conflict` | Duplicate email veya kullanıcı adı | | `500 Internal Server Error` | Beklenmeyen business hatası | --- ## Hata Kodları Referansı | Kod | HTTP Durumu | Mesaj | | --- | --- | --- | | `Validation.General` | 400 | One or more validation errors occurred | | `OfflineUsers.NotAccessible` | 403 | User '{id}' is not accessible within the current scope. | | `OfflineUsers.InsuranceCompanyNotFound` | 403 | No valid insurance company assignment found in token. | | `OfflineUsers.AgentNotFound` | 403 | No valid agent assignment found for agent user. | | `OfflineUsers.AgentOrCompanyRoleRequired` | 403 | Only agent or company users are authorized for this endpoint. | | `OfflineUsers.UserNotFound` | 404 | The requested user '{id}' does not exist. | | `OfflineUsers.DuplicateEmail` | 409 | Email '{email}' already exists. | | `OfflineUsers.DuplicateUserName` | 409 | UserName '{userName}' already exists. | | `OfflineUsers.UpdateFailed` | 500 | User '{id}' could not be updated due to a business rule violation. | --- ## İşleme Akışı Endpoint, isteği aldığında aşağıdaki adımları sırasıyla uygular: 1. **Kimlik Doğrulama** — Bearer token doğrulanır; token yoksa/geçersizse `401` döner. 2. **Yetkilendirme** — `Update` policy'si ve `InsuranceCompanyAPIAdmin` / `Supervizor` rolü kontrol edilir; yetersizse `403` döner. 3. **İstek Doğrulama** — Tüm zorunlu alanlar ve doğrulama kuralları kontrol edilir; ihlal varsa `400` döner. 4. **Identity Scope Çözümleme** — Token claim'lerinden `InsuranceCompanyIds` (company) veya `AgentIds` (agent) okunur. Uygun rol/scope yoksa `403` döner. 5. **Hedef Kullanıcı Erişim Kontrolü** — Company scope için ve agent scope kullanıcı için erişim kontrolü sağlanır; yoksa `OfflineUsers.NotAccessible` ile `403` döner. 6. **Duplicate Kontrolleri** — `Email` ve `UserName` için tekillik kontrolü yapılır; çakışma varsa `409` döner. 7. **Kullanıcı Güncelleme** — Business katmanında gerekli işlemler yapılır. 8. **Sonuç** — Başarıyla güncellenirse `204 No Content` döner. Business katmanından `NotFoundException` alınırsa `OfflineUsers.UserNotFound` koduyla `404`, `BusinessRuleException` alınırsa `OfflineUsers.UpdateFailed` koduyla `500` döner. --- ## Notlar - **Identity Scope:** Güncelleme işlemi, yalnızca çağıran tokenın kapsamındaki (şirket veya acente) kullanıcılar üzerinde yapılabilir. Kapsam dışındaki kullanıcılara yapılan istekler `OfflineUsers.NotAccessible` ile reddedilir. - **Duplicate Kontrolleri:** `Email` ve `UserName` tekilliği sistem genelinde kontrol edilir. Güncelleme sırasında bu alanların başka bir kullanıcıda kullanılmadığından emin olun. - **Şifre Güncellemesi:** Bu endpoint şifre güncellemesi yapmaz. `NeedPasswordChange: true` gönderilirse yalnızca kullanıcıya sonraki girişte şifresini değiştirmesi zorunluluğu tanımlanır. - **Bulunamayan Kullanıcı:** Route'ta belirtilen `id`'ye karşılık bir kullanıcı yoksa `OfflineUsers.UserNotFound` koduyla `404 Not Found` döner. ---

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

userIdstringRequired
Unique identifier of the target user

Request

This endpoint expects an object.

Response

No Content

Errors

400
Bad Request Error
403
Forbidden Error
409
Conflict Error