# Alan anahtarları

Otomasyonların alanlarınızı adreslemek için kullandığı sabit adlar — nereden geldikleri ve nasıl kararlı tutulacakları.

## Alan anahtarları

Bir alan anahtarı, bir formdaki bir alanın geliştiriciye dönük adıdır — company_name, contacts. Bir otomasyonun bir alanı önceden doldurmasını, kilitlemesini veya yanıtı geri okumasını sağlayan şey budur ve yeniden başlıklandırmaya ve çoğaltmaya rağmen değişmez.

<h2 id="why">Neden var</h2>

<p>
  Alan anahtarları olmasaydı, bir otomasyonun sorularınızı kimse için bir anlam ifade etmeyen dahili kimliklerle adreslemesi gerekirdi — ve
  bir webhook gövdesi bunlarla dolu gelirdi. Alan anahtarlarıyla her iki taraf da aynı şekilde okur:
</p>

```
{ "company_name": "Acme", "employees": 120, "contacts": [{ "name": "Ada" }] }
```

<p>
  Alan anahtarları iki yerde kullanılır: bir istek oluşturulurken <code>prefill</code>, <code>context</code> ve <code>readonly</code>; ve
  her geri çağırmadaki ve her webhook gövdesindeki <code>answers</code> ve <code>display</code> haritaları.
</p>

<h2 id="where">Nerede bulunur</h2>

<p>
  Formun yayınladığı her anahtar tek bir yerde yaşar, <strong>Anahtarlar</strong> tablosunda: her alan, bir seçim sorusunun altında her
  seçenek, bir matrisin altında her satır ve sütun. Tablo, geri çağırmanızın taşıyacağı <code>answers</code> nesnesinin, sizin
  anahtarlarınızla dolu bir önizlemesiyle sona erer.
</p>

<p>
  Her seçeneğin ipucu satırı — düzenlediğiniz seçeneğin altındaki gri satır — anahtarını bir chip olarak sonlandırır. Anahtarı yerinde
  düzenlemek için chip'e tıklayın, bitirince Enter veya Escape tuşuna basın. Bir matris, etiketini düzenlediğiniz satır veya sütun için
  chip'i gösterir. Form yayındaysa ve yazdığınız anahtar otomasyonların zaten kullandığı anahtarı taşıyacaksa chip turuncuya döner.
</p>

<p>
  Aynı tablo, bir entegrasyon bağlarken salt okunur olarak görünür: webhook'un alan eşlemesinin altında ve Paylaş panelinin İstekler
  kartındaki istek parçacıklarının altında. Tüm anahtarları aynı anda <code>fields.list</code> ile de okuyabilirsiniz.
</p>

<h2 id="derivation">Bir anahtar nasıl türetilir</h2>

<p>
  Hiçbir şey ayarlamanız gerekmez. Siz düzenleyene kadar bir anahtar, sorunun başlığından türetilir: aksanlar kaldırılır ve ø, æ, ß gibi
  harfler o, ae ve ss olur, her şey küçük harfe çevrilir, harf veya rakam olmayan her ardışık dizi tek bir alt çizgiye dönüşür, baştaki ve
  sondaki alt çizgiler kaldırılır ve sonuç 64 karaktere kısaltılır.
</p>

<p>
  Yalnızca Arapça, İbranice, Kiril, Yunanca, Çince veya Japonca gibi Latin dışı bir yazıyla yazılmış bir başlıkta kaldırılacak bir şey
  olmaz; bu yüzden anahtarı <code>field_</code> artı konumudur, bir seçeneğinki ise <code>option_</code> artı konumudur. Bu anahtarlar
  yayınlandıktan sonra diğerleri kadar kararlıdır, ancak soru hakkında hiçbir şey söylemez. Bir otomasyon yanıtları okuyorsa, Anahtarlar
  tablosunda okunaklı bir anahtarı kendiniz ayarlayın.
</p>

<p>
  İki alan aynı anahtarla sonuçlanacaksa, Formstep <code>_2</code>, <code>_3</code> gibi ekler ekleyerek belge sırasına göre çakışmayı
  çözer. Kendi belirlediğiniz bir anahtar her zaman iddiasını kazanır, türetilen anahtar geri çekilir.
