Skip to navigation

Reject Policy

Reject Policy

Sigorta şirketinin, PolicyRequested aşamasındaki bir işin (job) poliçe talebini reddetmesini sağlar. İstek başarılı olduğunda PolicyRejected state geçişi tetiklenir; red nedeni işe işlenir, aynı teklifteki diğer işler yeniden aktif edilir ve ilgili taraflara bildirim e-postası gönderilir.


Uç Nokta (Endpoint)

POST {{baseUrl}}/api/offline/jobs/:jobId/policies/reject


Kullanım

Bu servis, poliçeleşme talebi karşılanamadığında kullanılır. Önerilen akış:

  1. Authentication Login servisinden token alınır.
  2. GET /api/offline/jobs ile PolicyRequested aşamasındaki işler listelenir.
  3. GET /api/offline/rejectreasons/1 ile Policy kategorisindeki geçerli red nedenleri çekilir. Dönen liste, token’daki sigorta şirketi için tanımlı olanlarla sınırlıdır.
  4. Bu servis, seçilen rejectReasonId ve açıklama mesajıyla çağrılır.
  5. 204 No Content dönerse iş PolicyRejected aşamasına geçmiştir. Acente bu işten sonra yeniden poliçe talebinde bulunabilir (PolicyRejected → PolicyRequested geçişi tanımlıdır).

💡 Red nedeni listesini sabit kodlamayın: IncludedInsuranceCompanies / ExcludedInsuranceCompanies kısıtları nedeniyle geçerli nedenler sigorta şirketine göre değişir. Her zaman rejectreasons servisinden okuyun.

⚠️ İş PolicyRequested aşamasında değilse state machine geçişe izin vermez ve istek 400 Bad Request / OfflinePolicies.StateTransitionFailed ile sonuçlanı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 InsuranceCompanyAPIUser, InsuranceCompanyAPIAdmin veya Supervizor rollerinden en az birini ve Update yetkisini taşıması gerekir. InsuranceCompanyAPIUser yalnızca kendi üzerine atanmış işleri reddedebilir; InsuranceCompanyAPIAdmin ve Supervizor şirket kapsamındaki tüm işleri reddedebilir.


İstek Parametreleri (Path Variables)

ParametreTürZorunluMinMaxAçıklama
jobIdinteger✅12147483647Poliçe talebi reddedilecek işin benzersiz kimliği.

⚠️ jobId yalnızca yoldan alınır. Gövdede jobId göndermek etkisizdir; sunucu bu alanı her zaman yol parametresiyle ezer.


İstek Gövdesi

ParametreTürZorunluAçıklama
messagestring✅Red açıklaması. Boş olamaz, en fazla 1000 karakter. Kaydedilmeden önce sunucuda HTML/script içeriğinden arındırılır.
rejectReasonIdinteger✅Red nedeni kimliği. Sıfırdan büyük olmalı, Policy kategorisinde (ReasonCategory = 1) tanımlı olmalı ve işin sigorta şirketine kapalı olmamalıdır. Geçerli liste için GET /api/offline/rejectreasons/1.
attachmentobject—Reddi destekleyen PDF belge. Bkz. PolicyFileRequest nesnesi.

PolicyFileRequest nesnesi (attachment):

ParametreTürZorunluAçıklama
fileNamestring✅Dosya adı. .pdf uzantısıyla bitmelidir.
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.

⚠️ attachment gönderilirse fileName ve base64Content alanlarının ikisi de zorunlu hâle gelir. Belge, işe DocumentType = Other tipiyle kaydedilir.

Örnek İstek (ek belgesiz):

{
"message": "Risk kabul kriterleri poliçe talebini karşılamamaktadır.",
"rejectReasonId": 5
}

Örnek İstek (ek belgeli):

