Made Batch Policy

## Toplu Poliçe Kaydet ### Endpoint Bilgileri | Alan | Değer | | --- | --- | | **Method** | `POST` | | **URL** | `{{baseUrl}}/api/Offline/jobs/{jobId}/Policies/batch` | | **Content-Type** | `application/json` | | **Yetkilendirme** | Bearer Token + `Create` politikası | --- Sigorta şirketinin, acentenin toplu poliçe talebine karşılık **kesilen poliçe bilgilerini** kaydetmesi için kullanılır. Başarılı istekte iş `Toplu Poliçe Gerçekleşti` (`BatchPolicyMade`) aşamasına geçer, poliçe ve prim bilgileri platform servisine yazılır ve aksiyon kaydı oluşturulur. > İşin aşaması `Toplu Poliçe İsteği` (`BatchPolicyRequested`) olmalıdır; aksi halde geçiş reddedilir. --- ### Route Parametreleri | Parametre | Tip | Zorunlu | Açıklama | | --- | --- | --- | --- | | `jobId` | `integer` | Evet | Poliçeleri kaydedilecek işin Id bilgisi | --- ### Kimlik Doğrulama Geçerli bir bearer token gerektirir. Token şunları içermelidir: - Tanınan bir rol (`InsuranceCompanyAPIUser`, `InsuranceCompanyAPIAdmin` veya `Supervizor`) - İlgili route için `Create` yetkisi - Geçerli bir sigorta şirketi ataması - Çözümlenebilir bir kullanıcı kimliği > İşin sigorta şirketi, token'daki sigorta şirketi listesinde bulunmalıdır. Ayrıca `InsuranceCompanyAPIUser` yalnızca kendi sahibi olduğu işleri işleyebilir; `InsuranceCompanyAPIAdmin` ve `Supervizor` şirketin tüm işlerine erişebilir. --- ### İstek Modeli — `MakeBatchPolicyRequest` | Alan | Tip | Zorunlu | Açıklama | Doğrulama | | --- | --- | --- | --- | --- | | `ProductId` | `integer` | Evet | Poliçelerin kesildiği ürün Id | 0'dan büyük olmalı: `"ProductId must be greater than zero."` | | `IsPremiumDiscount` | `boolean` | Hayır | Toplu poliçenin revize (indirim) akışına ait olup olmadığı | — | | `Message` | `string` | Hayır | Toplu poliçeye iliştirilen not | Maks. 500 karakter: `"Message cannot exceed 500 characters."` | | `Premiums` | `BatchPolicyEntryRequest[]` | Evet | Poliçe prim girişleri | Zorunlu: `"Premium list is required."` <br>Boş olamaz: `"Premium list cannot be empty."` | > `JobId` gövdeden alınmaz (`[JsonIgnore]`); route parametresinden set edilir. 0'dan büyük olmalıdır: `"JobId must be greater than zero."` #### Poliçe Girişi — `BatchPolicyEntryRequest` | Alan | Tip | Zorunlu | Açıklama | Doğrulama | | --- | --- | --- | --- | --- | | `InsuranceCompanyPolicyNumber` | `string` | Evet | Sigorta şirketi poliçe numarası | Boş olamaz: `"InsuranceCompanyPolicyNumber is required."` | | `InsuranceCompanyProposalNumber` | `string` | Hayır | Sigorta şirketi teklif numarası | — | | `InsuranceCompanyEndorsementNumber` | `string` | Hayır | Sigorta şirketi zeyil numarası | — | | `RenewalNumber` | `integer` | Evet | Yenileme numarası | 0'dan büyük veya eşit olmalı: `"RenewalNumber must be greater than or equal to 0."` | | `GrossPremium` | `decimal` | Evet | Brüt prim | 0'dan büyük olmalı: `"GrossPremium must be greater than 0."` | | `NetPremium` | `decimal` | Evet | Net prim | 0'dan büyük olmalı: `"NetPremium must be greater than 0."` | | `Commission` | `decimal` | Evet | Komisyon | 0'dan büyük veya eşit olmalı: `"Commission must be greater than or equal to 0."` | | `PaymentOptionType` | `integer` | Evet | Ödeme tipi | `1` (Hesaptan) veya `2` (KrediKarti) olmalı: `"PaymentOptionType must be Hesaptan (1) or KrediKarti (2)."` | | `CurrencyType` | `integer` | Evet | Para birimi | Tanımlı bir değer olmalı: `"CurrencyType must be a valid currency type."` | #### Para Birimi Değerleri | Değer | Para Birimi | | --- | --- | | `1` | TL | | `2` | Dolar | | `3` | Euro | | `4` | İngiliz Sterlini | | `5` | Japon Yeni | | `6` | İsviçre Frangı | | `7` | İsveç Kronu | --- ### İş Kuralları State geçişi sırasında sırasıyla aşağıdaki kontroller yapılır; herhangi biri başarısız olursa istek reddedilir: 1. İş `Toplu Poliçe İsteği` aşamasında olmalıdır. 2. İsteği yapan kullanıcı sigorta şirketi kullanıcı eşleşmesinde kayıtlı olmalıdır. 3. Teklif başka bir sigorta şirketi tarafından poliçeleştirilmiş olmamalıdır. 4. Teklif + ürün için `GetPolicy` operasyon kaydı bulunmalıdır ve daha önce başarıyla poliçeleştirilmemiş olmalıdır. 5. Poliçe ve prim bilgileri platform servisine yazılabilmelidir. > **Geri alma davranışı:** 5. kural başarısız olursa `OperationWatch` başarısız işaretlenir ve iş `Toplu Poliçe İsteği` aşamasına geri döndürülür. --- ### Yanıt #### `201 Created` — Başarılı Yanıt Gövde boştur. --- ### Hata Senaryoları #### `400 Bad Request` — Doğrulama Hatası İstek modeli doğrulamadan geçemediğinde döner. Hatalı alanlar `Response` içinde listelenir. ``` json { "Status": false, "Code": "Validation.General", "Message": "One or more validation errors occurred", "Response": [ { "Field": "ProductId", "Message": "ProductId must be greater than zero." }, { "Field": "Premiums", "Message": "Premium list cannot be empty." } ] } ``` --- #### `403 Forbidden` — Geçerli Sigorta Şirketi Ataması Bulunamadı Token'da geçerli bir sigorta şirketi ataması bulunmadığında döner. ``` json { "Status": false, "Code": "OfflineUsers.InsuranceCompanyNotFound", "Message": "No valid insurance company assignment found in token.", "Response": null } ``` --- #### `403 Forbidden` — Kullanıcı Kimliği Çözümlenemedi Token'dan kullanıcı kimliği okunamadığında döner. ``` json { "Status": false, "Code": "OfflineUsers.UserIdentityNotResolved", "Message": "User identity could not be resolved from token.", "Response": null } ``` --- #### `403 Forbidden` — İşin Sigorta Şirketi Kapsam Dışı İşin sigorta şirketi, token'daki sigorta şirketi listesinde yoksa döner. ``` json { "Status": false, "Code": "OfflineJobs.JobInsuranceCompanyDenied", "Message": "You do not have permission to access jobs of this insurance company.", "Response": null } ``` --- #### `403 Forbidden` — İşe Erişim Reddedildi İş, çağıranın sahipliğinde değilse döner. ``` json { "Status": false, "Code": "OfflineJobs.JobOwnershipDenied", "Message": "You do not have permission to access this job.", "Response": null } ``` --- #### `403 Forbidden` — Rol veya Yetki Yetersiz Kullanıcı tanınan rollerden birine sahip değilse ya da `Create` yetkisi yoksa döner. **Gövde boştur.** --- #### `401 Unauthorized` — Token Yok veya Geçersiz Token gönderilmediğinde, geçersiz olduğunda veya süresi dolduğunda döner. **Gövde boştur.** --- #### `404 Not Found` — İş Bulunamadı Belirtilen `jobId` ile bir iş bulunamadığında döner. ``` json { "Status": false, "Code": "OfflineJobs.JobNotFound", "Message": "No job found for the requested JobId: 100931.", "Response": null } ``` --- #### `500 Internal Server Error` — İş Kuralı İhlali İş uygun aşamada değilse, teklif başka şirketten poliçeleşmişse, operasyon kaydı bulunamazsa veya teklif daha önce poliçeleştirilmişse döner. `Message` alanı iş kuralı hatasının detayını içerir. ``` json { "Status": false, "Code": "JobState.UnknownBusinessRule", "Message": "An unknown business rule error occurred: Job Id : 100931 geçerli durumu Toplu Poliçe İsteği'nde olmalıdır.", "Response": null } ``` --- #### `500 Internal Server Error` — Platform Servisi Hatası Poliçe ve prim bilgileri platform servisine yazılamadığında döner. ``` json { "Status": false, "Code": "JobState.PlatformServiceFailure", "Message": "Failed to write premium information to the platform service. Platform returned: Poliçe, Prim ve taksit bilgileri platform servisine yazdırılamadı! Servisten dönen hata: Timeout", "Response": null } ``` --- #### `500 Internal Server Error` — Beklenmeyen Hata Geçiş sırasında iş kuralı dışında bir hata oluştuğunda döner. ``` json { "Status": false, "Code": "JobState.TransitionError", "Message": "An unexpected error occurred during job state transition.", "Response": null } ```

Authentication

AuthorizationBearer

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

Path parameters

jobIdintegerRequired

Request

This endpoint expects an object.

Response

Created

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error
500
Internal Server Error