> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.insurgateway.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.insurgateway.com/_mcp/server.

# Reject Endorsement

POST https://testgatewayapi.insurapps.net/api/offline/jobs/{jobId}/endorsements/reject
Content-Type: application/json

## Reject Endorsement

Sigorta şirketinin, `EndorsementRequested` (Zeyil İsteği) aşamasındaki bir işin (job) zeyil talebini reddetmesini sağlar. İstek başarılı olduğunda `EndorsementRejected` (Zeyil Reddedildi) state geçişi tetiklenir; red nedeni işe işlenir, red aksiyonu platforma iletilir ve ilgili taraflara bildirim e-postası gönderilir. Başarılı çağrı gövde döndürmez.

### Uç Nokta (Endpoint)

`POST {{baseUrl}}/api/offline/jobs/:jobId/endorsements/reject`

`Content-Type: application/json`

***

### Kullanım

Bu servis, platform tarafından açılmış bir zeyil isteği sigorta şirketi tarafından karşılanamadığında kullanılır. Önerilen akış:

1. `POST /api/authentication/login` ile token alınır.
2. `GET /api/offline/jobs` ile `EndorsementRequested` aşamasındaki işler listelenir ve işlenecek `jobId` belirlenir.
3. `GET /api/offline/jobs/:jobId/actions` ile zeyil isteğinin detayı (istenen değişiklik, ekler) okunur.
4. `GET /api/offline/rejectreasons/2` ile `Endorsement` kategorisindeki geçerli red nedenleri çekilir. Dönen liste, token'daki sigorta şirketi için tanımlı olanlarla sınırlıdır.
5. Bu servis, seçilen `rejectReasonId` ve açıklama mesajıyla çağrılır.
6. `204 No Content` dönerse iş `EndorsementRejected` aşamasına geçmiştir. Platform bu işten sonra yeniden zeyil isteği açabilir (`EndorsementRejected → EndorsementRequested` geçişi tanımlıdır).

Zeyil yapılabiliyorsa bu servis yerine `POST /api/offline/jobs/:jobId/endorsements` (Make Endorsement) çağrılı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.