{
"message": "Poliçe reddi gerekçeleri ekteki belgede detaylandırılmıştır.",
"rejectReasonId": 5,
"attachment": {
"fileName": "rejection_reasons.pdf",
"base64Content": "JVBERi0xLjQKJeLjz9M..."
}
}

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

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "RejectPolicyRequest",
"type": "object",
"required": ["message", "rejectReasonId"],
"properties": {
"message": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"rejectReasonId": {
"type": "integer",
"format": "int32",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"$comment": "ReasonCategory = Policy olan kayıtlar. Liste: GET /api/offline/rejectreasons/1 — https://docs.insurgateway.com/offline-constants"
},
"attachment": { "$ref": "#/$defs/PolicyFileRequest" }
},
"$defs": {
"PolicyFileRequest": {
"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)

Poliçe 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 = PolicyRejected, RejectReasonId güncellenir.
JobActionsPolicyRejected tipinde yeni aksiyon eklenir; RequestDetails alanına red mesajı yazılır.
JobDocumentsattachment gönderildiyse belge DocumentType = Other ile kaydedilir.
PlatformRed aksiyonu ve red nedeni platform servisine iletilir.
Diğer işlerAynı teklifteki diğer işler yeniden aktif edilir.
E-postaAcente iletişimi kapalı değilse red bildirimi gönderilir.

Hatalı Yanıt (400 Bad Request)

Hatalar ApiResponse sarmalayıcısıyla döner:

AlanTürAçıklama
StatusbooleanHata durumunda her zaman false.
CodestringHata kodu. Alan ve red nedeni doğrulamalarında Validation.General, state geçişi hatalarında OfflinePolicies.StateTransitionFailed.
MessagestringHata açıklaması.
Responsearray | nullDoğrulama hatalarında { Field, Message } listesi; diğer hatalarda null.

Alan doğrulama hatası:

{
"Status": false,
"Code": "Validation.General",
"Message": "One or more validation errors occurred",
"Response": [
{ "Field": "Message", "Message": "Message is required." },
{ "Field": "RejectReasonId", "Message": "RejectReasonId must be greater than zero." }
]
}

Red nedeni doğrulama hataları — Response[].Field alanında dönen kodlar:

FieldNe zaman oluşur
JobRejectReason.RejectReasonNotFoundGönderilen rejectReasonId sistemde kayıtlı değil.
JobRejectReason.InvalidRejectReasonCategoryRed nedeni Policy kategorisine ait değil.
JobRejectReason.RejectReasonNotAllowedForInsuranceCompanyRed nedeni, işin bağlı olduğu sigorta şirketine kapalı.
{
"Status": false,
"Code": "Validation.General",
"Message": "One or more validation errors occurred",
"Response": [
{
"Field": "JobRejectReason.InvalidRejectReasonCategory",
"Message": "The reject reason must be in the Policy category."
}
]
}

State geçişi hatası — iş PolicyRequested aşamasında değilse ya da red bilgisi platforma iletilemezse:

{
"Status": false,
"Code": "OfflinePolicies.StateTransitionFailed",
"Message": "Policy rejection failed: Aksiyon bilgileri platforma iletilemedi! Hata Mesajı: Servis yanıt vermedi.",
"Response": null
}

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


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)

CodeNe zaman oluşur
OfflineUsers.InsuranceCompanyNotFoundToken’da geçerli bir sigorta şirketi ataması yok.
OfflineUsers.UserIdentityNotResolvedToken’dan kullanıcı kimliği çözümlenemedi.
OfflineJobs.JobOwnershipDeniedInsuranceCompanyAPIUser rolündeki kullanıcı, kendisine ait olmayan bir işi reddetmeye çalıştı.
{
"Status": false,
"Code": "OfflineJobs.JobOwnershipDenied",
"Message": "You do not have permission to access this job.",
"Response": null
}

Hatalı Yanıt (404 Not Found)

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

Hatalı Yanıt (500 Internal Server Error)

State geçişi sırasında beklenmeyen bir hata oluştuğunda JobState.TransitionError döner.

{
"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

Poliçe 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