الانتقال إلى المحتوى الرئيسي
هذا دليل متقدم لأتمتة إنشاء الموصلات. نوصي بشدة بتجربة لوحة الإدارة أو File Ingestion API أولاً.
للاطلاع على الموصلات المتاحة، راجع صفحة الموصلات.

الدليل

انتقل إلى قسم الكود الكامل إذا كنت لا تريد الدليل التفصيلي. في هذا المثال، سنؤتمر إنشاء موصلات Jira لمجموعة من المشاريع. ستحتاج إلى مفتاح API للمسؤول لمتابعة هذا الدليل.
1

جهّز طلبك

import requests

API_BASE_URL = "https://cloud.gorbit.app/api"   # أو نطاقك الخاص
API_KEY = "YOUR_KEY_HERE"

headers = {
  "Authorization": f"Bearer {API_KEY}",
  "Content-Type": "application/json"
}
2

جهّز ConnectorSpecificConfig

كل نوع موصل لديه ConnectorSpecificConfig مختلف. للعثور على التكوين الصحيح، ابحث عن الموصل ذي الصلة في backend/gorbit/connectors/.بالنسبة لـ Jira، بما أننا نفهرس مجموعة مختارة من المشاريع، بدلاً من جميع المشاريع، سنحتاج إلى تحديد jira_base_url، و project_key، واختيارياً comment_email_blacklist.
JSON
{
  "jira_base_url": "string",
  "project_key": "string | null",
  "comment_email_blacklist": ["string"] | null
}
ConnectorSpecificConfig هي نفس الحقول التي تملؤها في لوحة الإدارة عند إنشاء موصل.
3

جهّز بيانات الموصل

بالإضافة إلى ConnectorSpecificConfig، نحتاج أيضاً إلى تلبية مخطط كائن ConnectorUpdateRequest. راجع المفاهيم الأساسية: الموصلات للحصول على مزيد من التفاصيل.في هذا المثال، سنضبط access_type، و name، و source، و input_type، و refresh_freq، و prune_freq.
connector_payload = {
  "name": f"jira-{project_key}",
  "source": "jira",
  "input_type": "poll",
  "access_type": "PUBLIC",
  "connector_specific_config": {
    "jira_base_url": JIRA_BASE_URL,
    "project_key": project_key,
    "comment_email_blacklist": ["legal@company.com"]
  },
  "refresh_freq": 3600,  # تحديث كل ساعة (3600 ثانية)
  "prune_freq": 86400,   # تقليم كل يوم (86400 ثانية)
}
4

قم بإجراء الطلب

احفظ معرف الموصل من الاستجابة! ستحتاجه لاحقاً.
import requests
import json
from datetime import datetime

PROJECTS_TO_INDEX = [
  "TECH",
  "SALES",
  "OPS",
]

JIRA_BASE_URL = "https://your-company.atlassian.net"
connector_ids = []

for project_key in PROJECTS_TO_INDEX:
  connector_payload = {
    "name": f"jira-{project_key}",
    "source": "jira",
    "input_type": "poll",
    "access_type": "PUBLIC",
    "connector_specific_config": {
      "jira_base_url": JIRA_BASE_URL,
      "project_key": project_key,
      "comment_email_blacklist": ["legal@company.com"]
    },
    "refresh_freq": 3600,  # تحديث كل ساعة (3600 ثانية)
    "prune_freq": 86400,   # تقليم كل يوم (86400 ثانية)
  }

  response = requests.post(
    f"{API_BASE_URL}/manage/admin/connector",
    headers=headers,
    json=connector_payload
  )

  if response.status_code == 200:
    connector_data = response.json()
    connector_id = connector_data.get('id')
    connector_ids.append(connector_id)
    print(f"تم إنشاء موصل للمشروع {project_key} بنجاح")
    print(f"معرف الموصل: {connector_id}")
  else:
    print(f"فشل إنشاء موصل للمشروع {project_key}")
    print(f"الحالة: {response.status_code}")
    print(f"الخطأ: {response.text}")
5

ابحث عن بيانات الاعتماد للموصل

أسهل طريقة لإنشاء بيانات اعتماد هي في لوحة الإدارة.
  • انقر على إضافة موصل
  • اختر الموصل ذي الصلة
  • اتبع التعليمات لإنشاء بيانات اعتماد
بمجرد إنشاء بيانات الاعتماد، سيتم عرض معرف بيانات الاعتماد لك.قد لا تتطلب بعض الموصلات بيانات اعتماد مثل موصلات الملفات والويب. credential_id: 0 هو بيانات اعتماد فارغة افتراضية يمكنك استخدامها لهذه الموصلات.لعرض قائمة بيانات الاعتماد الخاصة بك، يمكنك استخدام نقطة النهاية GET manage/admin/credential.
response = requests.get(
  f"{API_BASE_URL}/manage/admin/credential",
  headers=headers
)