</p>

<h2 id="setting">Kendi anahtarınızı ayarlamak</h2>

<p>
  Türetilen anahtarın yerine geçmesi için Alan anahtarı girişine bir ad yazın. Girişi temizlemek türetilen anahtara geri döner. İzin verilen
  karakterler harfler, rakamlar, <code>_</code>, <code>.</code> ve <code>-</code>’dir, en fazla 64 karakter — başka her şey{' '}
  <em>"Sadece harf, rakam ve _ . - kullanın (en fazla 64 karakter)."</em> ile reddedilir. Siz yazarken boşluklar alt çizgiye dönüştürülür,
  böylece "contact name" <code>contact_name</code> olur.
</p>

<p>
  Anahtarlar büyük/küçük harfe duyarlıdır ve bir form içinde benzersiz olmalıdır. Başka bir soru, tekrarlayan grup, gizli alan veya
  hesaplanan alan tarafından zaten kullanılan bir anahtarı yeniden kullanmak <em>"Bu anahtarı başka bir alan zaten kullanıyor."</em> ile
  reddedilir.
</p>

<h2 id="freeze">Anahtarlar ilk yayında donar</h2>

> ⚠️ **Yayınlanmış bir anahtarı yeniden adlandırmak otomasyonları bozar**
> <p>
>     Yayınlanmış bir formda Alan anahtarı girişi, formun yayında olduğu ve geçerli anahtarı kullanan otomasyonların bozulacağı konusunda sizi
>     uyarır. Hiçbir şey sizi durdurmaz, ama o anahtarı önceden dolduran veya okuyan her workflow, değişikliği yayınladığınız anda eşleşmeyi
>     bırakır. Otomasyonu aynı oturumda güncelleyin. Yayın, değişiklik yürürlüğe girmeden önce sizi yeniden uyarır (bkz.{' '}
>     <a href="#removed-keys">kaldırılacak anahtarlar</a> bölümü).
>   </p>

<p>İlk yayınladığınızda, her alanın anahtarı o yayınlanmış sürüme yazılır. Sonraki her yayın aynı anahtarları taşır, bunun anlamı şudur:</p>

<ul>
  <li>
    <strong>Yeniden başlıklandırma bir anahtarı asla taşımaz.</strong> "Company name"i "Legal entity name" olarak yeniden adlandırın,
    anahtar <code>company_name</code> olarak kalır. Otomasyonlarınız çalışmaya devam eder; yalnızca sayfadaki kelimeler değişir.
  </li>
  <li>
    <strong>Bir sorunun türünü değiştirmek bir anahtarı asla taşımaz.</strong> Bir metin sorusunu bir açılır listeye dönüştürmek anahtarını
    korur — ancak otomasyonunuzun göndermesi gereken değer biçimi bununla birlikte değişir.
  </li>
  <li>
    <strong>Bir soruyu taşımak anahtarını asla taşımaz.</strong> Konum, yalnızca kullanılabilir bir başlığı olmayan bir alandaki konumsal
    yedek için önemlidir.
  </li>
  <li>
    <strong>Bir bloğu çoğaltmak kopyaya yeni bir anahtar verir.</strong> Kendi belirlediğiniz bir anahtar kopyalanır ve bir sonraki boş{' '}
    <code>_2</code>’ye yeniden anahtarlanır; türetilen anahtarlar yayında benzersiz hale getirilir.
  </li>
  <li>
    <strong>Alan anahtarları var olmadan önce oluşturulmuş formlar</strong> anahtarlarını bir sonraki yayınlarında alır.
  </li>
</ul>

<p>Yinelenenlerin yakalandığı yer de yayındır ve ikisi de bir alanı sessizce yeniden adlandırmak yerine yayını durdurur:</p>

<ul>
  <li>
    İki alan bir anahtarı iddia ederse — <em>Field key "…" is used by more than one field.</em>
  </li>
  <li>
    Bir alana yazdığınız anahtar başka bir alan tarafından zaten yayınlanmışsa —{' '}
    <em>
      Field key "…" is already published on "…". Giving it to "…" would rename that field's key to "…_2" and break automations using "…".
    </em>{' '}
    İkisinden birinde anahtarı serbest bırakın ve yeniden yayınlayın.
  </li>
