Skip to navigation

Reject Revise Premium

Reject Revise Premium

Sigorta şirketinin, PremiumReviseRequested aşamasındaki bir işin (job) teklif revize talebini red nedeni ve açıklama ile reddetmesini sağlar. İstek başarılı olduğunda PremiumReviseRejected state geçişi tetiklenir; red nedeni işe işlenir, red aksiyonu platforma iletilir, varsa ek belgeler kaydedilir ve bildirim e-postası gönderilir. Başarılı çağrı gövde döndürmez.

Uç Nokta (Endpoint)

PUT {{baseUrl}}/api/offline/jobs/:jobId/premiums/reject-revision

Content-Type: application/json


Kullanım

Bu servis, acentenin daha önce verilmiş bir teklif için açtığı revize (indirim) talebi karşılanamadığında kullanılır. Önerilen akış:

  1. POST /api/authentication/login ile token alınır.
  2. GET /api/offline/jobs ile PremiumReviseRequested aşamasındaki işler listelenir ve işlenecek jobId belirlenir.
  3. GET /api/offline/jobs/:jobId/actions ile revize talebinin detayı (talep edilen değişiklik, ekler) okunur.
  4. GET /api/offline/rejectreasons/4 ile PremiumRevise kategorisindeki geçerli red nedenleri çekilir.
  5. Bu servis, seçilen JobRejectReason ve açıklama mesajıyla çağrılır.
  6. 204 No Content dönerse iş PremiumReviseRejected aşamasına geçmiştir. Mevcut teklif geçerliliğini korur; acente bu aşamadan poliçe talebinde bulunabilir (PremiumReviseRejected → PolicyRequested geçişi tanımlıdır).

Revize talebi karşılanabiliyorsa bu servis yerine PUT /api/offline/jobs/:jobId/premiums/revise (Revise Premium) çağrılır.

💡 Red nedeni listesini sabit kodlamayın; geçerli nedenler sigorta şirketine göre değişir. Her zaman rejectreasons servisinden okuyun.

⚠️ İş yalnızca PremiumReviseRequested aşamasındayken bu servis çağrılabilir. Başka bir aşamadaki iş için çağrı 500 ile JobState.UnknownBusinessRule döner. Stage kodları için bknz.

⚠️ JobRejectReason yalnızca sayısal olarak doğrulanır; red nedeninin kategorisi ya da sigorta şirketine uygunluğu bu serviste kontrol edilmez. Yanlış kategoriden bir neden gönderilmesi isteği reddettirmez, bu yüzden doğru nedeni seçmek istemcinin sorumluluğundadır.


Kimlik Doğrulama

Bu uç nokta geçerli bir JWT erişim token’ı gerektirir. Token, Authentication Login servisinden alınır ve Authorization başlığında gönderilir.

BaşlıkTürZorunluAçıklama
Authorizationstring✅Bearer <token> biçiminde erişim token’ı.
Content-Typestring✅application/json olmalıdır.

Token’ın aşağıdaki rollerden en az birini taşıması ve Update yetkisine sahip olması gerekir:

RolErişim Kapsamı
InsuranceCompanyAPIUserYalnızca kendi sahibi olduğu işlerin revize talebini reddedebilir.
InsuranceCompanyAPIAdminŞirket kapsamındaki tüm işlerin revize talebini reddedebilir.
SupervizorŞirket kapsamındaki tüm işlerin revize talebini reddedebilir.

⚠️ InsuranceCompanyAPIUser rolündeki kullanıcı, kendi sahibi olmadığı bir iş için 403 ile OfflineJobs.JobOwnershipDenied alır.


İstek Parametreleri (Path Variables)

ParametreTürZorunluMinMaxAçıklama
:jobIdinteger (int32)✅12147483647Teklif revize talebi reddedilecek işin benzersiz kimliği.

⚠️ jobId yalnızca yoldan alınır. Gövdede JobId göndermek etkisizdir; alan gövdeden okunmaz.


İstek Gövdesi

RejectRevisePremiumRequest

ParametreTürZorunluAçıklama
JobRejectReasoninteger (int32)✅Red nedeni kimliği. Sıfırdan büyük olmalıdır. Geçerli liste için GET /api/offline/rejectreasons/4.
Messagestring✅Red açıklaması. Boş olamaz, en fazla 500 karakter. Kaydedilmeden önce sunucuda HTML/script içeriğinden arındırılır.
Attachmentsarray—Reddi destekleyen PDF belgeler. Bkz. PremiumFileRequest.

