نظرة عامة
توفّر Twenty كلًا من GraphQL وواجهات REST API لاستيراد البيانات برمجيًا. استخدم واجهة API عندما لا يكون استيراد CSV عمليًا لحجم بياناتك أو عندما تحتاج إلى عمليات استيراد مؤتمتة ومتكررة.متى تستخدم الاستيراد عبر API
| السيناريو | الطريقة الموصى بها |
|---|---|
| أقل من 10,000 سجل | استيراد CSV |
| 10,000 - 50,000 سجل | استيراد CSV (قسّم إلى ملفات) |
| أكثر من 50,000 سجل | استيراد API |
| ترحيل لمرة واحدة | أيّ منهما (حسب الحجم) |
| عمليات استيراد متكررة | استيراد API |
| مزامنة في الوقت الحقيقي | استيراد API |
| التكامل مع الأنظمة الأخرى | استيراد API |
بالنسبة لمجموعات البيانات التي تبلغ مئات الآلاف، تكون واجهة API أسرع بكثير وأكثر موثوقية من عمليات استيراد CSV المتعددة.
حدود معدل API
تفرض Twenty حدودًا للمعدل لضمان استقرار النظام:| الحد | القيمة |
|---|---|
| الطلبات في الدقيقة | 100 |
| السجلات لكل استدعاء دفعي | 60 |
| الحد الأقصى للإنتاجية | ~6,000 سجل/دقيقة |
البدء
الخطوة 1: احصل على مفتاح API الخاص بك
- انتقل إلى الإعدادات → المطوّرون
- انقر + إنشاء مفتاح API
- امنح مفتاحك اسمًا وصفيًا
- انسخ مفتاح API فورًا (لن يُعرَض مرة أخرى)
- احفظه في مكان آمن
الخطوة 2: اختر واجهة API الخاصة بك
تدعم Twenty نوعين من واجهات API:
كلتا واجهتي API تدعمان:
- إنشاء السجلات وقراءتها وتحديثها وحذفها
- عمليات الدُفعات — إنشاء أو تحديث ما يصل إلى 60 سجلًا لكل استدعاء
الخطوة 3: خطّط لترتيب الاستيراد
تمامًا مثل عمليات استيراد CSV، فإن الترتيب مهم للعلاقات:- الشركات أولًا (من دون تبعيات)
- الأشخاص ثانيًا (يمكن ربطهم بالشركات)
- الفرص ثالثًا (يمكن ربطها بالشركات والأشخاص)
- المهام/الملاحظات (يمكن ربطها بأي مما سبق)
- الكائنات المخصّصة (وفقًا لتبعياتها)
أفضل الممارسات
اجمع طلباتك في دُفعات
- لا ترسل السجلات واحدًا تلو الآخر
- اجمع ما يصل إلى 60 سجلًا لكل استدعاء API
- هذا يُعظّم الإنتاجية ضمن حدود المعدل
التعامل مع حدود المعدل
- طبّق فواصل زمنية بين الطلبات (600 مللي ثانية كحد أدنى لعمليات الاستيراد المستمرة)
- استخدم التراجع الأسي عند بلوغ الحدود
- راقِب الاستجابات 429 (طلبات كثيرة جدًا)
تحقّق من البيانات أولًا
- نظّف بياناتك وتحقّق منها قبل الاستيراد
- تحقّق من تعبئة الحقول المطلوبة
- تحقّق من توافق التنسيقات مع متطلبات Twenty (راجع تعيين الحقول)
سجّل كل شيء
- سجّل كل سجل تم استيراده (بما في ذلك المعرّفات)
- سجّل الأخطاء مع السياق الكامل
- يساعد ذلك في تصحيح المشكلات والتحقق من الإكمال
اختبر أولًا
- اختبر بدفعة صغيرة (10-20 سجلًا)
- تحقّق من ظهور البيانات بشكل صحيح في Twenty
- ثم نفّذ عملية الاستيراد الكاملة
استخدم upsert لتجنّب التكرارات
واجهة GraphQL API تدعم upsert على دفعات — حدِّث إذا كان السجل موجودًا، وأنشئ إذا لم يكن كذلك. يمنع هذا التكرارات عند إعادة تشغيل عمليات الاستيراد.العثور على أسماء الكائنات والحقول
للاطلاع على الكائنات والحقول المتاحة:- انتقل إلى الإعدادات → API وخطافات الويب
- استعرض واجهة API للبيانات الوصفية
- اعرض جميع الكائنات القياسية والمخصّصة مع حقولها
الخدمات الاحترافية
بالنسبة لعمليات ترحيل API المعقّدة، يمكن لشركائنا تقديم المساعدة:| الخدمة | ما الذي يتضمّنه |
|---|---|
| تصميم نموذج البيانات | تصميم الهيكل الأمثل لبياناتك |
| برامج نصية للترحيل | كتابة وتشغيل البرامج النصية للاستيراد |
| تحويل البيانات | التعامل مع التعيين المعقّد والتنظيف |
| التحقق وضمان الجودة | التحقق من اكتمال عملية الترحيل |
- عمليات ترحيل لأكثر من 100,000 سجل
- تحويلات بيانات معقّدة
- جداول زمنية ضيّقة
- الفرق التي تفتقر إلى موارد المطورين
الأسئلة الشائعة
ما الفرق بين GraphQL وREST؟
ما الفرق بين GraphQL وREST؟
يتيح لك GraphQL طلب البيانات التي تحتاجها بدقة ضمن استعلام واحد، وهو أفضل للعمليات المعقّدة. يعتمد REST على طرق HTTP القياسية (GET وPOST وPUT وDELETE)، وقد يكون أكثر ألفة إذا سبق لك العمل مع واجهات API التقليدية.
هل يمكنني تحديث السجلات الموجودة عبر API؟
هل يمكنني تحديث السجلات الموجودة عبر API؟
نعم! استخدم تحديثات mutations في GraphQL أو طلبات PUT/PATCH في REST مع
id الخاص بالسجل.كيف أتعامل مع التكرارات؟
كيف أتعامل مع التكرارات؟
استعلم أولًا عن السجلات الموجودة باستخدام معرّفات فريدة (البريد الإلكتروني، النطاق). حدِّث إذا كان موجودًا، وأنشئ إذا لم يكن كذلك.
هل يمكنني حذف السجلات عبر API؟
هل يمكنني حذف السجلات عبر API؟
نعم، استخدم delete mutations في GraphQL أو طلبات DELETE في REST.
هل يوجد SDK لـ Python أو Node.js؟
هل يوجد SDK لـ Python أو Node.js؟
لا يتوفر ذلك في الوقت الحالي، لكن كلتا واجهتي API تعملان مع أي عميل HTTP بأي لغة.