</ul>

<p>
  İkisi de Yayınla düğmesinin yanında, diğer her ön kontrol bulgusuyla birlikte görünür — bkz.{' '}
  <a href="/tr/building-forms/publish-checks">Yayın kontrolleri</a>.
</p>

<h2 id="removed-keys">Yayınlanmış bir anahtar kaybolmak üzere olduğunda</h2>

<p>
  Bir anahtar, yayınlandığı alana aittir, başlığına değil. Bu yüzden istemeden bir anahtarı kaybetmenin iki yolu vardır: yayınlanmış bir
  alana farklı bir anahtar yazmak, ya da <strong>bir soruyu silip yerine yeni bir tane eklemek</strong>. Yeni soru yeni bir alandır — kendi
  başlığından türetilmiş yepyeni bir anahtar alır ve eski anahtar yok olur.
</p>

<p>
  Bu gerçekleştiğinde Formstep tarafında hiçbir şey başarısız olmaz. Webhook yine tetiklenir ve geri çağırma yine gelir, yalnızca o yanıt
  olmadan; ve <code>requests.create</code>, eski anahtarı <code>UNKNOWN_FIELD_KEY</code> ile reddetmeye başlar. Bu yüzden yayın önce bunu
  kontrol eder. Canlı sürümün yayınladığı bir anahtar bir sonraki sürümde bulunmayacaksa, yayın iletişim kutusu ve Yayınla düğmesinin
  yanındaki sorun göstergesi bir uyarı gösterir:
</p>

```
"company_name" alan anahtarı bu yayından sonra artık var olmayacak. Onu kullanan entegrasyonlar ve istekler bu yanıtı almayı bırakacak. Yeni bir "Company" alanı "company" olarak yayımlanıyor. Bunların çalışmaya devam etmesi için alan anahtarını "company_name" olarak ayarla.
```

<ul>
  <li>
    <strong>Otomasyonlarınızın çalışmaya devam etmesi için</strong> <strong>Anahtarlar</strong> tablosunu açın, uyarının adını verdiği alanı
    bulun ve eski anahtarı yazın. Uyarı kaybolur ve anahtar hiçbir şey olmamış gibi devam eder.
  </li>
  <li>
    <strong>Alanı kasıtlı olarak kaldırdıysanız</strong> yine de yayınlayın — bu bir hata değil, bir uyarıdır — ve anahtarı okuyan
    otomasyonları güncelleyin.
  </li>
  <li>
    Uyarı bir alanı yalnızca seçim belirginken adlandırır: anahtarını yeniden yazdığınız alan, ya da tek bir silinenin yerinde duran tek bir
    yeni alan. Aksi halde yalnızca anahtarı adlandırır.
  </li>
  <li>
    Bir tekrarlayan grubu silmek, grubun anahtarı ve içindeki her alanın anahtarı için uyarır. MCP sunucusunun <code>form_publish</code>’i
    üzerinden yayınlamak aynı mesajları <code>warnings</code> içinde döndürür.
  </li>
  <li>
    Seçenek, satır ve sütun anahtarları da aynı muameleyi görür: yayınlanmış bir formda bir seçeneği silmek veya anahtarını yeniden yazmak
    yayında <em>Option key "pro" of "Plan" will no longer exist after this publish</em> uyarısını gösterir, seçenek hâlâ varsa şu anda
    yayınladığı anahtarı adlandırarak. Yayın iletişim kutusu, her iki düzeydeki her anahtar değişikliğini{' '}
    <strong>Bu yayında değişen anahtarlar</strong> başlığı altında listeler.
  </li>
</ul>

<h2 id="groups">Tekrarlayan gruplar ve gizli alanlar</h2>

<p>
  Bir <a href="/tr/building-forms/repeating-groups">tekrarlayan grubun</a> kendi anahtarı vardır, içindeki her alanın da öyle. Otomasyonlar
  grubu bir bütün olarak adresler ve üyeleri iç içe yerleştirir:
</p>

