Get Job Action By Id

## Get Job Action By Id Belirtilen işe ait tek bir aksiyon kaydını, aksiyonun kimliğine (`jobActionId`) göre döner. --- ### Uç Nokta (Endpoint) `GET {{baseUrl}}/api/offline/jobs/{jobId}/actions/{jobActionId}` --- ### Kullanım `Get Job Actions` listesinden seçilen bir aksiyonun tekil kaydını okumak için kullanılır. Önerilen akış: 1. `Authentication Login` servisinden token alınır. 2. `Get Job Actions` çağrılarak işin aksiyon listesi alınır. 3. Listeden ilgilenilen kaydın `Id` değeri okunur. 4. Bu değer `jobActionId` olarak bu servise gönderilir. > ⚠️ `jobActionId` **aynı iş içinde** aranır. Var olan ama başka bir işe ait bir aksiyon kimliği gönderildiğinde servis `OfflineAction.ActionNotFound` ile `404` döner. > 💡 Bu servis tekil kaydı Platform mesaj servisinden zenginleştirmez. `Message` ve `Attachments` alanları her zaman boş döner; mesaj içeriği gerekiyorsa `Get Job Actions` listesindeki kayıt kullanılmalıdı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ı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. --- ### İstek Parametreleri **Rota (Route) Parametreleri** | Parametre | Tür | Zorunlu | Açıklama | | --- | --- | --- | --- | | `jobId` | integer | ✅ | Aksiyonun bağlı olduğu işin kimliği. `0`'dan büyük olmalıdır. Rotada `int` kısıtı vardır; sayısal olmayan bir değer `404` üretir. | | `jobActionId` | integer | ✅ | İstenen aksiyonun kimliği. `0`'dan büyük olmalıdır. Rotada `int` kısıtı vardır; sayısal olmayan bir değer `404` üretir. | Bu uç nokta sorgu (query) parametresi almaz. **Örnek İstek:** ``` GET {{baseUrl}}/api/offline/jobs/100931/actions/1234 Authorization: Bearer <token> ``` --- ### Başarılı Yanıt (200 OK) Yanıt gövdesi tek bir `JobActionDTO` nesnesidir. > ⚠️ API `Newtonsoft.Json` `DefaultContractResolver` ile serileştirilir; alan adları C# property adlarıyla aynı, yani **PascalCase** döner (`Id`, `JobId`, `CreateDate` …). camelCase bekleyen bir istemci alanları `null` görür. | Alan | Tür | Açıklama | | --- | --- | --- | | `Id` | long | Aksiyonun benzersiz kimliği. | | `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 | Bu uç noktada doldurulmaz; daima boş dizi döner. | | `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ı. | **Örnek Başarılı Yanıt:** ``` json { "Id": 1234, "JobId": 100931, "AgentId": 42, "CreateDate": "2026-05-13T10:30:00", "Message": null, "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": "JobActionId", "Message": "JobActionId must be greater than 0." } ] } ``` | Alan | Tür | Açıklama | | --- | --- | --- | | `Status` | boolean | Hatalı yanıtlarda daima `false`. | | `Code` | string | Hata kodu (`Validation.General`, `OfflineAction.ActionNotFound` …). | | `Message` | string | Hatanın açıklaması. | | `Response` | array | null | Olası doğrulama mesajları: | Alan | Mesaj | | --- | --- | | `JobId` | `JobId must be greater than 0.` | | `JobActionId` | `JobActionId must be greater than 0.` | > ⚠️ `400` yanıtı **üç farklı gövde biçiminde** gelebilir: (1) yukarıdaki JSON zarfı — iş kuralı doğrulaması; (2) düz metin — 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) İki farklı durumda döner: | Kod | Mesaj | Ne zaman | | --- | --- | --- | | `OfflineJobs.JobNotFound` | `No job found for the requested JobId: {jobId}.` | İş yok veya token'daki sigorta şirketi kapsamı dışında. | | `OfflineAction.ActionNotFound` | `Job action with id {jobActionId} not found.` | İş erişilebilir, ancak bu iş içinde verilen kimlikte aksiyon yok. | ``` json { "Status": false, "Code": "OfflineAction.ActionNotFound", "Message": "Job action with id 999999 not found.", "Response": null }https://docs.insurgateway.com/offline-constants#offline-stage-action ```

Authentication

AuthorizationBearer

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

Path parameters

jobIdintegerRequired
jobActionIdintegerRequired

Headers

AuthorizationstringOptional

Response headers

Content-TypestringOptional

Response

OK

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error