Toggle User Status

## Kullanıcı Durumunu Değiştir Offline kapsamındaki mevcut bir kullanıcının aktif/pasif durumunu tersine çevirir (toggle). Bu endpoint; sigorta şirketlerinin veya acentelerin kendi kapsamlarındaki bir kullanıcıyı pasifleştirmesine veya yeniden aktifleştirmesine olanak tanır. Endpoint kullanıcıyı silmez veya yeni kayıt oluşturmaz; yalnızca `Disabled` alanının değerini tersine çevirir. İstek; kimlik kapsamı çözümlemesi ve hedef kullanıcı erişim kontrolünden sonra durum değişikliğini gerçekleştirir. --- ## Endpoint Bilgisi | Özellik | Değer | | --- | --- | | **HTTP Metodu** | `PATCH` | | **URL** | `/api/offline/users/{id}/status` | | **Content-Type** | — (istek gövdesi kabul etmez) | | **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ın durumunu değiştirebilir | | `Supervizor` | Şirket/acente kapsamındaki kullanıcıların durumunu değiştirebilir | > **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 | Durumu değiştirilecek kullanıcının benzersiz tanımlayıcısı (GUID formatında) | --- ## İstek Gövdesi Bu endpoint **istek gövdesi kabul etmez**. Değiştirilecek kullanıcı yalnızca route parametresi üzerinden belirtilir. > **Toggle Davranışı:** Endpoint hedef alınan kullanıcının mevcut durumuna göre işlem yapar: aktif kullanıcı pasife, pasif kullanıcı aktife çevrilir. İstekte hedef durum bilgisi gönderilmez. --- ## İstek Örneği ```http PATCH /api/offline/users/ae116cd4-a26e-47ab-8b0f-07d5ac9cb79c/status Authorization: Bearer {token} ``` --- ## Yanıt Formatı ### Başarılı Yanıt **HTTP Durumu:** `204 No Content` Başarılı işlemde 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 } ``` --- ## HTTP Durum Kodları | Durum | Açıklama | | --- | --- | | `204 No Content` | Kullanıcı durumu başarıyla değiştirildi | | `400 Bad Request` | Kullanıcı ID'si boş veya eksik | | `401 Unauthorized` | Eksik, geçersiz veya süresi dolmuş token | | `403 Forbidden` | Yetersiz yetki, geçersiz rol/scope veya erişim kısıtı | | `500 Internal Server Error` | Identity güncelleme hatası veya beklenmeyen business hatası | --- ## Hata Kodları Referansı | Kod | HTTP Durumu | Mesaj | | --- | --- | --- | | `OfflineUsers.IdRequired` | 400 | User id is required. | | `OfflineUsers.NotAccessible` | 403 | User {id} is not accessible. | | `OfflineUsers.InsuranceCompanyNotFound` | 403 | No valid insurance company assignment found in token. | | `OfflineUsers.AgentNotFound` | 403 | No valid agent assignment found in token. | | `OfflineUsers.AgentOrCompanyRoleRequired` | 403 | User must have an agent or company role to perform this operation. | | `OfflineUsers.ToggleStatusFailed` | 500 | User '{id}' status toggle operation failed due to 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. **Id Kontrolü** — Route'taki `id` parametresi boş veya geçersizse `OfflineUsers.IdRequired` koduyla `400` döner. 4. **Identity Scope Çözümleme** — Token claim'lerinden `InsuranceCompanyIds` (company) veya `AgentId` (agent) okunur. Uygun rol/scope yoksa `403` döner. 5. **Hedef Kullanıcı Erişim Kontrolü** — Company scope için ve agent scope için erişim kontrolü yapılır. Hedef kullanıcı kapsam dışındaysa `OfflineUsers.NotAccessible` ile `403` döner. 6. **Durum Toggle İşlemi** — Business katmanında kullanıcının `Disabled` alanı tersine çevrilir ve Identity güncellemesi yapılır. 7. **Sonuç** — Başarıyla güncellenirse `204 No Content` döner. Identity güncellemesi başarısız olursa `OfflineUsers.ToggleStatusFailed` koduyla `500` döner. --- ## Notlar - **Toggle Semantiği:** Endpoint hedef durumu kendi belirler; mevcut durumun tersine çevirir. Bir kullanıcıyı belirli bir duruma (örn. yalnızca pasif yapmak) set etmek için tasarlanmamıştır. Çağıran taraf, mevcut durumu bildiği varsayımıyla işlemi tetiklemelidir. - **Silme Değil, Pasifleştirme:** Bu endpoint kullanıcıyı silmez. Yalnızca `Disabled` sütununu günceller. Pasifleştirilen kullanıcı sisteme giriş yapamaz ancak verisi korunur. - **Identity Scope:** İşlem, 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. - **İstek Gövdesi:** Bu endpoint body kabul etmez. Gönderilen gövde yok sayılır; yalnızca route parametresi olan `id` dikkate alınır. ---

Authentication

AuthorizationBearer

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

Path parameters

userIdstringRequired
Unique identifier of the target user

Response

No Content

Errors

403
Forbidden Error