> 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 Revise Premium

PUT https://testgatewayapi.insurapps.net/api/offline/jobs/{jobId}/premiums/reject-revision
Content-Type: application/json

## Reject Revise Premium

Sigorta şirketinin, `PremiumReviseRequested` aşamasındaki bir işin (job) teklif revize talebini red nedeni ve açıklama ile reddetmesini sağlar. İstek başarılı olduğunda `PremiumReviseRejected` state geçişi tetiklenir; red nedeni işe işlenir, red aksiyonu platforma iletilir, varsa ek belgeler kaydedilir ve bildirim e-postası gönderilir. Başarılı çağrı gövde döndürmez.

### Uç Nokta (Endpoint)

`PUT {{baseUrl}}/api/offline/jobs/:jobId/premiums/reject-revision`

`Content-Type: application/json`

***

### Kullanım

Bu servis, acentenin daha önce verilmiş bir teklif için açtığı revize (indirim) talebi karşılanamadığında kullanılır. Önerilen akış:

1. `POST /api/authentication/login` ile token alınır.
2. `GET /api/offline/jobs` ile `PremiumReviseRequested` aşamasındaki işler listelenir ve işlenecek `jobId` belirlenir.
3. `GET /api/offline/jobs/:jobId/actions` ile revize talebinin detayı (talep edilen değişiklik, ekler) okunur.
4. `GET /api/offline/rejectreasons/4` ile `PremiumRevise` kategorisindeki geçerli red nedenleri çekilir.
5. Bu servis, seçilen `JobRejectReason` ve açıklama mesajıyla çağrılır.
6. `204 No Content` dönerse iş `PremiumReviseRejected` aşamasına geçmiştir. Mevcut teklif geçerliliğini korur; acente bu aşamadan poliçe talebinde bulunabilir (`PremiumReviseRejected → PolicyRequested` geçişi tanımlıdır).

Revize talebi karşılanabiliyorsa bu servis yerine `PUT /api/offline/jobs/:jobId/premiums/revise` (Revise Premium) çağrılır.

> 💡 Red nedeni listesini sabit kodlamayın; geçerli nedenler sigorta şirketine göre değişir. Her zaman `rejectreasons` servisinden okuyun.

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

> ⚠️ `JobRejectReason` yalnızca sayısal olarak doğrulanır; red nedeninin kategorisi ya da sigorta şirketine uygunluğu bu serviste kontrol edilmez. Yanlış kategoriden bir neden gönderilmesi isteği reddettirmez, bu yüzden doğru nedeni seçmek istemcinin sorumluluğundadı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 <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şlerin revize talebini reddedebilir. |
| `InsuranceCompanyAPIAdmin` | Şirket kapsamındaki tüm işlerin revize talebini reddedebilir.      |
| `Supervizor`               | Şirket kapsamındaki tüm işlerin revize talebini reddedebilir.      |