> ⚠️ İş yalnızca `EndorsementRequested` aşamasındayken bu servis çağrılabilir. Başka bir aşamadaki iş için çağrı `500` ile `OfflineEndorsements.StateTransitionFailed` döner. Stage kodları için [bknz.](https://docs.insurgateway.com/offline-constants)

***

### 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 <token>` biçiminde erişim token'ı. |
| `Content-Type`  | string | ✅       | `application/json` olmalıdır.              |

Token'ın aşağıdaki rollerden en az birini taşıması ve `Update` yetkisine sahip olması gerekir:

| Rol                        | Erişim Kapsamı                                               |
| -------------------------- | ------------------------------------------------------------ |
| `InsuranceCompanyAPIUser`  | Yalnızca kendi sahibi olduğu işleri reddedebilir.            |
| `InsuranceCompanyAPIAdmin` | Token'daki sigorta şirketlerine ait tüm işleri reddedebilir. |
| `Supervizor`               | Token'daki sigorta şirketlerine ait tüm işleri reddedebilir. |

> ⚠️ İşin `InsuranceCompanyId` değeri token'daki sigorta şirketi listesinde yoksa istek `403` ile `OfflineJobs.JobInsuranceCompanyDenied` döner. `InsuranceCompanyAPIUser` rolündeki kullanıcı, kendi sahibi olmadığı bir iş için `403` ile `OfflineJobs.JobOwnershipDenied` alır.

***

### İstek Parametreleri (Path Variables)

| Parametre | Tür             | Zorunlu | Min | Max        | Açıklama                                          |
| --------- | --------------- | ------- | --- | ---------- | ------------------------------------------------- |
| `:jobId`  | integer (int32) | ✅       | 1   | 2147483647 | Zeyil 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

**`RejectEndorsementRequest`**

| Parametre        | Tür             | Zorunlu | Açıklama                                                                                                                                                                                                          |
| ---------------- | --------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `message`        | string          | ✅       | Red açıklaması. Boş olamaz, en fazla 1000 karakter. Kaydedilmeden önce sunucuda HTML/script içeriğinden arındırılır.                                                                                              |
| `rejectReasonId` | integer (int32) | ✅       | Red nedeni kimliği. Sıfırdan büyük olmalı, `Endorsement` kategorisinde (`ReasonCategory = 2`) tanımlı olmalı ve işin sigorta şirketine kapalı olmamalıdır. Geçerli liste için `GET /api/offline/rejectreasons/2`. |
| `attachment`     | object          | —       | Reddi destekleyen belge. Bkz. `EndorsementFileRequest`.                                                                                                                                                           |

**`EndorsementFileRequest`** (`attachment`)

| Parametre       | Tür    | Zorunlu | Açıklama                                                                                    |
| --------------- | ------ | ------- | ------------------------------------------------------------------------------------------- |
| `fileName`      | string | ✅       | Dosya adı. Nesne gönderildiğinde boş olamaz.                                                |
| `contentType`   | string | ✅       | MIME türü (ör. `application/pdf`). Nesne gönderildiğinde boş olamaz.                        |
| `base64Content` | string | ✅       | Base64 kodlanmış dosya içeriği. Geçerli base64 olmalıdır (uzunluğu 4'ün katı, çözülebilir). |

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

**Örnek İstek (ek belgesiz):**

```json
{
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
}
```

**Örnek İstek (ek belgeli):**

```json
{
  "message": "Zeyil reddi gerekçeleri ekteki belgede detaylandırılmıştır.",
  "rejectReasonId": 5,
  "attachment": {
    "fileName": "rejection_reasons.pdf",
    "contentType": "application/pdf",
    "base64Content": "JVBERi0xLjAK"
  }
}
```

***

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

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "RejectEndorsementRequest",
  "type": "object",
  "required": ["message", "rejectReasonId"],
  "properties": {
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "rejectReasonId": {
      "type": "integer",
      "format": "int32",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "$comment": "ReasonCategory = Endorsement olan kayıtlar. Liste: GET /api/offline/rejectreasons/2 — https://docs.insurgateway.com/offline-constants"
    },
    "attachment": { "$ref": "#/$defs/EndorsementFileRequest" }
  },
  "$defs": {
    "EndorsementFileRequest": {
      "type": "object",
      "required": ["fileName", "contentType", "base64Content"],
      "properties": {
        "fileName": { "type": "string", "minLength": 1 },
        "contentType": { "type": "string", "minLength": 1 },
        "base64Content": {
          "type": "string",
          "minLength": 1,
          "contentEncoding": "base64"
        }
      }
    }
  }
}
```

> 💡 Şemada `additionalProperties: false` bilinçli olarak yoktur: API bilinmeyen alanları yok sayar, isteği reddetmez.

***

### Başarılı Yanıt (204 No Content)

Zeyil 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                                                                                            |
| -------------- | ------------------------------------------------------------------------------------------------ |
| `Jobs`         | `CurrentStage = EndorsementRejected`, `RejectReasonId` güncellenir.                              |
| `JobActions`   | `EndorsementRejected` tipinde yeni aksiyon eklenir; `RequestDetails` alanına red mesajı yazılır. |
| `JobDocuments` | `attachment` gönderildiyse belge `DocumentType = Other` ile kaydedilir.                          |
| Platform       | Red aksiyonu ve red nedeni platform servisine iletilir.                                          |
| Diğer işler    | Aynı teklifteki diğer işler yeniden aktif edilir.                                                |
| E-posta        | Acente için e-posta gönderimi kapalı değilse red bildirimi gönderilir.                           |

> 💡 İşlemin sonucunu doğrulamak için `GET /api/offline/jobs/:jobId/actions` çağrılarak oluşan red aksiyonu okunabilir.

***

### Hatalı Yanıt (400 Bad Request)

Alan ve red nedeni doğrulamaları başarısız olduğunda `ApiResponse` zarfı içinde alan bazlı hata listesi döner.

| Alan       | Tür           | Açıklama                                                                    |
| ---------- | ------------- | --------------------------------------------------------------------------- |
| `Status`   | boolean       | Hatalarda her zaman `false`.                                                |
| `Code`     | string        | Hata kodu. Doğrulama hatalarında `Validation.General`.                      |
| `Message`  | string        | Genel hata açıklaması.                                                      |
| `Response` | array \| null | Doğrulama hatalarında `{ Field, Message }` listesi; diğer hatalarda `null`. |

**`Response` nesnesi:**

| Alan      | Tür    | Açıklama                                                                                                            |
| --------- | ------ | ------------------------------------------------------------------------------------------------------------------- |
| `Field`   | string | Hatalı alanın yolu (iç içe nesnelerde `Attachment.FileName` biçiminde) ya da red nedeni doğrulamalarında hata kodu. |
| `Message` | string | Doğrulama hata mesajı.                                                                                              |

**Alan doğrulama hatası:**

```json
{
  "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." }
  ]
}
```

**Alan doğrulama mesajları:**

| Field                      | Message                                                |
| -------------------------- | ------------------------------------------------------ |
| `JobId`                    | `JobId must be greater than zero.`                     |
| `Message`                  | `Message is required.`                                 |
| `Message`                  | `Message cannot exceed 1000 characters.`               |
| `RejectReasonId`           | `RejectReasonId must be greater than zero.`            |
| `Attachment.FileName`      | `FileName must not be empty.`                          |
| `Attachment.ContentType`   | `ContentType must not be empty.`                       |
| `Attachment.Base64Content` | `Base64Content must not be empty.`                     |
| `Attachment.Base64Content` | `Base64Content must be a valid base64 encoded string.` |

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

| Field                                                       | Ne zaman oluşur                                         |
| ----------------------------------------------------------- | ------------------------------------------------------- |
| `JobRejectReason.RejectReasonNotFound`                      | Gönderilen `rejectReasonId` sistemde kayıtlı değil.     |
| `JobRejectReason.InvalidRejectReasonCategory`               | Red nedeni `Endorsement` kategorisine ait değil.        |
| `JobRejectReason.RejectReasonNotAllowedForInsuranceCompany` | Red nedeni, işin bağlı olduğu sigorta şirketine kapalı. |

```json
{
  "Status": false,
  "Code": "Validation.General",
  "Message": "One or more validation errors occurred",
  "Response": [
    {
      "Field": "JobRejectReason.InvalidRejectReasonCategory",
      "Message": "The reject reason must be in the Endorsement category."
    }
  ]
}
```

> ⚠️ Model binding hataları (örneğin `rejectReasonId` alanına metin gönderilmesi veya bozuk JSON) doğrulamadan önce oluşur ve `ApiResponse` zarfı yerine farklı bir gövdeyle `400` dönebilir. İstemci tarafında `400` yanıtları ayrıştırılırken bu durum hesaba katılmalıdır.

***

### 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)

Token geçerli olduğu hâlde yetki kapsamı yetersiz olduğunda döner.

| Kod                                     | Mesaj                                                                  | Oluşma Nedeni                                                    |
| --------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `OfflineUsers.InsuranceCompanyNotFound` | `No valid insurance company assignment found in token.`                | Token'da sigorta şirketi ataması yok.                            |
| `OfflineUsers.UserIdentityNotResolved`  | `User identity could not be resolved from token.`                      | Token'dan kullanıcı kimliği çözülemedi.                          |
| `OfflineJobs.JobInsuranceCompanyDenied` | `You do not have permission to access jobs of this insurance company.` | İşin sigorta şirketi token kapsamı dışında.                      |
| `OfflineJobs.JobOwnershipDenied`        | `You do not have permission to access this job.`                       | `InsuranceCompanyAPIUser` rolündeki kullanıcı işin sahibi değil. |

**Örnek Hatalı Yanıt:**

```json
{
  "Status": false,
  "Code": "OfflineJobs.JobInsuranceCompanyDenied",
  "Message": "You do not have permission to access jobs of this insurance company.",
  "Response": null
}
```

***

### Hatalı Yanıt (404 Not Found)

Verilen `:jobId` ile bir iş bulunamadığında döner.

| Kod                       | Mesaj                                            |
| ------------------------- | ------------------------------------------------ |
| `OfflineJobs.JobNotFound` | `No job found for the requested JobId: {jobId}.` |

**Örnek Hatalı Yanıt:**

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

***

### Hatalı Yanıt (500 Internal Server Error)

State machine geçişi sırasında oluşan iş kuralı ihlalleri ve beklenmeyen hatalar bu kodla döner.

| Kod                                         | Mesaj                                                       | Oluşma Nedeni                                                                                                                     |
| ------------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `OfflineEndorsements.StateTransitionFailed` | `Endorsement state transition failed: {detay}`              | İş kuralı ihlali. En sık nedenleri: işin `EndorsementRequested` aşamasında olmaması ya da red bilgisinin platforma iletilememesi. |
| `JobState.TransitionError`                  | `An unexpected error occurred during job state transition.` | Beklenmeyen sistem hatası.                                                                                                        |

Aşağıdaki örnek, red bilgisi platforma iletilemediğinde döner:

```json
{
  "Status": false,
  "Code": "OfflineEndorsements.StateTransitionFailed",
  "Message": "Endorsement state transition 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ş `EndorsementRequested` aşamasına döndürülür; istek yeniden denenebilir.

> ⚠️ İşin yanlış aşamada olmasından kaynaklanan `OfflineEndorsements.StateTransitionFailed` bir iş kuralı ihlalidir; `500` dönmesine rağmen isteği aynen tekrarlamak sonucu değiştirmez. Hata mesajındaki aşama bilgisi okunarak işin doğru aşamada olup olmadığı kontrol edilmelidir.

Reference: https://docs.insurgateway.com/insurgateway-api/offline/reject-endorsement

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://testgatewayapi.insurapps.net` (https://testgatewayapi.insurapps.net, default)
- `https://gatewayapi.insurapps.net` (https://gatewayapi.insurapps.net)

## Request

### Path parameters

- `jobId` (integer, required) — Zeyil talebi reddedilecek işin benzersiz kimliği.

### Headers

- `Authorization` (string, optional)

## Response

### 204

No Content

## Errors

### 400 Bad Request Error

Bad Request

### 403 Forbidden Error

Forbidden

### 404 Not Found Error

Not Found

### 500 Internal Server Error

Internal Server Error

## Examples

### 204 - Zeyil talebi reddedildi

**Request**

```json
{
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
}
```

**Response**

```json
""
```

**SDK Code**

```python 204 - Zeyil talebi reddedildi
import requests

url = "https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject"

payload = {
    "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
    "rejectReasonId": 5
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript 204 - Zeyil talebi reddedildi
const url = 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"message":"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.","rejectReasonId":5}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 204 - Zeyil talebi reddedildi
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject"

	payload := strings.NewReader("{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 204 - Zeyil talebi reddedildi
require 'uri'
require 'net/http'

url = URI("https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}"

response = http.request(request)
puts response.read_body
```

```java 204 - Zeyil talebi reddedildi
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}")
  .asString();
```

```php 204 - Zeyil talebi reddedildi
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject', [
  'body' => '{
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp 204 - Zeyil talebi reddedildi
using RestSharp;

var client = new RestClient("https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift 204 - Zeyil talebi reddedildi
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### 204 - Zeyil talebi reddedildi (ek belgeli)

**Request**

```json
{
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
}
```

**Response**

```json
""
```

**SDK Code**

```python 204 - Zeyil talebi reddedildi (ek belgeli)
import requests

url = "https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject"

payload = {
    "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
    "rejectReasonId": 5
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript 204 - Zeyil talebi reddedildi (ek belgeli)
const url = 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"message":"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.","rejectReasonId":5}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 204 - Zeyil talebi reddedildi (ek belgeli)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject"

	payload := strings.NewReader("{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 204 - Zeyil talebi reddedildi (ek belgeli)
require 'uri'
require 'net/http'

url = URI("https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}"

response = http.request(request)
puts response.read_body
```

```java 204 - Zeyil talebi reddedildi (ek belgeli)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}")
  .asString();
```

```php 204 - Zeyil talebi reddedildi (ek belgeli)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject', [
  'body' => '{
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp 204 - Zeyil talebi reddedildi (ek belgeli)
using RestSharp;

var client = new RestClient("https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message\": \"Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.\",\n  \"rejectReasonId\": 5\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift 204 - Zeyil talebi reddedildi (ek belgeli)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message": "Talep edilen zeyil, poliçe şartları kapsamında yapılamamaktadır.",
  "rejectReasonId": 5
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://testgatewayapi.insurapps.net/api/offline/jobs/1/endorsements/reject")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```