Create Message

## İşe Mesaj Gönder ### Endpoint Bilgileri | Alan | Değer | | --- | --- | | **Method** | `POST` | | **URL** | `{{baseUrl}}/api/Offline/jobs/{jobId}/Messages` | | **Content-Type** | `application/json` | | **Yetkilendirme** | Bearer Token + `Create` politikası | --- Sigorta şirketinin, bir iş üzerinden platformdaki ilgili kullanıcıya **mesaj** ve isteğe bağlı **ek dosya** iletmesi için kullanılır. Başarılı istekte işe `Mesaj` (`Message`) tipinde aksiyon kaydı eklenir, aksiyon platforma iletilir, varsa ek dosyalar kaydedilir ve acentede mailing kapalı değilse platform kullanıcısına bilgilendirme maili gönderilir. > Mesaj işin aşamasını **değiştirmez** ve işin **her aşamasında** gönderilebilir; kaynak aşama kısıtı yoktur. --- ### Route Parametreleri | Parametre | Tip | Zorunlu | Açıklama | | --- | --- | --- | --- | | `jobId` | `integer` | Evet | Mesajın gönderileceği işin Id bilgisi | --- --- ### İstek Modeli — `CreateMessageRequest` | Alan | Tip | Zorunlu | Açıklama | Doğrulama | | --- | --- | --- | --- | --- | | `Message` | `string` | Evet | İletilecek mesaj metni | Boş olamaz: `"Message is required."` <br>Maks. 500 karakter: `"Message cannot exceed 500 characters."` | | `Attachments` | `FileRequest[]` | Hayır | Mesaja eklenecek dosyalar | Gönderilirse her eleman için `FileRequest` doğrulamaları uygulanır | #### Ek Dosya — `FileRequest` | Alan | Tip | Zorunlu | Açıklama | Doğrulama | | --- | --- | --- | --- | --- | | `FileName` | `string` | Evet\* | Dosya adı | Boş olamaz: `"Attachment FileName must not be empty."` | | `Base64Content` | `string` | Evet\* | Base64 kodlu dosya içeriği | Boş olamaz: `"Attachment Base64Content must not be empty."` <br>Geçerli base64 olmalı: `"Attachment Base64Content must be a valid base64 encoded string."` | | `ContentType` | `string` | Hayır | MIME türü. Dosyanın uzantı bilgisi olarak kaydedilir | Doğrulanmaz | > \* Bu alanlar yalnızca `Attachments` dizisi gönderildiğinde doğrulanır. Dosya türü kısıtı yoktur; uzantı ve içerik PDF olmak zorunda değildir. Ekler `Diğer` (`Other`) doküman tipiyle kaydedilir. --- ### İş Kuralları State geçişi sırasında sırasıyla aşağıdaki kontroller yapılır: 1. Mesajı karşılayacak platform kullanıcısı bulunmalıdır: - İş `Prim Reddedildi` aşamasındaysa → son `Prim İsteği`ni gönderen kullanıcı - İş `Toplu Prim Reddedildi` aşamasındaysa → son `Toplu Prim İsteği`ni gönderen kullanıcı - Diğer tüm aşamalarda → işteki son platform kullanıcısı aksiyonunu gönderen kullanıcı 2. Mesajı gönderen kullanıcı sistemde kayıtlı olmalıdır. 3. Aksiyon platforma iletilebilmelidir. > **Geri alma davranışı:** 3. kural başarısız olursa oluşturulan aksiyon kaydı silinir; ek dosyalar kaydedilmez ve mail gönderilmez. --- ### Yanıt #### `201 Created` — Başarılı Yanıt Gövde boştur. --- ### Hata Senaryoları #### `400 Bad Request` — Doğrulama Hatası İstek modeli doğrulamadan geçemediğinde döner. Hatalı alanlar `Response` içinde listelenir. ``` json { "Status": false, "Code": "Validation.General", "Message": "One or more validation errors occurred", "Response": [ { "Field": "Message", "Message": "Message is required." }, { "Field": "Attachments[0].Base64Content", "Message": "Attachment Base64Content must be a valid base64 encoded string." } ] } ``` --- #### `400 Bad Request` — İstek Gövdesi Boş İstek gövdesi boş, yalnızca boşluk veya `null` gönderildiğinde döner. Yanıt standart zarf formatında değildir; `text/plain` olarak yalnızca hata metnini içerir. ``` text A non-empty request body is required. ``` --- #### `400 Bad Request` — Geçersiz JSON İstek gövdesi geçerli bir JSON olmadığında döner. Yanıt `text/plain` olarak JSON ayrıştırıcısının hata metnini içerir; metin, hatanın konumuna göre değişir. ``` text Unexpected character encountered while parsing value: a. Path '', line 0, position 0. ``` --- #### `415 Unsupported Media Type` — Content-Type Eksik `Content-Type: application/json` header'ı gönderilmediğinde döner. ``` json { "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13", "title": "Unsupported Media Type", "status": 415, "traceId": "00-7f3f31cf39efddb07e9cce2ee0f1fb89-4f59c837bd4e4cb9-00" } ``` --- #### `403 Forbidden` — Geçerli Sigorta Şirketi Ataması Bulunamadı Token'da geçerli bir sigorta şirketi ataması bulunmadığında döner. ``` json { "Status": false, "Code": "OfflineMessage.InsuranceCompanyNotFound", "Message": "No valid insurance company assignment found in token.", "Response": null } ``` --- #### `403 Forbidden` — Kullanıcı Kimliği Çözümlenemedi Token'dan kullanıcı kimliği okunamadığında döner. ``` json { "Status": false, "Code": "OfflineMessage.UserNotFound", "Message": "User identity could not be resolved from token.", "Response": null } ``` --- #### `403 Forbidden` — İşe Erişim Reddedildi İş, çağıranın sahipliğinde değilse döner. ``` json { "Status": false, "Code": "OfflineJobs.JobOwnershipDenied", "Message": "You do not have permission to access this job.", "Response": null } ``` --- #### `403 Forbidden` — Rol veya Yetki Yetersiz Kullanıcı tanınan rollerden birine sahip değilse ya da `Create` yetkisi yoksa döner. **Gövde boştur.** --- #### `401 Unauthorized` — Token Yok veya Geçersiz Token gönderilmediğinde, geçersiz olduğunda veya süresi dolduğunda döner. **Gövde boştur.** Süresi dolmuş token için yanıtta `Token-Expired: true` header'ı bulunur. --- #### `404 Not Found` — İş Bulunamadı Belirtilen `jobId` ile bir iş bulunamadığında döner. ``` json { "Status": false, "Code": "OfflineMessage.JobNotFound", "Message": "Job 100931 not found.", "Response": null } ``` --- #### `500 Internal Server Error` — State Geçişi Başarısız Mesajı karşılayacak platform kullanıcısı bulunamazsa, gönderen kullanıcı sistemde kayıtlı değilse veya aksiyon platforma iletilemezse döner. `Message` alanı iş kuralı hatasının detayını içerir. ``` json { "Status": false, "Code": "OfflineMessage.StateTransitionFailed", "Message": "Message state transition failed: Aksiyon bilgileri platforma iletilemedi! Hata Mesajı: Timeout", "Response": null } ``` > Aksiyon platforma iletilemediğinde oluşturulan aksiyon silinir; işte kalıcı bir değişiklik olmaz. --- #### `500 Internal Server Error` — Beklenmeyen Hata Geçiş sırasında iş kuralı dışında bir hata oluştuğunda döner. ``` json { "Status": false, "Code": "JobState.TransitionError", "Message": "An unexpected error occurred during job state transition.", "Response": null } ``` --- #### `500 Internal Server Error` — İşlenmeyen Hata State geçişinden önce beklenmeyen bir hata oluştuğunda (örn. iş okunurken veritabanı hatası) döner. **Gövde boştur.**

Authentication

AuthorizationBearer

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

Path parameters

jobIdintegerRequired

Request

This endpoint expects an object.

Response

Created

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error
415
Unsupported Media Type Error
500
Internal Server Error