# وثائق API تيسلي - **OpenAPI Version:** `3.1.0` - **API Version:** `1.0.0` # وثائق API تيسلي تتيح لك API تيسلي أتمتة نشر الفيديوهات وإعادة نشرها على عدة منصات تواصل اجتماعي باستخدام مصادقة بسيطة بمفتاح API. ## الميزات - رفع الفيديوهات ونشرها على عدة منصات في الوقت نفسه - إعداد إعادة النشر التلقائي من منصة واحدة إلى منصات أخرى - جدولة المنشورات لوقت لاحق - إدارة حسابات التواصل الاجتماعي المتصلة - تتبع سجل المنشورات وحالتها ## المتطلبات - **الخطة**: STARTER أو INFLUENCER أو PRO (مفاتيح API غير متاحة في خطة FREE) - **مفتاح API**: أنشئه من لوحة التحكم على - **HTTPS**: يجب أن تستخدم كل طلبات API بروتوكول HTTPS ## حدود الطلبات | الخطة | الطلبات في الساعة | | ---------- | ----------------- | | STARTER | 50 | | INFLUENCER | 200 | | PRO | 1000 | عند تجاوز الحد، ستتلقى خطأ 429 مع حقل `retryAfter` يوضح عدد الثواني التي يجب انتظارها. ## أفضل ممارسات الأمان 1. لا تحفظ مفاتيح API أبدا في نظام التحكم بالإصدارات 2. خزّن المفاتيح في متغيرات البيئة 3. أعد إنشاء المفتاح فورا إذا تم اختراقه 4. استخدم HTTPS فقط ## متطلبات الفيديو - **الصيغة**: MP4 أو MOV أو صيغ فيديو شائعة أخرى - **الحجم**: الحد الأقصى 500MB - **المدة**: من 3 إلى 90 ثانية - **الاتجاه**: عمودي (9:16) ## مثال بداية سريعة ```bash # 1. احصل على منصاتك المتصلة curl -X GET https://app.taisly.com/api/private/platform/platforms \ -H "Authorization: Bearer taisly_your_api_key_here" # 2. ارفع فيديو curl -X POST https://app.taisly.com/api/private/post \ -H "Authorization: Bearer taisly_your_api_key_here" \ -F "video=@/path/to/video.mp4" \ -F "platforms=[\"platform_id_1\"]" \ -F "description=شاهد الفيديو الجديد!" # 3. تحقق من سجل المنشورات curl -X GET https://app.taisly.com/api/private/post/history \ -H "Authorization: Bearer taisly_your_api_key_here" ``` ## مثال Python ```python import requests API_KEY = 'taisly_your_api_key_here' BASE_URL = 'https://app.taisly.com/api/private' headers = { 'Authorization': f'Bearer {API_KEY}' } # الحصول على المنصات response = requests.get(f'{BASE_URL}/platform/platforms', headers=headers) platforms = response.json()['data'] print(f"المنصات المتصلة: {len(platforms)}") # رفع فيديو files = {'video': open('video.mp4', 'rb')} data = { 'platforms': str([platforms[0]['_id']]), 'description': 'وصف الفيديو الخاص بي' } response = requests.post(f'{BASE_URL}/post', headers=headers, files=files, data=data) print(response.json()) ``` ## Servers - **URL:** `https://app.taisly.com/api/private` - **Description:** خادم الإنتاج ## Operations ### الحصول على معلومات مفتاح API - **Method:** `GET` - **Path:** `/user/api-key` - **Tags:** API Key Management استرجاع معلومات حول مفتاح API الحالي الخاص بك. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### إنشاء مفتاح API - **Method:** `POST` - **Path:** `/user/api-key/generate` - **Tags:** API Key Management إنشاء مفتاح API جديد أو إعادة إنشائه إذا كان موجودا بالفعل. **مهم**: - يظهر مفتاح API الكامل مرة واحدة فقط. احفظه بأمان. - عند إعادة الإنشاء، سيتم إلغاء المفتاح القديم فورا. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### إلغاء مفتاح API - **Method:** `POST` - **Path:** `/user/api-key/revoke` - **Tags:** API Key Management إلغاء مفتاح API الحالي فورا. ستفشل كل الطلبات التي تستخدم هذا المفتاح. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### الحصول على المنصات المتصلة - **Method:** `GET` - **Path:** `/platform/platforms` - **Tags:** Platforms استرجاع كل حسابات التواصل الاجتماعي المتصلة بحسابك. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### إنشاء منشور - **Method:** `POST` - **Path:** `/post` - **Tags:** Posts رفع فيديو إلى منصة واحدة أو أكثر من المنصات المتصلة. **متطلبات الفيديو:** - الصيغة: MP4 أو MOV أو صيغ فيديو شائعة أخرى - الحجم: الحد الأقصى 500MB - المدة: من 3 إلى 90 ثانية - الاتجاه: عمودي (9:16) **الجدولة:** - مرر `scheduled` كطابع زمني Unix بالميلي ثانية للمنشورات المجدولة (اترك هذا المعامل إذا كنت لا تريد الجدولة) #### Request Body ##### Content-Type: multipart/form-data - **`platforms` (required)** `array` — قائمة المعرفات **Items:** `string` - **`video` (required)** `string`, format: `binary` — - **`description`** `string` - **`previewTime`** `number` — الطابع الزمني بالثواني لإنشاء الصورة المصغرة (الافتراضي: 0) - **`scheduled`** `string` **Example:** ```json { "video": {}, "platforms": [ "" ], "description": "", "previewTime": 1, "scheduled": "" } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### الحصول على سجل المنشورات - **Method:** `GET` - **Path:** `/post/history` - **Tags:** Posts استرجاع سجل منشوراتك مع معلومات الحالة لكل منصة. **ترقيم الصفحات**: - استخدم معامل `page` لترقيم الصفحات (10 عناصر في كل صفحة) - أو استخدم `startTime` و `endTime` لتصفية نطاق التاريخ (يعرض كل المنشورات المطابقة) **قيم الحالة**: - PENDING: المنشور في قائمة الانتظار - SUCCESS: تم النشر بنجاح - FAILED: فشل النشر (راجع حقل الرسالة لمعرفة رمز الخطأ) #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### إلغاء منشور مجدول - **Method:** `GET` - **Path:** `/post/cancelSchedule` - **Tags:** Posts إلغاء منشور تمت جدولته لوقت لاحق. سيتم حذف المنشور نهائيا. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### الحصول على إعدادات إعادة النشر - **Method:** `GET` - **Path:** `/reposts` - **Tags:** Reposts استرجاع كل قواعد إعادة النشر التلقائي المضبوطة. عندما تنشر على منصة 'from'، سيعاد نشر المحتوى تلقائيا على كل منصات 'to'. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### إضافة إعداد إعادة نشر - **Method:** `POST` - **Path:** `/repost/add` - **Tags:** Reposts إعداد إعادة النشر التلقائي من منصة واحدة إلى منصات أخرى. **كيف يعمل**: - عندما تنشر محتوى على منصة 'from'، سيعاد نشره تلقائيا على كل منصات 'to' **ملاحظة**: يتم منع الاعتماديات الدائرية. لا يمكنك إنشاء A->B إذا كان B->A موجودا بالفعل. #### Request Body ##### Content-Type: application/json - **`from` (required)** `string` — معرف المنصة - **`to` (required)** `array` — قائمة معرفات المنصات **Items:** `string` **Example:** ```json { "from": "", "to": [ "" ] } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 400 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### حذف إعداد إعادة النشر - **Method:** `POST` - **Path:** `/repost/delete` - **Tags:** Reposts إزالة قاعدة إعادة نشر تلقائي. لن يعاد نشر المنشورات المستقبلية من منصة المصدر تلقائيا. #### Request Body ##### Content-Type: application/json - **`id` (required)** `string` **Example:** ```json { "id": "" } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### إيقاف/استئناف إعداد إعادة النشر - **Method:** `POST` - **Path:** `/repost/pause` - **Tags:** Reposts إيقاف إعادة النشر التلقائي مؤقتا أو استئنافها. مفيد عندما تريد إيقاف إعادة النشر مؤقتا دون حذف الإعداد. #### Request Body ##### Content-Type: application/json - **`id` (required)** `string` - **`isPaused` (required)** `boolean` **Example:** ```json { "id": "", "isPaused": true } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json