Get Job Actions

## Get Job Actions Belirtilen işe (`jobId`) ait tüm aksiyon kayıtlarını — mesajlar, prim/poliçe/zeyil talepleri, red ve onay adımları — en yeni kayıt başta olmak üzere sayfalanmış biçimde döner. --- ### Uç Nokta (Endpoint) `GET {{baseUrl}}/api/offline/jobs/{jobId}/actions` --- ### Kullanım Bir işin aksiyon geçmişini okumak ve tekil aksiyon detaylarına inmeden önce hangi kayıtların bulunduğunu görmek için kullanılır. Önerilen akış: 1. `Authentication Login` servisinden token alınır. 2. `Jobs` servisinden ilgilenilen işin `jobId` değeri elde edilir. 3. Bu servis çağrılarak işin aksiyon listesi sayfalanmış hâlde alınır. 4. Listedeki bir kaydın detayına inmek için kaydın `Id` değeri ile `Get Job Action By Id` çağrılır. 5. Bir aksiyonun hangi alanlarla (`RequestDetails`) oluşturulduğu gerekiyorsa kaydın `ActionType` değeri ile `Get Job Action By Stage` çağrılır. > 💡 Kayıtlar `Id` alanına göre azalan sırada döner; `Page = 1` her zaman en yeni aksiyonları içerir. > ⚠️ `Message` ve `Attachments` alanları Platform tarafındaki mesaj servisinden zenginleştirilir. Platform servisi yanıt vermezse istek yine `200 OK` döner, ancak bu iki alan boş kalır. Bu nedenle boş `Message` değerini "mesaj yok" olarak yorumlamayın. --- ### 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ık | Tür | Zorunlu | Açıklama | | --- | --- | --- | --- | | `Authorization` | string | ✅ | `Bearer` biçiminde erişim token'ı. | Çağıranın aşağıdaki rollerden en az birine sahip olması gerekir: | Rol | Erişim Kapsamı | | --- | --- | | `InsuranceCompanyAPIUser` | Yalnızca kendisine ait işlerin aksiyonlarına erişir. | | `InsuranceCompanyAPIAdmin` | Token'daki sigorta şirketlerine ait tüm işlere erişir. | | `Supervizor` | Token'daki sigorta şirketlerine ait tüm işlere erişir. | > ⚠️ İş, her hâlükârda token'daki sigorta şirketi kapsamıyla sınırlıdır. Kapsam dışındaki bir `jobId` için servis `403` değil **`404 Not Found`** döner; bu, şirket dışı iş kimliklerinin varlığının sızmasını engeller. --- ### İstek Parametreleri **Rota (Route) Parametreleri** | Parametre | Tür | Zorunlu | Açıklama | | --- | --- | --- | --- | | `jobId` | integer | ✅ | Aksiyonları istenen işin kimliği. Rotada `int` kısıtı vardır; sayısal olmayan bir değer gönderilirse rota eşleşmez ve `404` döner. | **Sorgu (Query) Parametreleri** | Parametre | Tür | Zorunlu | Açıklama | | --- | --- | --- | --- | | `page` | integer | — | Sayfa numarası. Varsayılan `1`. `1` veya daha büyük olmalıdır. | | `pageSize` | integer | — | Sayfa başına kayıt sayısı. Varsayılan `10`. `1` ile `100` arasında olmalıdır. | **Örnek İstek:** ``` GET {{baseUrl}}/api/offline/jobs/100931/actions?page=1&pageSize=10 Authorization: Bearer <token> ``` --- ### Başarılı Yanıt (200 OK) Yanıt gövdesi `PagedData` yapısındadır. > ⚠️ API `Newtonsoft.Json` `DefaultContractResolver` ile serileştirilir; alan adları C# property adlarıyla aynı, yani **PascalCase** döner (`TotalCount`, `Items`, `JobId` …). camelCase bekleyen bir istemci alanları `null` görür. | Alan | Tür | Açıklama | | --- | --- | --- | | `TotalCount` | integer | İşe ait toplam aksiyon sayısı. | | `Page` | integer | Dönen sayfanın numarası. | | `Size` | integer | Sayfa başına kayıt sayısı. | | `TotalPage` | integer | Toplam sayfa sayısı. | | `HasNextPage` | boolean | Sonraki sayfa var mı. | | `HasPreviousPage` | boolean | Önceki sayfa var mı. | | `Items` | array | `JobActionDTO` kayıtları. | **`Items`** **nesnesi (****`JobActionDTO`****):** | Alan | Tür | Açıklama | | --- | --- | --- | | `Id` | long | Aksiyonun benzersiz kimliği. `Get Job Action By Id` çağrısında `jobActionId` olarak kullanılır. | | `JobId` | integer | Aksiyonun bağlı olduğu işin kimliği. | | `AgentId` | integer | Aksiyonun ilişkili olduğu acentenin kimliği. | | `CreateDate` | datetime | Aksiyonun oluşturulma tarihi (`yyyy-MM-ddTHH:mm:ss`). | | `Message` | string | null | | `ToFullName` | string | null | | `FromFullName` | string | null | | `MessageFrom` | integer | Gönderen taraf. `MessageSentBy` değeri. | | `MessageTo` | integer | Alıcı taraf. `MessageSentBy` değeri. Alıcı kullanıcı tanımlı değilse `-1` (Tanımsız) döner. | | `Attachments` | array | Aksiyona ait ekler. Platform mesaj servisinden doldurulur; yoksa boş dizi. | | `PlatformProposalId` | string | null | | `ActionType` | integer | Aksiyonun stage'i. `Stage` değeri — tam liste için [bknz.](https://docs.insurgateway.com/offline-constants#offline-stage-action) | **`MessageFrom`** **/** **`MessageTo`** **değerleri (****`MessageSentBy`****):** | Değer | Ad | Açıklama | | --- | --- | --- | | `-1` | `Undefined` | Taraf çözümlenemedi (ör. alıcı kullanıcı atanmamış). | | `0` | `InsuranceCompany` | Sigorta şirketi kullanıcısı. | | `1` | `Platform` | Platform (acente) tarafı. | **`Attachments`** **nesnesi (****`OfflineAttachmentDTO`****):** | Alan | Tür | Açıklama | | --- | --- | --- | | `AttachmentId` | long | Ekin kimliği. | | `JobActionId` | long | Ekin bağlı olduğu aksiyonun kimliği. | | `AgentId` | integer | Eki yükleyen acentenin kimliği. | | `Title` | string | Dosya adı / başlığı. | | `Extension` | string | Dosya uzantısı (`pdf`, `docx` …). | | `Bytes` | string | null | | `ErrorExplanation` | string | null | | `PlatformDocumentId` | string | null | **Örnek Başarılı Yanıt:** ``` json { "TotalCount": 25, "Page": 1, "Size": 10, "TotalPage": 3, "HasNextPage": true, "HasPreviousPage": false, "Items": [ { "Id": 1234, "JobId": 100931, "AgentId": 42, "CreateDate": "2026-05-13T10:30:00", "Message": "Eksik belge nedeniyle teklif reddedilmiştir.", "ToFullName": "Ahmet Yılmaz", "FromFullName": "InsurCo API User", "MessageFrom": 0, "MessageTo": 1, "Attachments": [], "PlatformProposalId": "PROP-001", "ActionType": 2 } ] } ``` --- ### Hatalı Yanıt (400 Bad Request) Doğrulama hatalarında gövde standart hata zarfıdır ve `Response` alanı alan bazlı detayları taşır: ``` json { "Status": false, "Code": "Validation.General", "Message": "One or more validation errors occurred", "Response": [ { "Field": "PageSize", "Message": "PageSize must be between 1 and 100." } ] } ``` | Alan | Tür | Açıklama | | --- | --- | --- | | `Status` | boolean | Hatalı yanıtlarda daima `false`. | | `Code` | string | Hata kodu (`Validation.General`, `OfflineJobs.JobNotFound` …). | | `Message` | string | Hatanın açıklaması. | | `Response` | array | null | Olası doğrulama mesajları: | Alan | Mesaj | | --- | --- | | `Page` | `Page must be greater than or equal to 1.` | | `PageSize` | `PageSize must be between 1 and 100.` | > ⚠️ `400` yanıtı **üç farklı gövde biçiminde** gelebilir: (1) yukarıdaki JSON zarfı — iş kuralı doğrulaması; (2) düz metin — `page`/`pageSize` sayısal olmayan bir değer olduğunda model binding hatası; (3) düz metin (`İşlem sırasında bir hata oluştu! RequestId: …`) — beklenmeyen sunucu hatası `[HandleException]` filtresi tarafından `400`'e çevrildiğinde. İstemcide gövdeyi JSON olarak ayrıştırmadan önce `Content-Type` kontrol edilmelidir. --- ### Hatalı Yanıt (401 Unauthorized) Token gönderilmediğinde, geçersiz olduğunda veya süresi dolduğunda `401 Unauthorized` döner. Yanıt gövdesi boştur; bilgi `WWW-Authenticate` başlığındadır. > 💡 Token'ın süresi dolduğunda yanıta `Token-Expired: true` başlığı eklenir. İstemci bu başlığı görürse `Refresh Token` servisiyle token'ı yenileyip isteği tekrarlamalıdır. --- ### Hatalı Yanıt (403 Forbidden) İki farklı nedenden dolayı oluşur: **1\. Rol yetersizliği** — çağıranın `InsuranceCompanyAPIUser`, `InsuranceCompanyAPIAdmin` veya `Supervizor` rollerinden hiçbiri yoksa. Gövde boştur. **2\. Token/erişim kontrolü** — gövde standart hata zarfıdır: | Kod | Mesaj | Ne zaman | | --- | --- | --- | | `OfflineUsers.InsuranceCompanyNotFound` | `No valid insurance company assignment found in token.` | Token'da sigorta şirketi bilgisi yok. | | `OfflineUsers.UserIdentityNotResolved` | `User identity could not be resolved from token.` | Token'dan kullanıcı kimliği çözümlenemedi. | | `OfflineJobs.JobOwnershipDenied` | `You do not have permission to access this job.` | `InsuranceCompanyAPIUser` rolündeki kullanıcı, kendisine ait olmayan bir işi sorguladı. | ``` json { "Status": false, "Code": "OfflineJobs.JobOwnershipDenied", "Message": "You do not have permission to access this job.", "Response": null } ``` --- ### Hatalı Yanıt (404 Not Found) İş bulunamadığında veya iş token'daki sigorta şirketi kapsamı dışında olduğunda döner. | Kod | Mesaj | | --- | --- | | `OfflineJobs.JobNotFound` | `No job found for the requested JobId: {jobId}.` | ``` json { "Status": false, "Code": "OfflineJobs.JobNotFound", "Message": "No job found for the requested JobId: 999999.", "Response": null } ```

Authentication

AuthorizationBearer

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

Path parameters

jobIdintegerRequired

Headers

AuthorizationstringOptional

Query parameters

pageintegerOptional
pageSizeintegerOptional

Response headers

Content-TypestringOptional

Response

OK

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error