PremiumFileRequest (Attachments elemanı)

ParametreTürZorunluAçıklama
FileNamestring✅Dosya adı. Boş olamaz ve .pdf uzantısıyla bitmelidir (büyük/küçük harf duyarsız).
Base64Contentstring✅Base64 kodlanmış dosya içeriği. Çözüldüğünde %PDF imzasıyla başlayan geçerli bir PDF olmalıdır.
ContentTypestring—Yok sayılır; sunucu içerik türünü her zaman application/pdf olarak atar.

⚠️ Attachments içinde gönderilen her eleman için FileName ve Base64Content zorunludur. Belgeler işe DocumentType = Other tipiyle kaydedilir.

Örnek İstek (ek belgesiz):

{
"JobRejectReason": 12,
"Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}

Örnek İstek (ek belgeli):

{
"JobRejectReason": 12,
"Message": "Revize talebinin red gerekçeleri ekteki belgede detaylandırılmıştır.",
"Attachments": [
{
"FileName": "red-gerekce.pdf",
"ContentType": "application/pdf",
"Base64Content": "JVBERi0xLjAK"
}
]
}

İstek Gövdesi Şeması (JSON Schema)

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "RejectRevisePremiumRequest",
"type": "object",
"required": ["JobRejectReason", "Message"],
"properties": {
"JobRejectReason": {
"type": "integer",
"format": "int32",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"$comment": "ReasonCategory = PremiumRevise olan kayıtlar. Liste: GET /api/offline/rejectreasons/4 — https://docs.insurgateway.com/offline-constants"
},
"Message": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"Attachments": {
"type": ["array", "null"],
"items": { "$ref": "#/$defs/PremiumFileRequest" }
}
},
"$defs": {
"PremiumFileRequest": {
"type": "object",
"required": ["FileName", "Base64Content"],
"properties": {
"FileName": {
"type": "string",
"minLength": 5,
"pattern": "(?i)\\.pdf$"
},
"Base64Content": {
"type": "string",
"minLength": 1,
"contentEncoding": "base64",
"contentMediaType": "application/pdf",
"$comment": "Çözüldüğünde %PDF imzasıyla başlamalıdır."
},
"ContentType": {
"type": ["string", "null"],
"$comment": "Yok sayılır; sunucu application/pdf atar."
}
}
}
}
}

💡 Şemada additionalProperties: false bilinçli olarak yoktur: API bilinmeyen alanları yok sayar, isteği reddetmez.


Başarılı Yanıt (204 No Content)

Teklif revize talebi başarıyla reddedildiğinde HTTP 204 No Content döner. Yanıt gövdesi yoktur.

Bu noktada sunucu tarafında gerçekleşenler:

Tablo / Sistemİşlem
JobsCurrentStage = PremiumReviseRejected, RejectReasonId güncellenir.
JobActionsPremiumReviseRejected tipinde yeni aksiyon eklenir; RequestDetails alanına red mesajı yazılır.
PlatformRed aksiyonu ve red nedeni platform servisine iletilir.
JobDocumentsAttachments gönderildiyse belgeler DocumentType = Other ile kaydedilir.
E-postaAcente için e-posta gönderimi kapalı değilse red bildirimi gönderilir.

💡 İşlemin sonucunu doğrulamak için GET /api/offline/jobs/:jobId/actions çağrılarak oluşan red aksiyonu okunabilir.


Hatalı Yanıt (400 Bad Request)

Alan doğrulaması başarısız olduğunda ApiResponse zarfı içinde alan bazlı hata listesi döner.

AlanTürAçıklama
StatusbooleanHatalarda her zaman false.
CodestringHata kodu. Doğrulama hatalarında Validation.General.
MessagestringGenel hata açıklaması.
Responsearray | nullDoğrulama hatalarında { Field, Message } listesi; diğer hatalarda null.

Alan doğrulama mesajları:

FieldMessage
JobIdJobId must be greater than 0.
JobRejectReasonJobRejectReason is required.
JobRejectReasonJobRejectReason must be greater than 0.
MessageMessage is required.
MessageMessage must not be empty.
MessageMessage must not exceed 500 characters.
Attachments[n].FileNameFileName must not be empty.
Attachments[n].FileNameOnly PDF files are allowed.
Attachments[n].Base64ContentBase64Content must not be empty.
Attachments[n].Base64ContentBase64Content must be a valid base64 encoded string.
Attachments[n].Base64ContentFile content is not a valid PDF.

