snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
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 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,176 @@
---
title: Import dat přes API
description: Kdy a jak používat API Twenty pro hromadné importy dat.
---
## Přehled
Twenty poskytuje pro programový import dat jak **GraphQL**, tak **REST API**. API použijte, když import CSV není vzhledem k objemu vašich dat praktický, nebo když potřebujete automatizované, opakované importy.
## Kdy použít import přes API
| Scénář | Doporučená metoda |
| -------------------------------- | --------------------------------- |
| Méně než 10 000 záznamů | Import CSV |
| 10 000–50 000 záznamů | Import CSV (rozdělený do souborů) |
| **50 000+ záznamů** | **Import přes API** |
| Jednorázová migrace | Obojí (dle objemu) |
| **Pravidelné importy** | **Import přes API** |
| **Synchronizace v reálném čase** | **Import přes API** |
| **Integrace s jinými systémy** | **Import přes API** |
<Note>Pro datové sady o stovkách tisíc záznamů je API výrazně rychlejší a spolehlivější než více importů CSV.</Note>
## Limity rychlosti API
Twenty uplatňuje limity rychlosti, aby zajistilo stabilitu systému:
| Limit | Hodnota |
| ----------------------------------- | ------------------------ |
| **Požadavků za minutu** | 100 |
| **Záznamů na jedno dávkové volání** | 60 |
| **Maximální propustnost** | ~6 000 záznamů za minutu |
<Warning>
**Naplánujte import s ohledem na tyto limity.**
Pro 100 000 záznamů při maximální propustnosti počítejte s přibližně 17 minutami importu. Přidejte rezervu na zpracování chyb a opakování.
</Warning>
## Začínáme
### Krok 1: Získejte svůj klíč API
1. Přejděte do **Nastavení → Vývojáři**
2. Klikněte na **+ Vytvořit klíč API**
3. Dejte svému klíči API výstižný název
4. Klíč API si ihned zkopírujte (znovu se již nezobrazí)
5. Uložte ho bezpečně
<Warning>
**Chraňte svůj klíč API v tajnosti.**
Kdokoli s vaším klíčem API může přistupovat k datům vašeho pracovního prostoru a upravovat je. Nikdy ho neukládejte do repozitářů kódu ani jej veřejně nesdílejte.
</Warning>
### Krok 2: Vyberte si API
Twenty podporuje dva typy API:
| API | Vhodné pro | Dokumentace |
| ----------- | ----------------------------------------------------------------- | ----------------------------------------- |
| **GraphQL** | Flexibilní dotazy, získávání souvisejících dat, komplexní operace | [Dokumentace API](/l/cs/developers/extend/api) |
| **REST** | Jednoduché CRUD operace, známé postupy REST | [Dokumentace API](/l/cs/developers/extend/api) |
Obě API podporují:
* Vytváření, čtení, aktualizace a mazání záznamů
* **Dávkové operace** — vytvoření nebo aktualizace až 60 záznamů na jedno volání
**Pro importy používejte dávkové operace**, abyste maximalizovali propustnost v rámci limitů rychlosti.
### Krok 3: Naplánujte pořadí importu
Stejně jako u importů CSV na **pořadí záleží** kvůli vazbám:
1. **Společnosti** jako první (bez závislostí)
2. **Lidé** jako druzí (mohou se propojit se společnostmi)
3. **Příležitosti** jako třetí (mohou se propojit se společnostmi a lidmi)
4. **Úkoly/Poznámky** (mohou se propojit s kteroukoli z výše uvedených entit)
5. **Vlastní objekty** (podle jejich závislostí)
## Osvědčené postupy
### Dávkujte své požadavky
* Neposílejte záznamy po jednom
* Seskupte až **60 záznamů na jedno volání API**
* Tím maximalizujete propustnost v rámci limitů rychlosti
### Práce s limity rychlosti
* Zaveďte prodlevy mezi požadavky (minimálně 600 ms pro dlouhodobé importy)
* Při dosažení limitů použijte exponenciální backoff
* Sledujte odpovědi 429 (Too Many Requests)
### Nejprve ověřte data
* Před importem data vyčistěte a ověřte
* Zkontrolujte, že jsou vyplněna povinná pole
* Ověřte, že formáty odpovídají požadavkům Twenty (viz [Mapování polí](/l/cs/user-guide/data-migration/capabilities/field-mapping))
### Zaznamenávejte vše
* Zaznamenávejte každý importovaný záznam (včetně ID)
* Zaznamenávejte chyby s plným kontextem
* To pomáhá při ladění problémů a ověření dokončení
### Nejprve testujte
* Testujte s malou dávkou (10–20 záznamů)
* Ověřte, že se data v Twenty zobrazují správně
* Poté spusťte celý import
### Upsert pro zamezení duplicit
GraphQL API podporuje **dávkový upsert** — pokud záznam existuje, aktualizuje; pokud ne, vytvoří. To zabrání duplicitám při opakovaném spouštění importů.
## Hledání názvů objektů a polí
Chcete-li zobrazit dostupné objekty a pole:
1. Přejděte do **Nastavení → API a webhooky**
2. Procházejte **Metadata API**
3. Zobrazte všechny standardní i vlastní objekty s jejich poli
Dokumentace uvádí všechny standardní i vlastní objekty, jejich pole a očekávané datové typy.
## Profesionální služby
S náročnými migracemi přes API mohou pomoci naši partneři:
| Služba | Co je součástí |
| ------------------------- | ------------------------------------- |
| **Návrh datového modelu** | navrhnout optimální datovou strukturu |
| **Migrační skripty** | napsat a spustit importní skripty |
| **Transformace dat** | zpracovat složité mapování a čištění |
| **Validace a QA** | ověřit, že je migrace dokončená |
**Vhodné pro:**
* Migrace 100 000+ záznamů
* Složité transformace dat
* Napjaté časové plány
* Týmy bez vývojářských kapacit
Kontaktujte nás na [contact@twenty.com](mailto:contact@twenty.com) nebo prozkoumejte naše [Implementační služby](/l/cs/user-guide/getting-started/capabilities/implementation-services).
## Časté dotazy
<AccordionGroup>
<Accordion title="Jaký je rozdíl mezi GraphQL a REST?">
GraphQL vám umožní vyžádat si v jediném dotazu přesně ta data, která potřebujete, a je vhodnější pro složité operace. REST používá standardní metody HTTP (GET, POST, PUT, DELETE) a může vám být bližší, pokud jste pracovali s tradičními API.
</Accordion>
<Accordion title="Mohu aktualizovat existující záznamy přes API?">
Ano! Použijte aktualizační mutace (GraphQL) nebo požadavky PUT/PATCH (REST) s `id` záznamu.
</Accordion>
<Accordion title="Jak mám řešit duplicity?">
Nejprve vyhledejte existující záznamy pomocí jedinečných identifikátorů (e-mail, doména). Pokud existuje, aktualizujte; pokud ne, vytvořte.
</Accordion>
<Accordion title="Mohu mazat záznamy přes API?">
Ano, použijte mutace pro smazání (GraphQL) nebo požadavky DELETE (REST).
</Accordion>
<Accordion title="Existuje SDK pro Python nebo Node.js?">
V současnosti ne, ale obě API fungují s jakýmkoli klientem HTTP v libovolném jazyce.
</Accordion>
</AccordionGroup>
## Dokumentace API
Úplné podrobnosti implementace, ukázky kódu a referenci schématu najdete zde:
* [Dokumentace API](/l/cs/developers/extend/api)