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

# Görevler Arası JSON Veri Aktarımı ve Kullanımı

> API Integrator görevleri arasında JSON veri aktarımını gerçekleştirebilir. JSON verisi dönen bir API'den veri okuyup, dönen sonuç içerisindeki array tipindeki elemanları döngü içinde başka bir API'ye gönderebilir.

**Senaryo:** JSON verisi dönen bir API çağrılacak, dönen sonuç içerisindeki array tipindeki elemanların her biri belirli bir format ile başka bir API'ye gönderilecektir.

Bu durumda iki tane API Call konnektörünü görev olarak eklenmelidir. Birincisi okuma diğeri ise döngü içinde yazma için gereklidir.

## Görev-1: API Call konnektörü ile veri okuma

<Steps>
  <Step title="API Call görevi ekle">
    Görevlerin listelendiği diyalogtan API Call seçeneğine tıklanır.
  </Step>

  <Step title="Once modunu seç">
    Görevin bir kez çalışacağını belirtmek için "Once" seçeneği seçilir.
  </Step>

  <Step title="API erişim bilgilerini gir">
    Veri okumasının yapılacağı ilgili API erişim bilgileri girilir.
  </Step>

  <Step title="Output anahtar bilgisini ayarla">
    Bir sonraki görevde API'den dönen veriyi kullanabilmek için output anahtar bilgisine **"jsonResponse"** değeri verilir. (Bu değer adını istediğiniz şekilde isimlendirebilirsiniz.)
  </Step>
</Steps>

<img src="https://mintcdn.com/apinizer/VwbHLJfjvpJ4xBOY/images/tutorials/api-entagratoru/json.png?fit=max&auto=format&n=VwbHLJfjvpJ4xBOY&q=85&s=476c615ce5781f9afa9bc4081edac203" alt="Görev-1: API Call konnektörü ile veri okuma" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/tutorials/api-entagratoru/json.png" />

Bu görev çalıştırıldığında bu örnekte aşağıdaki JSON Verisi dönmektedir, yani **jsonResponse** değeri içerisinde aşağıdaki veri olacaktır:

```json theme={null}
{
 "users": [
  {
   "id": 1,
   "name": "user 1",
   "description": "Description of user 1"
  },
  {
   "id": 2,
   "name": "user 2",
   "description": "Description of user 2"
  },
  {
   "id": 3,
   "name": "user 3",
   "description": "Description of user 3"
  }
 ]
}
```

## Görev-2: API Call konnektörü ile API'ye veri gönderme

<Steps>
  <Step title="API Call görevi ekle">
    Görevlerin listelendiği diyalogtan API Call seçeneğine tıklanır.
  </Step>

  <Step title="Loop modunu seç">
    Önceki görevden gelen dizi verisi üzerinde döngü ile çalışılacağını belirtmek için "Loop" seçeneği seçilir.
  </Step>

  <Step title="JSONPath belirle">
    Bir önceki görevde girilen output anahtar bilgisi ( **"jsonResponse"** ) değerinin neresinin dizi olarak işlenmesi gerektiği bilgisi JSONPath olarak yazılır.

    JSON Path yazılırken bir önceki veri üzerinde JSON olarak işlem yapılmasını belirtmek için **"#."** işareti, anahtar bilgisine **("jsonResponse")** eklenir. Sonrasında JSON Path olarak dizi elemanlarının olduğu path girilir. Dizinin tüm elemanlarının işleneceğini belirtmek için ise "\[*]" ifadesi eklenir. Bu durumda bu örnek için JSON Path yazan yere şu yazılmalıdır: \*\*"\{\{jsonResponse#.users\[*]}}"\*\*
  </Step>

  <Step title="Hedef API erişim bilgilerini gir">
    Verinin gönderileceği erişilmek istenen ilgili API erişim bilgileri girilir.
  </Step>

  <Step title="Şablon mesaj bilgisini gir">
    Gönderilmek istenen şablon mesaj bilgisi girilir. Şablon mesaj bilgisi içerisinde döngüdeki elemanların değerleri kullanılmak istenirse **"LOOP\_VARIABLE"** ifadesi ile ilgili eleman içindeki verinin şablona eklenmesi sağlanır. LOOP\_VARIABLE ile beraber döngü için hedef gösterilen eleman içindeki JSON verisine erişilecek JSON Path bilgisi girilmelidir.
  </Step>
</Steps>

<img src="https://mintcdn.com/apinizer/VwbHLJfjvpJ4xBOY/images/tutorials/api-entagratoru/json2.png?fit=max&auto=format&n=VwbHLJfjvpJ4xBOY&q=85&s=e20fdb88cfb9e87b5eea567dc4902554" alt="Görev-2: API Call konnektörü ile API'ye veri gönderme" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/tutorials/api-entagratoru/json2.png" />

Bu örnekte, bir önceki görevden dönen **jsonResponse** verisi üzerinde **"\{\{jsonResponse#.users\[\*]}}"** ifadesi çalıştırıldığında 3 adet eleman döner ve bu görevin 3 kez çalışacağını gösterir.

İlk çalışmada LOOP\_VARIABLE değeri içinde aşağıdaki JSON olacaktır.

```json theme={null}
{
 "id": 1,
 "name": "user 1",
 "description": "Description of user 1"
}
```

Bu JSON üzerinde çalıştırılmak istenen şablon aşağıdaki gibi olduğunu düşünelim:

```json theme={null}
{
 "test_id":"{{LOOP_VARIABLE#.id}}",
 "test_name":"{{LOOP_VARIABLE#.name}}",
 "test_description":"{{LOOP_VARIABLE#.description}}"
}
```

Bu durumda API Call ile gönderilecek istek gövdesi aşağıdaki şekilde olacaktır:

```json theme={null}
{
 "test_id": "1",
 "test_name": "user 1",
 "test_description": "Description of user 1"
}
```
