Get Job Action By Stage

## Get Job Action By Stage Belirtilen iş üzerinde, verilen `Stage` değerine ait **en son** aksiyonun `RequestDetails` içeriğini döner; yani o adımın hangi alanlarla oluşturulduğunu gösterir. --- ### Uç Nokta (Endpoint) `GET {{baseUrl}}/api/offline/jobs/{jobId}/actions/stage/{stageId}` --- ### Kullanım Bir iş adımında (ör. teklif reddi, poliçe talebi) hangi alanların gönderildiğini okumak için kullanılır. `Get Job Action By Id` aksiyonun **üst bilgisini**, bu servis ise aksiyonun **gönderilen alanlarını** döner. Ö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. İlgilenilen kaydın `ActionType` değeri okunur. 4. Bu değer `stageId` olarak bu servise gönderilir ve `RequestDetails` listesi alınır. > ⚠️ Aynı stage bir iş üzerinde birden fazla kez oluşabilir (ör. iki kez prim revize talebi). Bu servis her zaman **en yüksek** **`Id`****'ye sahip**, yani en son aksiyonu döner. Belirli bir aksiyonun detayı gerekiyorsa aksiyon kimliğiyle çalışan bir uç nokta kullanılmalıdır. > 💡 Dönen `ActionId` değeri, aynı kaydı `Get Job Action By Id` ile sorgulamak için doğrudan kullanılabilir. --- ### 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 | ✅ | İş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. | | `stageId` | integer | ✅ | Aranan adımın `Stage` değeri. Tanımlı bir enum değeri olmalıdır. [bknz.](https://docs.insurgateway.com/offline-constants#offline-stage-action) | Bu uç nokta sorgu (query) parametresi almaz. > ⚠️ `stageId` rotasında `int` kısıtı **yoktur**. Sayısal olmayan bir değer (`.../stage/abc`) gönderildiğinde yanıt `404` değil, düz metin gövdeli bir `400 Bad Request` olur. **Örnek İstek:** ``` GET {{baseUrl}}/api/offline/jobs/100931/actions/stage/2 Authorization: Bearer <token> ``` --- ### Başarılı Yanıt (200 OK) Yanıt gövdesi bir `RequestDetailResponse` nesnesidir. > ⚠️ API `Newtonsoft.Json` `DefaultContractResolver` ile serileştirilir; alan adları C# property adlarıyla aynı, yani **PascalCase** döner (`RequestDetails`, `ActionId` …). camelCase bekleyen bir istemci alanları `null` görür. | Alan | Tür | Açıklama | | --- | --- | --- | | `RequestDetails` | array | null | | `Stage` | integer | İstekte gönderilen `stageId` değeri. | | `JobId` | integer | İşin kimliği. | | `ActionId` | long | Bulunan aksiyonun kimliği. `Get Job Action By Id` çağrısında kullanılabilir. | **`RequestDetails`** **nesnesi (****`KeyPO`****):** | Alan | Tür | Açıklama | | --- | --- | --- | | `Id` | integer | Alanın (key) kimliği. `OutSourceProcess Usages` servisindeki `KeyId` ile aynı sözlüğe aittir. | | `KeyName` | string | Alanın görünen adı. | | `KeyValue` | array | null | > ⚠️ `KeyValue` bir dizidir, düz `string` değil. Tek değerli alanlarda dahi `["34ABC123"]` biçiminde gelir. **Örnek Başarılı Yanıt:** ``` json { "RequestDetails": [ { "Id": 5, "KeyValue": ["34ABC123"], "KeyName": "Plaka" }, { "Id": 1, "KeyValue": ["11111111111"], "KeyName": "Sigortalı TC Kimlik No" }, { "Id": 38, "KeyValue": ["Hususi"], "KeyName": "Araç Kullanım Şekli" } ], "Stage": 2, "JobId": 100931, "ActionId": 1234 } ``` --- ### 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": "StageId", "Message": "StageId is not a valid Stage value." } ] } ``` | Alan | Tür | Açıklama | | --- | --- | --- | | `Status` | boolean | Hatalı yanıtlarda daima `false`. | | `Code` | string | Hata kodu (`Validation.General`, `OfflineAction.ActionNotFoundForStage` …). | | `Message` | string | Hatanın açıklaması. | | `Response` | array | null | Olası doğrulama mesajları: | Alan | Mesaj | | --- | --- | | `JobId` | `JobId must be greater than 0.` | | `StageId` | `StageId is not a valid Stage value.` | > ⚠️ `400` yanıtı **üç farklı gövde biçiminde** gelebilir: (1) yukarıdaki JSON zarfı — iş kuralı doğrulaması; (2) düz metin — `stageId` sayısal olmadığında 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.ActionNotFoundForStage` | `No action found for stage id '{stageId}'.` | İş erişilebilir, ancak bu iş üzerinde o stage'e ait aksiyon hiç oluşmamış. | ``` json { "Status": false, "Code": "OfflineAction.ActionNotFoundForStage", "Message": "No action found for stage id '33'.", "Response": null } ```

Authentication

AuthorizationBearer

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

Path parameters

jobIdstringRequired
stageIdstringRequired

Headers

AuthorizationstringOptional

Response headers

Content-TypestringOptional

Response

OK

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error