> ⚠️ `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 | Teklif revize talebi reddedilecek işin benzersiz kimliği. |

> ⚠️ `jobId` yalnızca yoldan alınır. Gövdede `JobId` göndermek etkisizdir; alan gövdeden okunmaz.

***

### İstek Gövdesi

**`RejectRevisePremiumRequest`**

| Parametre         | Tür             | Zorunlu | Açıklama                                                                                                            |
| ----------------- | --------------- | ------- | ------------------------------------------------------------------------------------------------------------------- |
| `JobRejectReason` | integer (int32) | ✅       | Red nedeni kimliği. Sıfırdan büyük olmalıdır. Geçerli liste için `GET /api/offline/rejectreasons/4`.                |
| `Message`         | string          | ✅       | Red açıklaması. Boş olamaz, en fazla 500 karakter. Kaydedilmeden önce sunucuda HTML/script içeriğinden arındırılır. |
| `Attachments`     | array           | —       | Reddi destekleyen PDF belgeler. Bkz. `PremiumFileRequest`.                                                          |

**`PremiumFileRequest`** (`Attachments` elemanı)

| Parametre       | Tür    | Zorunlu | Açıklama                                                                                          |
| --------------- | ------ | ------- | ------------------------------------------------------------------------------------------------- |
| `FileName`      | string | ✅       | Dosya adı. Boş olamaz ve `.pdf` uzantısıyla bitmelidir (büyük/küçük harf duyarsız).               |
| `Base64Content` | string | ✅       | Base64 kodlanmış dosya içeriği. Çözüldüğünde `%PDF` imzasıyla başlayan geçerli bir PDF olmalıdır. |
| `ContentType`   | string | —       | Yok sayılır; sunucu içerik türünü her zaman `application/pdf` olarak atar.                        |

> ⚠️ `Attachments` içinde gönderilen her eleman için `FileName` ve `Base64Content` zorunludur. Belgeler işe `DocumentType = Other` tipiyle kaydedilir.

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

```json
{
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}
```

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

```json
{
  "JobRejectReason": 12,
  "Message": "Revize talebinin red gerekçeleri ekteki belgede detaylandırılmıştır.",
  "Attachments": [
    {
      "FileName": "red-gerekce.pdf",
      "ContentType": "application/pdf",
      "Base64Content": "JVBERi0xLjAK"
    }
  ]
}
```

***

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

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "RejectRevisePremiumRequest",
  "type": "object",
  "required": ["JobRejectReason", "Message"],
  "properties": {
    "JobRejectReason": {
      "type": "integer",
      "format": "int32",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "$comment": "ReasonCategory = PremiumRevise olan kayıtlar. Liste: GET /api/offline/rejectreasons/4 — https://docs.insurgateway.com/offline-constants"
    },
    "Message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "Attachments": {
      "type": ["array", "null"],
      "items": { "$ref": "#/$defs/PremiumFileRequest" }
    }
  },
  "$defs": {
    "PremiumFileRequest": {
      "type": "object",
      "required": ["FileName", "Base64Content"],
      "properties": {
        "FileName": {
          "type": "string",
          "minLength": 5,
          "pattern": "(?i)\\.pdf$"
        },
        "Base64Content": {
          "type": "string",
          "minLength": 1,
          "contentEncoding": "base64",
          "contentMediaType": "application/pdf",
          "$comment": "Çözüldüğünde %PDF imzasıyla başlamalıdır."
        },
        "ContentType": {
          "type": ["string", "null"],
          "$comment": "Yok sayılır; sunucu application/pdf atar."
        }
      }
    }
  }
}
```

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

***

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

Teklif revize 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 = PremiumReviseRejected`, `RejectReasonId` güncellenir.                              |
| `JobActions`   | `PremiumReviseRejected` tipinde yeni aksiyon eklenir; `RequestDetails` alanına red mesajı yazılır. |
| Platform       | Red aksiyonu ve red nedeni platform servisine iletilir.                                            |
| `JobDocuments` | `Attachments` gönderildiyse belgeler `DocumentType = Other` ile kaydedilir.                        |
| 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 doğrulaması 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`. |

**Alan doğrulama mesajları:**

| Field                          | Message                                                |
| ------------------------------ | ------------------------------------------------------ |
| `JobId`                        | `JobId must be greater than 0.`                        |
| `JobRejectReason`              | `JobRejectReason is required.`                         |
| `JobRejectReason`              | `JobRejectReason must be greater than 0.`              |
| `Message`                      | `Message is required.`                                 |
| `Message`                      | `Message must not be empty.`                           |
| `Message`                      | `Message must not exceed 500 characters.`              |
| `Attachments[n].FileName`      | `FileName must not be empty.`                          |
| `Attachments[n].FileName`      | `Only PDF files are allowed.`                          |
| `Attachments[n].Base64Content` | `Base64Content must not be empty.`                     |
| `Attachments[n].Base64Content` | `Base64Content must be a valid base64 encoded string.` |
| `Attachments[n].Base64Content` | `File content is not a valid PDF.`                     |

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

```json
{
  "Status": false,
  "Code": "Validation.General",
  "Message": "One or more validation errors occurred",
  "Response": [
    {
      "Field": "JobRejectReason",
      "Message": "JobRejectReason is required."
    },
    {
      "Field": "Message",
      "Message": "Message must not be empty."
    }
  ]
}
```