```
{ "contacts": [{ "name": "Ada", "email": "ada@acme.com" }, { "name": "Grace", "email": "grace@acme.com" }] }
```

<p>
  Bir grubun içindeki bir alana yalnızca kendi grubu üzerinden ulaşılabilir — burada üst düzeyde bir <code>name</code> yoktur, yalnızca{' '}
  <code>contacts[0].name</code> vardır. Grubun anahtarını yeniden adlandırırsanız tüm dizi taşınır; bir üyenin anahtarını yeniden
  adlandırırsanız yalnızca her nesnenin içindeki o ad değişir.
</p>

<p>
  Bir <a href="/tr/building-forms/hidden-fields">gizli alanın</a> parametre adı, onun alan anahtarıdır. Bir istek oluştururken{' '}
  <code>context</code> içine koyduğunuz anahtar budur ve genel bir bağlantıda bir URL parametresinde kullanacağınız isimle aynıdır.
</p>

<p>
  Bir <a href="/tr/building-forms/calculated-fields">hesaplanan alanın</a> adı onun alan anahtarıdır ve formun geri kalanıyla paylaştığı tek
  anahtar kümesinin bir parçasıdır. Salt okunurdur: formun kendisi değerini hesaplar, bu yüzden siz asla bir değer gönderemezsiniz —{' '}
  <code>fields.list</code> onu <code>calculated: true</code> ile listeler ve <code>requests.create</code>, <code>prefill</code> ve{' '}
  <code>context</code> içinde onu reddeder. Ama geri okuyabilirsiniz: <code>answers</code> içinde kendi adı altında (
  <code>answers.total</code>) gelir. Yayınlanmış bir hesaplanan alanı yeniden adlandırmak, diğer her alanla aynı yayın uyarısıyla, onun
  anahtarını da yeniden adlandırır.
</p>

<h2 id="option-keys">Seçenek anahtarları: bir sorunun içindeki seçimler</h2>

<p>
  Bir yanıtın adlandırdığı sorunun parçaları da anahtar alır. Bir radyo, açılır liste, onay kutusu, görsel seçim veya sıralama sorusunun her
  seçeneği, ve bir matrisin her satırı ve sütunu, bir <strong>seçenek anahtarına</strong> sahiptir: bir alan anahtarının bir başlıktan
  türetildiği şekilde etiketinden türetilir, düzenlenebilir ve yayında donar. Böylece bir yanıt her iki tarafta da bir ad olarak okunur:
</p>

```
{ "plan": "pro", "interests": ["billing", "api"], "satisfaction": { "delivery_speed": "very_good" } }
```

<p>
  Bir workflow, yanıtlayan hangi dilde yanıt verirse versin <code>answers.plan == "pro"</code> üzerinde dallanır ve bir istek bir seçimi{' '}
  <code>{'{ "plan": "pro" }'}</code> ile önceden doldurur. Anahtarlar, her alanın <code>options</code>'ı altında ya da bir matrisin{' '}
  <code>rows</code> ve <code>columns</code>'ı altında <code>fields.list</code> tarafından listelenir ve{' '}
  <a href="#where">Anahtarlar tablosunda</a> ya da seçeneğin chip'inde düzenlenir. Her sorunun seçenekleri kendi ad alanına sahiptir, bu
  yüzden iki soru aynı anda bir <code>yes</code>'e sahip olabilir ve bir matrisin bir satırı ile bir sütunu aynı anahtarı paylaşabilir. Aynı
  anahtarı türetecek bir sorunun iki seçeneği, alanlarda olduğu gibi <code>_2</code> ile birbirinden ayrılır.
</p>

<p>
  <a href="/tr/requests/decisions-and-approvals">Karar sorusu</a>, üç seçeneği <code>approve</code>, <code>decline</code> ve{' '}
  <code>changes</code> anahtarlarını taşıyan sıradan bir radyo sorusudur; bir isteğin <code>outcome</code>'unu kapalı bir küme yapan da
  budur.
</p>

<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Bir istek oluşturun](/tr/requests/creating-requests) — Bu anahtarları işe koşun.
  - [Webhook referansı](/tr/developers/webhooks-reference) — Alan anahtarları her etkinlik gövdesini nasıl şekillendirir.
</div>
