> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# JSON Schema Validation Uygulanması - REST-to-SOAP Tipinde Bir API Proxy

Bu senaryoda Apinizer üzerinde oluşturulan Mock API'ye **JSON Schema Validation** politikasının uygulanması test edilecektir.

Senaryoda gelen isteklerin JSON body'sinin aynı olduğunu varsayarak, bunu All kısmına ekleyelim.

<img src="https://mintcdn.com/apinizer/I33iYMzwyLMFhLRP/images/tutorials/json-schema-validation-politika-all-ekleme.png?fit=max&auto=format&n=I33iYMzwyLMFhLRP&q=85&s=769904439afbbc6615fe6cb7965a5e0f" alt="JSON Schema Validation politikasını All kısmına ekleme" width="1000" data-path="images/tutorials/json-schema-validation-politika-all-ekleme.png" />

Politika olarak JSON Schema Validation ekliyoruz.

<img src="https://mintcdn.com/apinizer/I33iYMzwyLMFhLRP/images/tutorials/json-schema-validation-politika-ekleme.png?fit=max&auto=format&n=I33iYMzwyLMFhLRP&q=85&s=ef479f98d3171c73d2f4e92003ed965b" alt="JSON Schema Validation politikası ekleme" width="1000" data-path="images/tutorials/json-schema-validation-politika-ekleme.png" />

**Mock Api'de örnek request body aşağıdaki gibi olacak:**

```json theme={null}
{
  "Sorgula": {
    "kriterListesi": {
      "BilesikKutukSorgulaKimlikNoSorguKriteri": {
        "DogumAy": 5,
        "DogumGun": 21,
        "DogumYil": 1990,
        "KimlikNo": "12345678901"
      }
    }
  }
}
```

**Buna uygun bir JSON Schema Validation aşağıdakileri içermekte:**

* **DogumAy**: 1 ile 12 arasında bir değer gönderilebilir.
* **DogumGun**: 1 ile 31 arasında bir değer gönderilebilir.
* **DogumYil**: 1800 ile 2100 arasında bir değer gönderilebilir.
* **KimlikNo**: 11 karakter uzunluğunda bir string (Kimlik numarası) olmalıdır.

**Politikaya eklenecek JSON Schema Validation:**

```json theme={null}
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "Sorgula": {
      "type": "object",
      "properties": {
        "kriterListesi": {
          "type": "object",
          "properties": {
            "BilesikKutukSorgulaKimlikNoSorguKriteri": {
              "type": "object",
              "properties": {
                "DogumAy": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 12
                },
                "DogumGun": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 31
                },
                "DogumYil": {
                  "type": "integer",
                  "minimum": 1800,
                  "maximum": 2100
                },
                "KimlikNo": {
                  "type": "string",
                  "minLength": 11,
                  "maxLength": 11
                }
              },
              "required": ["DogumAy", "DogumGun", "DogumYil", "KimlikNo"]
            }
          },
          "required": ["BilesikKutukSorgulaKimlikNoSorguKriteri"]
        }
      },
      "required": ["kriterListesi"]
    }
  },
  "required": ["Sorgula"]
}
```

Yukarıdaki Json Schema Validation içeriği aşağıdaki görselde **"Schema"** alanına eklenir ve kaydedilir.

<img src="https://mintcdn.com/apinizer/I33iYMzwyLMFhLRP/images/tutorials/json-schema-validation-schema-alani.png?fit=max&auto=format&n=I33iYMzwyLMFhLRP&q=85&s=f8b030be5644de92cf2e5e937af80a93" alt="JSON Schema Validation Schema alanı" width="1000" data-path="images/tutorials/json-schema-validation-schema-alani.png" />

Test konsolundan istek attığımızda, **KimlikNo** 12 karakter olarak girildi ve validasyon işlemi yapıldı. Yalnızca 11 karakter uzunluğunda olabilir şeklinde bir uyarı aldık.

<img src="https://mintcdn.com/apinizer/I33iYMzwyLMFhLRP/images/tutorials/json-schema-validation-test-sonucu.png?fit=max&auto=format&n=I33iYMzwyLMFhLRP&q=85&s=368d4e2e3924bd8c003b9912e05fe621" alt="JSON Schema Validation test sonucu" width="1000" data-path="images/tutorials/json-schema-validation-test-sonucu.png" />