Örnek Hatalı Yanıt:

{
"Status": false,
"Code": "Validation.General",
"Message": "One or more validation errors occurred",
"Response": [
{
"Field": "JobRejectReason",
"Message": "JobRejectReason is required."
},
{
"Field": "Message",
"Message": "Message must not be empty."
}
]
}

⚠️ JobRejectReason gönderilmediğinde ya da 0 gönderildiğinde JobRejectReason is required., negatif gönderildiğinde JobRejectReason must be greater than 0. döner.

⚠️ Model binding hataları (bozuk JSON, sayısal alana metin) doğrulamadan önce oluşur ve ApiResponse zarfı yerine farklı bir gövdeyle 400 dönebilir.


Hatalı Yanıt (401 Unauthorized)

Token gönderilmediğinde, geçersiz olduğunda veya süresi dolduğunda HTTP 401 Unauthorized döner. Yanıt gövdesi boştur.

💡 Token’ın süresi dolduysa yanıtta Token-Expired: true başlığı bulunur. Bu durumda POST /api/authentication/refreshtoken ile yeni token alınmalıdır.


Hatalı Yanıt (403 Forbidden)

Token geçerli olduğu hâlde yetki kapsamı yetersiz olduğunda döner.

KodMesajOluşma Nedeni
OfflineUsers.InsuranceCompanyNotFoundNo valid insurance company assignment found in token.Token’da sigorta şirketi ataması yok.
OfflineUsers.UserIdentityNotResolvedUser identity could not be resolved from token.Token’dan kullanıcı kimliği çözülemedi.
OfflineJobs.JobOwnershipDeniedYou do not have permission to access this job.InsuranceCompanyAPIUser rolündeki kullanıcı işin sahibi değil.

Kullanıcı tanınan rollerden birine ya da Update yetkisine sahip değilse 403 boş gövdeyle döner.

Örnek Hatalı Yanıt:

{
"Status": false,
"Code": "OfflineJobs.JobOwnershipDenied",
"Message": "You do not have permission to access this job.",
"Response": null
}

Hatalı Yanıt (404 Not Found)

KodMesajOluşma Nedeni
OfflineJobs.JobNotFoundNo job found for the requested JobId: {jobId}.Verilen :jobId ile bir iş bulunamadı.
JobState.PlatformUserNotFoundPlatform user to receive the action not found for job {jobId}.Revize talebini açan platform kullanıcısı bulunamadığı için red aksiyonu kaydedilemedi.

Örnek Hatalı Yanıt:

{
"Status": false,
"Code": "OfflineJobs.JobNotFound",
"Message": "No job found for the requested JobId: 999999.",
"Response": null
}

Hatalı Yanıt (500 Internal Server Error)

State machine geçişi sırasında oluşan iş kuralı ihlalleri ve beklenmeyen hatalar bu kodla döner.

KodMesajOluşma Nedeni
JobState.UnknownBusinessRuleAn unknown business rule error occurred: {detay}İş kuralı ihlali. En sık nedenleri: işin PremiumReviseRequested aşamasında olmaması ya da red bilgisinin platforma iletilememesi.
JobState.TransitionErrorAn unexpected error occurred during job state transition.Beklenmeyen sistem hatası.

Aşağıdaki örnek, red bilgisi platforma iletilemediğinde döner:

{
"Status": false,
"Code": "JobState.UnknownBusinessRule",
"Message": "An unknown business rule error occurred: Aksiyon bilgileri platforma iletilemedi! Hata Mesajı: Servis yanıt vermedi.",
"Response": null
}

⚠️ Red bilgisi platforma iletilemediğinde aksiyon geri alınır ve iş PremiumReviseRequested aşamasına döndürülür; istek yeniden denenebilir.

⚠️ İşin yanlış aşamada olmasından kaynaklanan JobState.UnknownBusinessRule bir iş kuralı ihlalidir; 500 dönmesine rağmen isteği aynen tekrarlamak sonucu değiştirmez. Hata mesajındaki aşama bilgisi okunarak işin doğru aşamada olup olmadığı kontrol edilmelidir.

Authentication

AuthorizationBearer

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

Path parameters

jobIdintegerRequired

Teklif revize talebi reddedilecek işin benzersiz kimliği.

Headers

AuthorizationstringOptional

Request

This endpoint expects an object.

Response

No Content

Errors

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