> ⚠️ `JobRejectReason` gönderilmediğinde ya da `0` gönderildiğinde `JobRejectReason is required.`, negatif gönderildiğinde `JobRejectReason must be greater than 0.` döner.

> ⚠️ Model binding hataları (bozuk JSON, sayısal alana metin) doğrulamadan önce oluşur ve `ApiResponse` zarfı yerine farklı bir gövdeyle `400` dönebilir.

***

### 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.JobOwnershipDenied`        | `You do not have permission to access this job.`        | `InsuranceCompanyAPIUser` rolündeki kullanıcı işin sahibi değil. |

Kullanıcı tanınan rollerden birine ya da `Update` yetkisine sahip değilse `403` boş gövdeyle döner.

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

```json
{
  "Status": false,
  "Code": "OfflineJobs.JobOwnershipDenied",
  "Message": "You do not have permission to access this job.",
  "Response": null
}
```

***

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

| Kod                             | Mesaj                                                            | Oluşma Nedeni                                                                           |
| ------------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `OfflineJobs.JobNotFound`       | `No job found for the requested JobId: {jobId}.`                 | Verilen `:jobId` ile bir iş bulunamadı.                                                 |
| `JobState.PlatformUserNotFound` | `Platform user to receive the action not found for job {jobId}.` | Revize talebini açan platform kullanıcısı bulunamadığı için red aksiyonu kaydedilemedi. |

**Ö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                                                                                                                       |
| ------------------------------ | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `JobState.UnknownBusinessRule` | `An unknown business rule error occurred: {detay}`          | İş kuralı ihlali. En sık nedenleri: işin `PremiumReviseRequested` 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": "JobState.UnknownBusinessRule",
  "Message": "An unknown business rule error occurred: Aksiyon bilgileri platforma iletilemedi! Hata Mesajı: Servis yanıt vermedi.",
  "Response": null
}
```

> ⚠️ Red bilgisi platforma iletilemediğinde aksiyon geri alınır ve iş `PremiumReviseRequested` aşamasına döndürülür; istek yeniden denenebilir.

> ⚠️ İşin yanlış aşamada olmasından kaynaklanan `JobState.UnknownBusinessRule` 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-revise-premium

## 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) — Teklif revize 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 - Revize talebi reddedildi

**Request**

```json
{
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}
```

**Response**

```json
""
```

**SDK Code**

```python 204 - Revize talebi reddedildi
import requests

url = "https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision"

payload = {
    "JobRejectReason": 12,
    "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript 204 - Revize talebi reddedildi
const url = 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"JobRejectReason":12,"Message":"Talep edilen indirim oranı yetki limitlerimizin dışındadır."}'
};

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

```go 204 - Revize talebi reddedildi
package main

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

func main() {

	url := "https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision"

	payload := strings.NewReader("{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}")

	req, _ := http.NewRequest("PUT", 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 - Revize talebi reddedildi
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}"

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

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

HttpResponse<String> response = Unirest.put("https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision', [
  'body' => '{
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

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

var client = new RestClient("https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift 204 - Revize talebi reddedildi
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
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 - Revize talebi reddedildi (ek belgeli)

**Request**

```json
{
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}
```

**Response**

```json
""
```

**SDK Code**

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

url = "https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision"

payload = {
    "JobRejectReason": 12,
    "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript 204 - Revize talebi reddedildi (ek belgeli)
const url = 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"JobRejectReason":12,"Message":"Talep edilen indirim oranı yetki limitlerimizin dışındadır."}'
};

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

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

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

func main() {

	url := "https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision"

	payload := strings.NewReader("{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}")

	req, _ := http.NewRequest("PUT", 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 - Revize talebi reddedildi (ek belgeli)
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}"

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

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

HttpResponse<String> response = Unirest.put("https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision', [
  'body' => '{
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

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

var client = new RestClient("https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"JobRejectReason\": 12,\n  \"Message\": \"Talep edilen indirim oranı yetki limitlerimizin dışındadır.\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

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

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "JobRejectReason": 12,
  "Message": "Talep edilen indirim oranı yetki limitlerimizin dışındadır."
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://testgatewayapi.insurapps.net/api/offline/jobs/1/premiums/reject-revision")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
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()
```