Files
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 3s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

177 lines
7.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: API ile Veri İçe Aktarma
description: Büyük ölçekli veri içe aktarmaları için Twenty'nin API'lerini ne zaman ve nasıl kullanacağınız.
---
## Genel Bakış
Twenty, programatik veri içe aktarma için hem **GraphQL** hem de **REST API'leri** sunar. Veri hacminiz için CSV içe aktarma pratik değilse veya otomatik, yinelenen içe aktarmalara ihtiyacınız varsa API'yi kullanın.
## API içe aktarması ne zaman kullanılır
| Senaryo | Önerilen Yöntem |
| --------------------------------- | --------------------------------- |
| 10.000 kaydın altında | CSV İçe Aktarma |
| 10.000 - 50.000 kayıt | CSV İçe Aktarma (dosyalara bölün) |
| **50.000+ kayıt** | **API İçe Aktarma** |
| Tek seferlik geçiş | Her ikisi de (hacme bağlı olarak) |
| **Yinelenen içe aktarmalar** | **API İçe Aktarma** |
| **Gerçek zamanlı eşitleme** | **API İçe Aktarma** |
| **Diğer sistemlerle entegrasyon** | **API İçe Aktarma** |
<Note>Yüz binlerce kayıttan oluşan veri kümeleri için API, birden çok CSV içe aktarımından belirgin şekilde daha hızlı ve daha güvenilirdir.</Note>
## API Hız Sınırları
Twenty, sistem kararlılığını sağlamak için hız sınırlarını uygular:
| Sınır | Değer |
| ---------------------------- | ------------------- |
| **Dakika başına istek** | 100 |
| **Toplu çağrı başına kayıt** | 60 |
| **Maksimum aktarım hızı** | ~6.000 kayıt/dakika |
<Warning>
**İçe aktarmanızı bu sınırlara göre planlayın.**
Maksimum aktarım hızında 100.000 kayıt için yaklaşık 17 dakikalık içe aktarma süresi bekleyin. Hata yönetimi ve yeniden denemeler için tampon süre ekleyin.
</Warning>
## Başlarken
### Adım 1: API Anahtarınızı Alın
1. **Ayarlar → Geliştiriciler**'e gidin
2. **+ API anahtarı oluştur**'a tıklayın
3. Anahtarınıza açıklayıcı bir ad verin
4. API anahtarını hemen kopyalayın (tekrar gösterilmeyecektir)
5. Güvenli bir şekilde saklayın
<Warning>
**API anahtarınızı gizli tutun.**
API anahtarınıza sahip olan herkes çalışma alanı verilerinize erişebilir ve bunları değiştirebilir. Asla kod depolarına eklemeyin ve herkese açık olarak paylaşmayın.
</Warning>
### Adım 2: API'nizi Seçin
Twenty iki API türünü destekler:
| API | En uygun | Dokümantasyon |
| ----------- | ------------------------------------------------------------ | --------------------------------------- |
| **GraphQL** | Esnek sorgular, ilişkili verileri getirme, karmaşık işlemler | [API Belgeleri](/l/tr/developers/extend/api) |
| **REST** | Basit CRUD işlemleri, alışıldık REST kalıpları | [API Belgeleri](/l/tr/developers/extend/api) |
Her iki API de şunları destekler:
* Kayıt oluşturma, okuma, güncelleme ve silme
* **Toplu işlemler** — çağrı başına en fazla 60 kayıt oluşturma veya güncelleme
**İçe aktarmalar için toplu işlemleri kullanın**, hız sınırları içinde aktarım hızını en üst düzeye çıkarmak için.
### Adım 3: İçe Aktarma Sıralamanızı Planlayın
CSV içe aktarmalarda olduğu gibi, ilişkiler için **sıra önemlidir**:
1. Önce **Şirketler** (bağımlılık yok)
2. İkinci olarak **Kişiler** (Şirketlere bağlanabilir)
3. Üçüncü olarak **Fırsatlar** (Şirketlere ve Kişilere bağlanabilir)
4. **Görevler/Notlar** (yukarıdakilerin herhangi birine bağlanabilir)
5. **Özel nesneler** (bağımlılıklarına uyarak)
## En İyi Uygulamalar
### İsteklerinizi Gruplandırın
* Kayıtları tek tek göndermeyin
* API çağrısı başına **en fazla 60 kaydı** gruplandırın
* Bu, hız sınırları içinde aktarım hızını en üst düzeye çıkarır
### Hız Sınırlarını Yönetme
* İstekler arasında gecikmeler uygulayın (sürekli içe aktarmalar için en az 600 ms)
* Sınırlara ulaştığınızda üstel geri çekilme kullanın
* 429 (Too Many Requests) yanıtlarını izleyin
### Önce Verileri Doğrulayın
* İçe aktarmadan önce verilerinizi temizleyin ve doğrulayın
* Gerekli alanların doldurulduğunu kontrol edin
* Biçimlerin Twenty'nin gereksinimlerine uyduğunu doğrulayın (bkz. [Alan Eşleme](/l/tr/user-guide/data-migration/capabilities/field-mapping))
### Her Şeyi Günlüğe Kaydedin
* İçe aktarılan her kaydı günlüğe kaydedin (ID'ler dahil)
* Hataları tam bağlamla günlüğe kaydedin
* Bu, sorunları ayıklamaya ve tamamlandığını doğrulamaya yardımcı olur
### Önce Test Edin
* Küçük bir grupla test edin (10-20 kayıt)
* Verilerin Twenty'de doğru göründüğünü doğrulayın
* Ardından tam içe aktarmayı çalıştırın
### Yinelenenleri Önlemek İçin Upsert Kullanın
GraphQL API, **toplu upsert** destekler — kayıt varsa günceller, yoksa oluşturur. Bu, içe aktarmaları yeniden çalıştırırken yinelenenlerin oluşmasını önler.
## Nesne ve Alan Adlarını Bulma
Kullanılabilir nesneleri ve alanları görmek için:
1. **Ayarlar → API ve Webhook'lar**'a gidin
2. **Metadata API**'yi inceleyin
3. Tüm standart ve özel nesneleri alanlarıyla birlikte görüntüleyin
Dokümantasyon, tüm standart ve özel nesneleri, alanlarını ve beklenen veri türlerini gösterir.
## Profesyonel Hizmetler
Karmaşık API geçişleri için iş ortaklarımız yardımcı olabilir:
| Hizmet | Neler Dahil |
| --------------------------------- | ------------------------------------------- |
| **Veri Modeli Tasarımı** | en uygun veri yapınızı tasarlama |
| **Geçiş Betikleri** | içe aktarma betiklerini yazma ve çalıştırma |
| **Veri Dönüşümü** | karmaşık eşlemeleri ve temizliği yönetme |
| **Doğrulama ve Kalite Güvencesi** | geçişin tamamlandığını doğrulama |
**En uygun:**
* 100.000+ kayıttan oluşan geçişler
* Karmaşık veri dönüşümleri
* Sıkı zaman çizelgeleri
* Geliştirici kaynağı olmayan ekipler
[contact@twenty.com](mailto:contact@twenty.com) adresinden bizimle iletişime geçin veya [Uygulama Hizmetlerimizi](/l/tr/user-guide/getting-started/capabilities/implementation-services) keşfedin.
## SSS
<AccordionGroup>
<Accordion title="GraphQL ile REST arasındaki fark nedir?">
GraphQL, tek bir sorguda tam olarak ihtiyaç duyduğunuz verileri talep etmenizi sağlar ve karmaşık işlemler için daha uygundur. REST, standart HTTP yöntemlerini (GET, POST, PUT, DELETE) kullanır ve geleneksel API'lerle çalıştıysanız daha aşina gelebilir.
</Accordion>
<Accordion title="API aracılığıyla mevcut kayıtları güncelleyebilir miyim?">
Evet! Kayıdın `id`si ile güncelleme mutasyonları (GraphQL) veya PUT/PATCH isteklerini (REST) kullanın.
</Accordion>
<Accordion title="Yinelenenleri nasıl ele alırım?">
Önce benzersiz tanımlayıcıları (e-posta, etki alanı) kullanarak mevcut kayıtları sorgulayın. Varsa güncelleyin, yoksa oluşturun.
</Accordion>
<Accordion title="API aracılığıyla kayıtları silebilir miyim?">
Evet, silme mutasyonları (GraphQL) veya DELETE isteklerini (REST) kullanın.
</Accordion>
<Accordion title="Python veya Node.js için bir SDK var mı?">
Şu anda yok, ancak her iki API de herhangi bir dildeki herhangi bir HTTP istemcisiyle çalışır.
</Accordion>
</AccordionGroup>
## API Belgeleri
Tam uygulama ayrıntıları, kod örnekleri ve şema başvurusu için:
* [API Belgeleri](/l/tr/developers/extend/api)