credentials = response.json()
jira_credential_id = next(cred for cred in credentials if cred['source'] == 'jira')['id']
6

اربط بيانات الاعتماد بالموصل

إذا لم تقم بهذه الخطوة، فإن Connector الخاص بك لم يتم إنشاؤه بالكامل ولن تراه في لوحة الإدارة!
for connector_id in connector_ids:
  try:
    response = requests.put(
      f"{API_BASE_URL}/manage/admin/connector/{connector_id}/credential/{jira_credential_id}",
      headers=headers,
    )

    if response.status_code == 200:
      print(f"تم ربط بيانات الاعتماد بالموصل {connector_id} بنجاح")
    else:
      print(f"فشل ربط بيانات الاعتماد بالموصل {connector_id}")
      print(f"الحالة: {response.status_code}. الخطأ: {response.text}")
  except Exception as e:
    print(f"فشل ربط بيانات الاعتماد بالموصل {connector_id}: {e}")

الكود الكامل

import requests
import json
from datetime import datetime

# التكوين
API_BASE_URL = "https://cloud.gorbit.app/api"   # أو نطاقك الخاص
API_KEY = "YOUR_KEY_HERE"

headers = {
  "Authorization": f"Bearer {API_KEY}",
  "Content-Type": "application/json"
}

# المشاريع لإنشاء موصلات لها
PROJECTS_TO_INDEX = [
  "TECH",
  "SALES",
  "OPS",
]

JIRA_BASE_URL = "https://your-company.atlassian.net"
connector_ids = []

# الخطوة 1: إنشاء موصلات لكل مشروع
print("جاري إنشاء الموصلات...")
for project_key in PROJECTS_TO_INDEX:
  connector_payload = {
    "name": f"jira-{project_key}",
    "source": "jira",
    "input_type": "poll",
    "access_type": "PUBLIC",
    "connector_specific_config": {
      "jira_base_url": JIRA_BASE_URL,
      "project_key": project_key,
      "comment_email_blacklist": ["legal@company.com"]
    },
    "refresh_freq": 3600,  # تحديث كل ساعة (3600 ثانية)
    "prune_freq": 86400,   # تقليم كل يوم (86400 ثانية)
  }

  response = requests.post(
    f"{API_BASE_URL}/manage/admin/connector",
    headers=headers,
    json=connector_payload
  )

  if response.status_code == 200:
    connector_data = response.json()
    connector_id = connector_data.get('id')
    connector_ids.append(connector_id)
    print(f"تم إنشاء موصل للمشروع {project_key} بنجاح")
    print(f"معرف الموصل: {connector_id}")
  else:
    print(f"فشل إنشاء موصل للمشروع {project_key}")
    print(f"الحالة: {response.status_code}")
    print(f"الخطأ: {response.text}")

# الخطوة 2: الحصول على بيانات الاعتماد
print("\nجاري جلب بيانات الاعتماد...")
response = requests.get(
  f"{API_BASE_URL}/manage/admin/credential",
  headers=headers
)

if response.status_code == 200:
  credentials = response.json()
  # البحث عن بيانات اعتماد Jira (يفترض أن لديك واحدة تم إنشاؤها)
  jira_credential = next((cred for cred in credentials if cred['source'] == 'jira'), None)

  if jira_credential:
    jira_credential_id = jira_credential['id']
    print(f"تم العثور على بيانات اعتماد Jira بالمعرف: {jira_credential_id}")
  else:
    print("لم يتم العثور على بيانات اعتماد Jira. يرجى إنشاء واحدة في لوحة الإدارة أولاً.")
    exit(1)
else:
  print(f"فشل جلب بيانات الاعتماد: {response.status_code}")
  print(f"الخطأ: {response.text}")
  exit(1)

# الخطوة 3: ربط بيانات الاعتماد بالموصلات
print("\nجاري ربط بيانات الاعتماد بالموصلات...")
for connector_id in connector_ids:
  try:
    response = requests.put(
      f"{API_BASE_URL}/manage/admin/connector/{connector_id}/credential/{jira_credential_id}",
      headers=headers,
    )

    if response.status_code == 200:
      print(f"تم ربط بيانات الاعتماد بالموصل {connector_id} بنجاح")
    else:
      print(f"فشل ربط بيانات الاعتماد بالموصل {connector_id}")
      print(f"الحالة: {response.status_code}. الخطأ: {response.text}")
  except Exception as e:
    print(f"فشل ربط بيانات الاعتماد بالموصل {connector_id}: {e}")

print(f"\nاكتمل! تم إنشاء {len(connector_ids)} موصل بالمعرفات: {connector_ids}")