الـ API والتكامل
الـ API
يتوفّر مرجع API تفاعلي عام بكامل نقاط النهاية والنطاقات وأمثلة cURL على صفحة مرجع الـ API — مناسب للمشاركة المباشرة.
URL الأساسي
https://getokta.io/api/apps
المصادقة
كل طلب يحمل Authorization: Bearer <installation_token>.
نقاط النهاية الجاهزة
| Endpoint | Scope | الوصف |
|---|---|---|
GET /whoami |
(لا شيء) | معلومات الـ installation الحالي |
GET /entity |
(لا شيء) | أين أنا: نوع الجهة، هل هي حاوية، وأمّها |
GET /entity/children |
entity.hierarchy.read |
الجهات التابعة (?descendants=1 لكل المستويات) مع installed وaccess |
GET /entity/children/{id} |
entity.hierarchy.read |
ملفّ جهة تابعة (الشعار مساراً، التواصل، الدولة، المرحلة، الأحجام) |
GET /entity/children/{id}/logo |
entity.hierarchy.read |
شعار الجهة التابعة |
GET /entity/ancestors |
entity.hierarchy.read |
الجهات فوقي، الأقرب أوّلاً |
GET /education/students |
education.students.read |
قائمة الطلاب (paginated) |
GET /education/students/{id} |
education.students.read |
طالب واحد |
POST /education/students |
education.students.write |
إنشاء طالب |
PATCH /education/students/{id} |
education.students.write |
تعديل طالب |
GET /education/subjects |
education.subjects.read |
المواد |
GET /education/grades |
education.grades.read |
الصفوف |
GET /education/sections |
education.sections.read |
الشُعب |
GET /employees/directory |
employees.directory.read |
الموظفين |
GET /reports/builder |
reports.builder.read |
كتالوج التقارير |
POST /reports/builder/{key}/run |
reports.builder.read |
تنفيذ تقرير |
GET /reports/templates |
reports.builder.read |
قوالب المدرسة (الترويسات) |
POST /reports/templates/{id}/render |
reports.builder.read |
طباعة محتواك على ترويسة (يعيد PDF) |
POST /reports/templates |
reports.builder.write |
اقتراح قالب من تأليف تطبيقك (يصل مسودة) |
PATCH /reports/templates/{id} |
reports.builder.write |
تعديل قالب ألّفه تطبيقك (يُسقط الاعتماد) |
DELETE /reports/templates/{id} |
reports.builder.write |
حذف مسودة ألّفها تطبيقك |
كل نقطة قراءة لبيانات الجهة (
education/*،employees/directory،tool-keys/*،reports/*) تقبل?entities=<ulid>,<ulid>أو?entity=<ulid>لتقرأ الجهات التابعة من المجمّع — لشخص يحملtenants.children.view_members، لا لتوكن التثبيت. التفاصيل في فصل «الشركات والمجمّعات: شجرة الجهة وبيانات مدارسها».
القائمة الكاملة دائماً في https://partners.getokta.io/docs/openapi.json (مواصفة OpenAPI 3.1 محدّثة آلياً). ويُمكنك استيراد Postman collection جاهزة.
Pagination
كل قائمة ترجع:
{
"data": [ ... ],
"total": 1242,
"per_page": 20,
"current_page": 1,
"last_page": 63
}
استخدم ?page=2&per_page=50 (الحد الأقصى 100 لكل صفحة).
Idempotency
عمليات الكتابة تقبل header اختياري:
Idempotency-Key: <uuid>
نفس المفتاح خلال 24 ساعة يعيد نفس الإجابة المخزّنة، حتى لو تم استدعاؤه عشرات المرات. هذا يضمن أنه لو حصل timeout على جانبك، إعادة المحاولة لن تُنشئ سجلاً مكرراً.