Analytics API
توفّر Analytics API وصولاً برمجياً إلى تحليلات المنتج، بما فيها استعلامات الأحداث والمسارات والتحليل الاستبقائي وتحليل المسارات وcohorts.
كل نقاط النهاية في هذه الصفحة نسبية إلى عنوان الأساس https://api-eu1.joryio.com. راجع نظرة عامة على API.
المصادقة
تتطلب جميع النقاط المصادقة بمفتاح API:
Authorization: Bearer YOUR_API_KEY
X-Workspace-Id: YOUR_WORKSPACE_ID
مستكشف الأحداث
عرض الأحداث
احصل على ملخص لجميع الأحداث المتتبعة.
GET /analytics/events
معاملات الاستعلام:
| المعامل | النوع | الوصف |
|---|---|---|
| startDate | string | تاريخ البدء، YYYY-MM-DD |
| endDate | string | تاريخ النهاية، YYYY-MM-DD |
| search | string | تصفية باسم الحدث |
| limit | number | أقصى نتائج، الافتراضي 100 |
الاستجابة:
{
"events": [
{
"eventName": "signup_completed",
"totalCount": 15420,
"uniqueUsers": 12350,
"lastSeen": "2024-01-15T14:30:00Z"
}
],
"total": 45
}
الحصول على اتجاه حدث
احصل على أعداد الأحداث مع مرور الوقت.
POST /analytics/events/trend
نص الطلب:
{
"eventNames": ["signup_completed", "purchase_completed"],
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"timeGranularity": "day"
}
الاستجابة:
[
{
"date": "2024-01-01",
"count": 523,
"uniqueUsers": 498
}
]
الحصول على خصائص حدث
اعرض خصائص حدث محدد.
GET /analytics/events/:eventName/properties
الاستجابة:
[
{
"propertyName": "plan_type",
"valueCount": 4
},
{
"propertyName": "source",
"valueCount": 12
}
]
الحصول على توزيع خاصية
احصل على توزيع قيم خاصية لحدث.
POST /analytics/events/property-breakdown
نص الطلب:
{
"eventName": "purchase_completed",
"property": "payment_method",
"startDate": "2024-01-01",
"endDate": "2024-01-31"
}
الاستجابة:
{
"total": 5420,
"values": [
{ "value": "credit_card", "count": 3250, "percentage": 59.96 },
{ "value": "paypal", "count": 1520, "percentage": 28.04 },
{ "value": "bank_transfer", "count": 650, "percentage": 11.99 }
]
}
تحليل المسار
إنشاء مسار
احفظ تعريف مسار جديد.
POST /analytics/funnels
نص الطلب:
{
"name": "Signup to Purchase",
"steps": [
{
"id": "step_1",
"order": 0,
"eventName": "signup_completed",
"filters": []
},
{
"id": "step_2",
"order": 1,
"eventName": "onboarding_completed",
"filters": []
},
{
"id": "step_3",
"order": 2,
"eventName": "purchase_completed",
"filters": []
}
],
"conversionWindowDays": 7
}
عرض المسارات
GET /analytics/funnels
تحليل مسار
شغّل التحليل على مسار محفوظ.
POST /analytics/funnels/:id/analyze
نص الطلب:
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"breakdown": {
"type": "event_property",
"property": "utm_source"
}
}
الاستجابة:
{
"totalUsers": 10000,
"overallConversion": 12.5,
"steps": [
{
"id": "step_1",
"order": 0,
"eventName": "signup_completed",
"enteredCount": 10000,
"conversionRate": 100,
"dropOffRate": 0
},
{
"id": "step_2",
"order": 1,
"eventName": "onboarding_completed",
"enteredCount": 6500,
"conversionRate": 65,
"dropOffRate": 35
},
{
"id": "step_3",
"order": 2,
"eventName": "purchase_completed",
"enteredCount": 1250,
"conversionRate": 19.23,
"dropOffRate": 80.77
}
],
"breakdown": [
{
"breakdownValue": "google",
"overallConversion": 15.2,
"steps": [...]
}
]
}
تحليل مسار سريع
حلّل من دون حفظ.
POST /analytics/funnels/quick-analyze
تحليل الاحتفاظ
تحليل الاحتفاظ
POST /analytics/retention/analyze
نص الطلب:
{
"startEvent": "signup_completed",
"returnEvent": "session_started",
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"timeUnit": "week",
"periods": 8
}
الاستجابة:
{
"timeUnit": "week",
"cohorts": [
{
"cohortDate": "2024-01-01",
"cohortSize": 1250,
"periods": [
{ "period": 0, "retainedCount": 1250, "retentionRate": 100 },
{ "period": 1, "retainedCount": 562, "retentionRate": 44.96 },
{ "period": 2, "retainedCount": 375, "retentionRate": 30.0 }
]
}
],
"overallRetention": [100, 45.2, 31.5, 25.8, 22.1, 19.5, 17.8, 16.2]
}
تصدير الاحتفاظ
POST /analytics/retention/export
يعيد بيانات CSV.
تحليل المسارات
تحليل المسارات
POST /analytics/paths/analyze
نص الطلب:
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"startEvent": "landing_page_view",
"direction": "forward",
"maxSteps": 5,
"minPathCount": 10,
"minPathPercent": 0.5,
"maxBranchesPerStep": 5,
"excludeEvents": ["heartbeat", "scroll"]
}
يضبط minPathCount، المستخدمين المطلقين، وminPathPercent، نسبة المستخدمين المؤهلين من 0 إلى 100، عتبة التكرار: يجب أن يتجاوز المسار الأكبر منهما، فتحافظ النسبة على قابلية الاستخدام في مساحات العمل بمختلف الأحجام. ويحد maxBranchesPerStep، من 1 إلى 50 والافتراضي 8، مخطط التدفق إلى أبرز الأحداث التالية في كل خطوة ليبقى مقروءاً مع الحجم الكبير.
الاستجابة:
{
"totalUsers": 25000,
"totalPaths": 342,
"paths": [
{
"path": ["landing_page_view", "signup_started", "signup_completed"],
"count": 3250,
"percentage": 13.0
}
],
"sankey": {
"nodes": [
{ "id": "landing_page_view_0", "name": "landing_page_view" }
],
"links": [
{ "source": "landing_page_view_0", "target": "signup_started_1", "value": 5200 }
]
}
}
Cohorts
إنشاء Cohort
POST /analytics/cohorts
نص الطلب:
{
"name": "Power Users",
"description": "Users who engage frequently",
"rules": [
{
"type": "event",
"operator": "did_count",
"eventName": "session_started",
"count": 10,
"timeWindow": { "value": 30, "unit": "day" }
}
]
}
عرض Cohorts
GET /analytics/cohorts
الحصول على Cohort
GET /analytics/cohorts/:id
تحديث Cohort
PUT /analytics/cohorts/:id
حذف Cohort
DELETE /analytics/cohorts/:id
تحديث عدد Cohort
POST /analytics/cohorts/:id/refresh
إنشاء شريحة من Cohort
اربط Cohort بشريحة لاستهداف الحملات.
POST /analytics/cohorts/:id/create-segment
نص الطلب:
{
"segmentName": "Power Users Segment"
}
لوحات التحكم
إنشاء لوحة تحكم
POST /analytics/dashboards
نص الطلب:
{
"name": "Executive Dashboard",
"description": "Key metrics overview",
"widgets": [
{
"id": "widget-1",
"type": "metric",
"title": "Active Users",
"config": {
"eventName": "session_started",
"metric": "unique_users"
},
"layout": { "x": 0, "y": 0, "width": 3, "height": 2 }
}
]
}
عرض لوحات التحكم
GET /analytics/dashboards
الحصول على لوحة تحكم
GET /analytics/dashboards/:id
تحديث لوحة تحكم
PUT /analytics/dashboards/:id
حذف لوحة تحكم
DELETE /analytics/dashboards/:id
التحليلات الفورية
الحصول على المستخدمين النشطين
GET /analytics/realtime/active-users
الاستجابة:
{
"count": 1523,
"trend": 5.2
}
تدفق أحداث حي، SSE
GET /analytics/realtime/events/stream
يعيد تدفق Server-Sent Events للأحداث الحية.
استجابات الأخطاء
تعيد كل النقاط استجابات الخطأ القياسية:
{
"statusCode": 400,
"message": "Invalid date range",
"error": "Bad Request"
}
| رمز الحالة | الوصف |
|---|---|
| 400 | طلب غير صالح أو خطأ تحقق |
| 401 | غير مصادق |
| 403 | ممنوع |
| 404 | المورد غير موجود |
| 500 | خطأ داخلي في الخادم |