people
People
Students, guardians, staff, and the authenticated caller’s own profile.
43 نقاط النهاية
GET /api/v1/guardians
List guardians (cursor-paginated). `q` searches name/phone.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
q | query | string | 1–200 chars |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/guardians" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
nextCursorمطلوب | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"nationalId": "X123456789",
"preferredLocale": "ar",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/guardians
Create a guardian. `phone` must be unique within the tenant (409 otherwise).
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
userId | string (uuid) | — |
firstNameمطلوب | string | 1–100 chars |
lastNameمطلوب | string | 1–100 chars |
phoneمطلوب | string | — |
email | enum: "" | string (email) | — |
nationalId | enum: "" | string | — |
preferredLocale | enum: "ar" | "en" | "he" | default: "ar" |
address | object | — |
مثال
{
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "",
"nationalId": "",
"preferredLocale": "ar",
"address": {}
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/guardians" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "",
"nationalId": "",
"preferredLocale": "ar",
"address": {}
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
phoneمطلوب | string | — |
emailمطلوب | string (email) | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
preferredLocaleمطلوب | enum: "ar" | "en" | "he" | — |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"nationalId": "X123456789",
"preferredLocale": "ar",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X DELETE "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
لا يحدّد ملف OpenAPI الخاص بالواجهة مخطّطًا مكتوبًا لهذه الاستجابة بعد — الاستجابة لا تزال JSON صالحًا، لكنها غير موثّقة هنا.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
phoneمطلوب | string | — |
emailمطلوب | string (email) | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
preferredLocaleمطلوب | enum: "ar" | "en" | "he" | — |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"nationalId": "X123456789",
"preferredLocale": "ar",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
userId | string (uuid) | — |
firstName | string | 1–100 chars |
lastName | string | 1–100 chars |
phone | string | — |
email | enum: "" | string (email) | — |
nationalId | enum: "" | string | — |
preferredLocale | enum: "ar" | "en" | "he" | default: "ar" |
address | object | — |
مثال
{
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "",
"nationalId": "",
"preferredLocale": "ar",
"address": {}
}مثال بأمر curl
curl -X PATCH "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "",
"nationalId": "",
"preferredLocale": "ar",
"address": {}
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
phoneمطلوب | string | — |
emailمطلوب | string (email) | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
preferredLocaleمطلوب | enum: "ar" | "en" | "he" | — |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"nationalId": "X123456789",
"preferredLocale": "ar",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/guardians/{id}/family-summary
The family account view: each child with their active groups and 30-day attendance rate, plus — for a caller holding `invoices.read` — per-child balances, the consolidated family balance and the open invoices this guardian is the payer on. Every money field is `null` without `invoices.read`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738/family-summary" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
guardianIdمطلوب | string (uuid) | — |
childrenمطلوب | array<FamilyChild> | — |
financialمطلوب | object | null | — |
{
"guardianId": "69993220-6999-7999-8993-699932206999",
"children": [
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"fullName": "Ada Lovelace",
"studentNumber": "S-000042",
"status": "lead",
"relationship": "father",
"isPrimary": true,
"isPayer": true,
"phone": "+15551234567",
"activeGroups": [
{
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"name": "Algebra I",
"status": "planned"
}
],
"attendanceRatePercent": 0,
"balances": [
{
"currency": "ILS",
"outstandingMinor": -9007199254740991,
"overdueCount": 0
}
]
}
],
"financial": {
"acrossChildren": [
{
"currency": "ILS",
"outstandingMinor": -9007199254740991,
"overdueCount": 0
}
],
"payableByGuardian": [
{
"currency": "ILS",
"count": 0,
"remainingMinor": -9007199254740991,
"overdueCount": 0,
"overdueRemainingMinor": -9007199254740991
}
],
"openInvoices": [
{
"invoiceId": "f3093e02-f309-7309-8093-f3093e02f309",
"number": "string",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"studentName": "string",
"status": "draft",
"dueDate": "2026-03-02",
"currency": "ILS",
"totalMinor": 12000,
"paidMinor": 12000,
"remainingMinor": -9007199254740991,
"isOverdue": true
}
]
}
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/guardians/{id}/portal-invite
The newest still-open portal invitation for this guardian and whether its email has left (`deliveryState`: queued, sent or failed, with a `deliveryReason`), or `invitation: null`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738/portal-invite" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
invitationمطلوب | object | null | — |
{
"invitation": {
"invitationId": "00637243-0063-7063-8637-006372430063",
"email": "ada.lovelace@example.com",
"username": "string",
"expiresAt": "2026-03-02T09:00:00.000Z",
"deliveryState": "queued",
"deliveryReason": "not_enrolled",
"deliveryUpdatedAt": "2026-03-02T09:00:00.000Z",
"response": "pending",
"declinedAt": "2026-03-02T09:00:00.000Z"
}
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/guardians/{id}/portal-invite
Invite this guardian to the portal: creates (or reuses) their login and links it to this record. Defaults to the guardian’s own email address.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
email | string | string (email) | — |
username | string | string | — |
مثال
{
"email": "ada.lovelace@example.com",
"username": "string"
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738/portal-invite" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"email": "ada.lovelace@example.com",
"username": "string"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
statusمطلوب | enum: "invited" | — |
emailمطلوب | string (email) | null | — |
usernameمطلوب | string | null | — |
invitationIdمطلوب | string (uuid) | — |
expiresAtمطلوب | string (date-time) | — |
deliveryStateمطلوب | enum: "queued" | "sent" | "failed" | — |
deliveryReasonمطلوب | enum: "not_enrolled" | "install_blocked" | "no_licence" | "no_key" | "unreachable" | "rate_limited" | "rejected" | "mail_failed" | "internal" | null | null | — |
{
"status": "invited",
"email": "ada.lovelace@example.com",
"username": "string",
"invitationId": "00637243-0063-7063-8637-006372430063",
"expiresAt": "2026-03-02T09:00:00.000Z",
"deliveryState": "queued",
"deliveryReason": "not_enrolled"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/guardians/{id}/portal-invite/resend
Send this guardian’s still-open portal invitation again. 409 when there is no pending invitation. On a cloud deployment the link is reissued (the previous one stops working); on a self-hosted install the invitation is re-sent through Institflow’s mailing service.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738/portal-invite/resend" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
statusمطلوب | enum: "invited" | — |
emailمطلوب | string (email) | null | — |
usernameمطلوب | string | null | — |
invitationIdمطلوب | string (uuid) | — |
expiresAtمطلوب | string (date-time) | — |
deliveryStateمطلوب | enum: "queued" | "sent" | "failed" | — |
deliveryReasonمطلوب | enum: "not_enrolled" | "install_blocked" | "no_licence" | "no_key" | "unreachable" | "rate_limited" | "rejected" | "mail_failed" | "internal" | null | null | — |
{
"status": "invited",
"email": "ada.lovelace@example.com",
"username": "string",
"invitationId": "00637243-0063-7063-8637-006372430063",
"expiresAt": "2026-03-02T09:00:00.000Z",
"deliveryState": "queued",
"deliveryReason": "not_enrolled"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/guardians/{id}/students
List every student linked to this guardian, with each link’s relationship metadata.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/guardians/37386ae0-3738-7738-8386-37386ae03738/students" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
{
"data": [
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"status": "lead",
"relationship": "father",
"isPrimary": true,
"isPayer": true
}
]
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/guardians/count
Total number of guardians matching `q` — the list header’s record count.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
q | query | string | 1–200 chars |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/guardians/count" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
totalمطلوب | integer | 0–9007199254740991 |
{
"total": 0
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/join-links
The institute's join links, newest first (cursor-paginated): label, target, uses, expiry and state (`active`, `paused`, `expired`, `used_up`, `revoked`). A public link carries its `joinUrl`; a private link never does after it was created.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/join-links" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
nextCursorمطلوب | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "public",
"label": "string",
"state": "active",
"status": "active",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"personName": "string",
"tokenHint": "string",
"expiresAt": "2026-03-02T09:00:00.000Z",
"maxUses": -9007199254740991,
"usedCount": -9007199254740991,
"createdAt": "2026-03-02T09:00:00.000Z",
"joinUrl": "string"
}
],
"nextCursor": null
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/join-links
Create a public join link for students: anyone who opens it with a verified Institflow account becomes a pending request in the leads inbox. It expires (1-90 days, default 7) and has a use cap (1-500, default 30). Self-hosted installs only.
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
labelمطلوب | string | 1–120 chars |
courseId | string (uuid) | — |
groupId | string (uuid) | — |
expiresInDays | integer | 1–90 · default: 7 |
maxUses | integer | 1–500 · default: 30 |
مثال
{
"label": "string",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"expiresInDays": 7,
"maxUses": 30
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/join-links" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"label": "string",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"expiresInDays": 7,
"maxUses": 30
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
kindمطلوب | enum: "public" | "private" | — |
labelمطلوب | string | null | — |
stateمطلوب | enum: "active" | "paused" | "expired" | "used_up" | "revoked" | — |
statusمطلوب | enum: "active" | "paused" | "revoked" | — |
courseIdمطلوب | string (uuid) | null | — |
courseNameمطلوب | string | null | — |
groupIdمطلوب | string (uuid) | null | — |
groupNameمطلوب | string | null | — |
studentIdمطلوب | string (uuid) | null | — |
guardianIdمطلوب | string (uuid) | null | — |
personNameمطلوب | string | null | — |
tokenHintمطلوب | string | — |
expiresAtمطلوب | string (date-time) | — |
maxUsesمطلوب | integer | -9007199254740991–9007199254740991 |
usedCountمطلوب | integer | -9007199254740991–9007199254740991 |
createdAtمطلوب | string (date-time) | — |
joinUrlمطلوب | string | null | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "public",
"label": "string",
"state": "active",
"status": "active",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"personName": "string",
"tokenHint": "string",
"expiresAt": "2026-03-02T09:00:00.000Z",
"maxUses": -9007199254740991,
"usedCount": -9007199254740991,
"createdAt": "2026-03-02T09:00:00.000Z",
"joinUrl": "string"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
PATCH /api/v1/join-links/{id}
Pause, resume or revoke a join link. A revoked link cannot be used again (409).
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
statusمطلوب | enum: "active" | "paused" | "revoked" | — |
مثال
{
"status": "active"
}مثال بأمر curl
curl -X PATCH "https://your-institute.example/api/v1/join-links/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"status": "active"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
kindمطلوب | enum: "public" | "private" | — |
labelمطلوب | string | null | — |
stateمطلوب | enum: "active" | "paused" | "expired" | "used_up" | "revoked" | — |
statusمطلوب | enum: "active" | "paused" | "revoked" | — |
courseIdمطلوب | string (uuid) | null | — |
courseNameمطلوب | string | null | — |
groupIdمطلوب | string (uuid) | null | — |
groupNameمطلوب | string | null | — |
studentIdمطلوب | string (uuid) | null | — |
guardianIdمطلوب | string (uuid) | null | — |
personNameمطلوب | string | null | — |
tokenHintمطلوب | string | — |
expiresAtمطلوب | string (date-time) | — |
maxUsesمطلوب | integer | -9007199254740991–9007199254740991 |
usedCountمطلوب | integer | -9007199254740991–9007199254740991 |
createdAtمطلوب | string (date-time) | — |
joinUrlمطلوب | string | null | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "public",
"label": "string",
"state": "active",
"status": "active",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"personName": "string",
"tokenHint": "string",
"expiresAt": "2026-03-02T09:00:00.000Z",
"maxUses": -9007199254740991,
"usedCount": -9007199254740991,
"createdAt": "2026-03-02T09:00:00.000Z",
"joinUrl": "string"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/join-links/private
Create a single-use private link (7 days) for one student or guardian record. The link is in this response only: it is never stored. Creating another for the same record revokes the earlier ones. Self-hosted installs only.
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
studentId | string (uuid) | — |
guardianId | string (uuid) | — |
sendEmail | boolean | default: false |
مثال
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"sendEmail": false
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/join-links/private" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"sendEmail": false
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
kindمطلوب | enum: "public" | "private" | — |
labelمطلوب | string | null | — |
stateمطلوب | enum: "active" | "paused" | "expired" | "used_up" | "revoked" | — |
statusمطلوب | enum: "active" | "paused" | "revoked" | — |
courseIdمطلوب | string (uuid) | null | — |
courseNameمطلوب | string | null | — |
groupIdمطلوب | string (uuid) | null | — |
groupNameمطلوب | string | null | — |
studentIdمطلوب | string (uuid) | null | — |
guardianIdمطلوب | string (uuid) | null | — |
personNameمطلوب | string | null | — |
tokenHintمطلوب | string | — |
expiresAtمطلوب | string (date-time) | — |
maxUsesمطلوب | integer | -9007199254740991–9007199254740991 |
usedCountمطلوب | integer | -9007199254740991–9007199254740991 |
createdAtمطلوب | string (date-time) | — |
joinUrlمطلوب | string | null | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "public",
"label": "string",
"state": "active",
"status": "active",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"personName": "string",
"tokenHint": "string",
"expiresAt": "2026-03-02T09:00:00.000Z",
"maxUses": -9007199254740991,
"usedCount": -9007199254740991,
"createdAt": "2026-03-02T09:00:00.000Z",
"joinUrl": "string"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/join/{token}
What a join link is for, or why it cannot be used. Anonymous. A malformed, unknown or revoked token answers `unavailable` with no reason. Self-hosted installs only.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
tokenمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/join/string" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
"value"تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/me/context
Everything the client needs on cold start: which identities the caller holds in this tenant, their children, their permissions, and the tenant/branch profile.
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/me/context" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
identitiesمطلوب | array<enum: "student" | "guardian" | "staff"> | — |
studentIdمطلوب | string (uuid) | null | — |
guardianIdمطلوب | string (uuid) | null | — |
staffIdمطلوب | string (uuid) | null | — |
staffKindمطلوب | enum: "teacher" | "secretary" | "manager" | "other" | null | null | — |
childrenمطلوب | array<object> | — |
permissionsمطلوب | array<string> | — |
tenantمطلوب | object | — |
branchمطلوب | object | null | — |
attendanceThresholdsمطلوب | object | — |
lastSeenAtمطلوب | string (date-time) | null | — |
{
"identities": [
"student"
],
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"guardianId": "69993220-6999-7999-8993-699932206999",
"staffId": "489fc644-489f-789f-89fc-489fc644489f",
"staffKind": "teacher",
"children": [
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"status": "lead",
"branchId": "390b8975-390b-790b-80b8-390b8975390b"
}
],
"permissions": [
"string"
],
"tenant": {
"id": "37386ae0-3738-7738-8386-37386ae03738",
"slug": "string",
"name": "Algebra I",
"locale": "ar",
"timezone": "string",
"currency": "USD"
},
"branch": {
"id": "37386ae0-3738-7738-8386-37386ae03738",
"name": "Algebra I"
},
"attendanceThresholds": {
"warnBelowRate": 0,
"criticalBelowRate": 0
},
"lastSeenAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/me/profile
The calling user’s own student profile (404 if they are not a student in this tenant).
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/me/profile" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | — |
studentNumberمطلوب | string | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
fullNameمطلوب | string | — |
dateOfBirthمطلوب | string (date) | null | — |
genderمطلوب | enum: "male" | "female" | "other" | null | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
phoneمطلوب | string | null | ≥1 chars |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
statusمطلوب | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
notesمطلوب | string | null | 0–5000 chars |
tagsمطلوب | array<string> | — |
enrolledAtمطلوب | string (date) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"studentNumber": "S-000042",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"dateOfBirth": "2026-03-02",
"gender": "male",
"nationalId": "X123456789",
"email": "ada.lovelace@example.com",
"phone": "+15551234567",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": "2026-03-02",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/me/students
The calling user’s linked children (404 if they are not a guardian in this tenant).
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/me/students" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
{
"data": [
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"status": "lead",
"relationship": "father",
"isPrimary": true,
"isPayer": true
}
]
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/me/students/{studentId}/summary
One linked child’s summary (30-day attendance rate, outstanding balance, active groups, next session, recent-absence count) — the guardian-scoped mirror of `GET /students/{id}/summary`. A student may also call this for their own id.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
studentIdمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/me/students/a4a70332-a4a7-74a7-8a70-a4a70332a4a7/summary" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
studentIdمطلوب | string (uuid) | — |
attendanceمطلوب | object | — |
balancesمطلوب | array<object> | — |
activeGroupsمطلوب | array<object> | — |
enrollmentsمطلوب | array<StudentEnrollmentSummary> | — |
recentSessionsمطلوب | array<StudentRecentSession> | — |
recentAbsencesمطلوب | object | — |
nextSessionمطلوب | unknown | null | — |
assignmentsمطلوب | object | — |
quizzesمطلوب | object | — |
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"attendance": {
"last30Days": {
"presentCount": 0,
"absentCount": 0,
"lateCount": 0,
"excusedCount": 0,
"ratePercent": 0
}
},
"balances": [
{
"currency": "ILS",
"outstandingMinor": -9007199254740991
}
],
"activeGroups": [
{
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"name": "Algebra I",
"status": "planned"
}
],
"enrollments": [
{
"enrollmentId": "c8bc7863-c8bc-78bc-8bc7-c8bc7863c8bc",
"status": "pending",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"groupStatus": "planned",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"room": "string",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"teacherName": "string",
"schedule": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string"
}
],
"nextSession": {
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z"
}
}
],
"recentSessions": [
{
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"status": "present",
"minutesLate": 0
}
],
"recentAbsences": {
"absent": 0,
"ofLast": 0
},
"nextSession": "value",
"assignments": {
"dueSoon": 0,
"late": 0
},
"quizzes": {
"dueSoon": 0,
"late": 0
}
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/staff
List staff (cursor-paginated), filterable by kind/branch/status.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
kind | query | enum: "teacher" | "secretary" | "manager" | "other" | — |
branchId | query | string (uuid) | — |
status | query | enum: "active" | "inactive" | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/staff" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
nextCursorمطلوب | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"membershipId": "e34c26d7-e34c-734c-84c2-e34c26d7e34c",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": -9007199254740991,
"status": "active",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/staff
Create a staff member (teacher/secretary/manager/other).
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
branchId | string (uuid) | — |
userId | string (uuid) | — |
kindمطلوب | enum: "teacher" | "secretary" | "manager" | "other" | — |
firstNameمطلوب | string | 1–100 chars |
lastNameمطلوب | string | 1–100 chars |
phone | string | string | — |
email | string | string (email) | — |
specialties | array<string> | default: [] |
hourlyRateMinor | integer | 0–9007199254740991 |
status | enum: "active" | "inactive" | default: "active" |
مثال
{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": 0,
"status": "active"
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/staff" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": 0,
"status": "active"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | null | — |
userIdمطلوب | string (uuid) | null | — |
membershipIdمطلوب | string (uuid) | null | — |
kindمطلوب | enum: "teacher" | "secretary" | "manager" | "other" | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
phoneمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
specialtiesمطلوب | array<string> | — |
hourlyRateMinorمطلوب | integer | null | -9007199254740991–9007199254740991 |
statusمطلوب | enum: "active" | "inactive" | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"membershipId": "e34c26d7-e34c-734c-84c2-e34c26d7e34c",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": -9007199254740991,
"status": "active",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
DELETE /api/v1/staff/{id}
Delete a staff member (hard delete — `staff` has no soft-delete column).
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X DELETE "https://your-institute.example/api/v1/staff/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
لا يحدّد ملف OpenAPI الخاص بالواجهة مخطّطًا مكتوبًا لهذه الاستجابة بعد — الاستجابة لا تزال JSON صالحًا، لكنها غير موثّقة هنا.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/staff/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | null | — |
userIdمطلوب | string (uuid) | null | — |
membershipIdمطلوب | string (uuid) | null | — |
kindمطلوب | enum: "teacher" | "secretary" | "manager" | "other" | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
phoneمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
specialtiesمطلوب | array<string> | — |
hourlyRateMinorمطلوب | integer | null | -9007199254740991–9007199254740991 |
statusمطلوب | enum: "active" | "inactive" | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"membershipId": "e34c26d7-e34c-734c-84c2-e34c26d7e34c",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": -9007199254740991,
"status": "active",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
branchId | string (uuid) | — |
userId | string (uuid) | — |
kind | enum: "teacher" | "secretary" | "manager" | "other" | — |
firstName | string | 1–100 chars |
lastName | string | 1–100 chars |
phone | string | string | — |
email | string | string (email) | — |
specialties | array<string> | default: [] |
hourlyRateMinor | integer | 0–9007199254740991 |
status | enum: "active" | "inactive" | default: "active" |
مثال
{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": 0,
"status": "active"
}مثال بأمر curl
curl -X PATCH "https://your-institute.example/api/v1/staff/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": 0,
"status": "active"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | null | — |
userIdمطلوب | string (uuid) | null | — |
membershipIdمطلوب | string (uuid) | null | — |
kindمطلوب | enum: "teacher" | "secretary" | "manager" | "other" | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
phoneمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
specialtiesمطلوب | array<string> | — |
hourlyRateMinorمطلوب | integer | null | -9007199254740991–9007199254740991 |
statusمطلوب | enum: "active" | "inactive" | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"membershipId": "e34c26d7-e34c-734c-84c2-e34c26d7e34c",
"kind": "teacher",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"specialties": [
"string"
],
"hourlyRateMinor": -9007199254740991,
"status": "active",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/staff/{id}/summary
The groups this staff member teaches (with their weekly rules and active-student counts), their sessions for the coming week, how many students that adds up to, and how many past sessions they have not marked. `roles` carries the linked login’s role assignments for a caller holding `members.manage`, and is `null` otherwise. Requires `groups.read` as well as `staff.read`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/staff/37386ae0-3738-7738-8386-37386ae03738/summary" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
staffIdمطلوب | string (uuid) | — |
groupsمطلوب | array<TaughtGroup> | — |
upcomingSessionsمطلوب | array<StaffSession> | — |
studentCountمطلوب | integer | 0–9007199254740991 |
unmarkedSessionCountمطلوب | integer | 0–9007199254740991 |
membershipIdمطلوب | string (uuid) | null | — |
rolesمطلوب | array<object> | null | — |
{
"staffId": "489fc644-489f-789f-89fc-489fc644489f",
"groups": [
{
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"name": "Algebra I",
"status": "planned",
"room": "string",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"studentCount": 0,
"schedule": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string"
}
]
}
],
"upcomingSessions": [
{
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"courseName": "string",
"room": "string",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z",
"status": "scheduled",
"isSubstitute": true
}
],
"studentCount": 0,
"unmarkedSessionCount": 0,
"membershipId": "e34c26d7-e34c-734c-84c2-e34c26d7e34c",
"roles": [
{
"roleId": "5b007a17-5b00-7b00-8007-5b007a175b00",
"roleName": "string",
"roleKey": "string",
"branchId": "390b8975-390b-790b-80b8-390b8975390b"
}
]
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/staff/count
Total number of staff matching the same filters as `GET /staff` (cursor/limit ignored) — the list header’s record count.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
kind | query | enum: "teacher" | "secretary" | "manager" | "other" | — |
branchId | query | string (uuid) | — |
status | query | enum: "active" | "inactive" | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/staff/count" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
totalمطلوب | integer | 0–9007199254740991 |
{
"total": 0
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students
List students (cursor-paginated). `q` searches full name/student number/phone. A teacher without `students.write` only ever sees students in their own groups.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
q | query | string | 1–200 chars |
status | query | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
branchId | query | string (uuid) | — |
groupId | query | string (uuid) | — |
tag | query | string | 1–50 chars |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
nextCursorمطلوب | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"studentNumber": "S-000042",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"dateOfBirth": "2026-03-02",
"gender": "male",
"nationalId": "X123456789",
"email": "ada.lovelace@example.com",
"phone": "+15551234567",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": "2026-03-02",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}
],
"nextCursor": null
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/students
Create a student. `studentNumber` auto-allocates ("S-000001"-style, per tenant) when omitted.
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
branchIdمطلوب | string (uuid) | — |
userId | string (uuid) | — |
studentNumber | enum: "" | string | — |
firstNameمطلوب | string | 1–100 chars |
lastNameمطلوب | string | 1–100 chars |
dateOfBirth | enum: "" | string (date) | — |
gender | enum: "male" | "female" | "other" | — |
nationalId | enum: "" | string | — |
email | enum: "" | string (email) | — |
phone | enum: "" | string | — |
address | object | — |
status | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | default: "lead" |
notes | string | 0–2000 chars |
tags | array<string> | default: [] |
enrolledAt | enum: "" | string (date) | — |
مثال
{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"studentNumber": "",
"firstName": "Ada",
"lastName": "Lovelace",
"dateOfBirth": "",
"gender": "male",
"nationalId": "",
"email": "",
"phone": "",
"address": {},
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": ""
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/students" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"studentNumber": "",
"firstName": "Ada",
"lastName": "Lovelace",
"dateOfBirth": "",
"gender": "male",
"nationalId": "",
"email": "",
"phone": "",
"address": {},
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": ""
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | — |
studentNumberمطلوب | string | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
fullNameمطلوب | string | — |
dateOfBirthمطلوب | string (date) | null | — |
genderمطلوب | enum: "male" | "female" | "other" | null | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
phoneمطلوب | string | null | ≥1 chars |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
statusمطلوب | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
notesمطلوب | string | null | 0–5000 chars |
tagsمطلوب | array<string> | — |
enrolledAtمطلوب | string (date) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"studentNumber": "S-000042",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"dateOfBirth": "2026-03-02",
"gender": "male",
"nationalId": "X123456789",
"email": "ada.lovelace@example.com",
"phone": "+15551234567",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": "2026-03-02",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
DELETE /api/v1/students/{id}
Soft-delete a student (excluded from reads/lists by default afterwards).
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X DELETE "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
لا يحدّد ملف OpenAPI الخاص بالواجهة مخطّطًا مكتوبًا لهذه الاستجابة بعد — الاستجابة لا تزال JSON صالحًا، لكنها غير موثّقة هنا.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | — |
studentNumberمطلوب | string | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
fullNameمطلوب | string | — |
dateOfBirthمطلوب | string (date) | null | — |
genderمطلوب | enum: "male" | "female" | "other" | null | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
phoneمطلوب | string | null | ≥1 chars |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
statusمطلوب | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
notesمطلوب | string | null | 0–5000 chars |
tagsمطلوب | array<string> | — |
enrolledAtمطلوب | string (date) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"studentNumber": "S-000042",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"dateOfBirth": "2026-03-02",
"gender": "male",
"nationalId": "X123456789",
"email": "ada.lovelace@example.com",
"phone": "+15551234567",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": "2026-03-02",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
PATCH /api/v1/students/{id}
Update a student. A `status` change is validated against the allowed transition graph, audited, and emits `student.status_changed`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
branchId | string (uuid) | — |
userId | string (uuid) | — |
studentNumber | enum: "" | string | — |
firstName | string | 1–100 chars |
lastName | string | 1–100 chars |
dateOfBirth | enum: "" | string (date) | — |
gender | enum: "male" | "female" | "other" | — |
nationalId | enum: "" | string | — |
email | enum: "" | string (email) | — |
phone | enum: "" | string | — |
address | object | — |
status | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | default: "lead" |
notes | string | 0–2000 chars |
tags | array<string> | default: [] |
enrolledAt | enum: "" | string (date) | — |
مثال
{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"studentNumber": "",
"firstName": "Ada",
"lastName": "Lovelace",
"dateOfBirth": "",
"gender": "male",
"nationalId": "",
"email": "",
"phone": "",
"address": {},
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": ""
}مثال بأمر curl
curl -X PATCH "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"studentNumber": "",
"firstName": "Ada",
"lastName": "Lovelace",
"dateOfBirth": "",
"gender": "male",
"nationalId": "",
"email": "",
"phone": "",
"address": {},
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": ""
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | — |
studentNumberمطلوب | string | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
fullNameمطلوب | string | — |
dateOfBirthمطلوب | string (date) | null | — |
genderمطلوب | enum: "male" | "female" | "other" | null | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
phoneمطلوب | string | null | ≥1 chars |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
statusمطلوب | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
notesمطلوب | string | null | 0–5000 chars |
tagsمطلوب | array<string> | — |
enrolledAtمطلوب | string (date) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"studentNumber": "S-000042",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"dateOfBirth": "2026-03-02",
"gender": "male",
"nationalId": "X123456789",
"email": "ada.lovelace@example.com",
"phone": "+15551234567",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": "2026-03-02",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students/{id}/finance
Open invoices (remaining/overdue) and the recurring obligation behind each active enrollment — the student profile’s Financial card. Requires `invoices.read` as well as `students.read`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/finance" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
studentIdمطلوب | string (uuid) | — |
obligationsمطلوب | array<StudentObligation> | — |
monthlyTotalsمطلوب | array<object> | — |
openInvoicesمطلوب | array<OpenInvoiceSummary> | — |
openInvoiceTotalsمطلوب | array<OpenInvoiceTotals> | — |
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"obligations": [
{
"enrollmentId": "c8bc7863-c8bc-78bc-8bc7-c8bc7863c8bc",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"amountMinor": 12000,
"currency": "ILS",
"source": "fee_schedule",
"recurrence": "once",
"feeScheduleId": "3cfbbfe7-3cfb-7cfb-8fbb-3cfbbfe73cfb",
"feeScheduleName": "string",
"nextDueOn": "2026-03-02"
}
],
"monthlyTotals": [
{
"currency": "ILS",
"amountMinor": 12000
}
],
"openInvoices": [
{
"invoiceId": "f3093e02-f309-7309-8093-f3093e02f309",
"number": "string",
"status": "draft",
"issueDate": "2026-03-02",
"dueDate": "2026-03-02",
"currency": "ILS",
"totalMinor": 12000,
"paidMinor": 12000,
"remainingMinor": -9007199254740991,
"isOverdue": true
}
],
"openInvoiceTotals": [
{
"currency": "ILS",
"count": 0,
"remainingMinor": -9007199254740991,
"overdueCount": 0,
"overdueRemainingMinor": -9007199254740991
}
]
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students/{id}/guardians
List every guardian linked to this student, with each link’s relationship metadata.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/guardians" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
{
"data": [
{
"guardianId": "69993220-6999-7999-8993-699932206999",
"firstName": "Ada",
"lastName": "Lovelace",
"phone": "+15551234567",
"email": "ada.lovelace@example.com",
"relationship": "father",
"isPrimary": true,
"isPayer": true
}
]
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/students/{id}/guardians
Link an existing guardian to a student (relationship, isPrimary, isPayer). Exactly one guardian may be primary per student.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
guardianIdمطلوب | string (uuid) | — |
relationshipمطلوب | enum: "father" | "mother" | "sibling" | "other" | — |
isPrimary | boolean | default: false |
isPayer | boolean | default: false |
مثال
{
"guardianId": "69993220-6999-7999-8993-699932206999",
"relationship": "father",
"isPrimary": false,
"isPayer": false
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/guardians" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"guardianId": "69993220-6999-7999-8993-699932206999",
"relationship": "father",
"isPrimary": false,
"isPayer": false
}'الاستجابات
لا يحدّد ملف OpenAPI الخاص بالواجهة مخطّطًا مكتوبًا لهذه الاستجابة بعد — الاستجابة لا تزال JSON صالحًا، لكنها غير موثّقة هنا.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
DELETE /api/v1/students/{id}/guardians/{guardianId}
Unlink a guardian from a student.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
guardianIdمطلوب | path | string | — |
مثال بأمر curl
curl -X DELETE "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/guardians/69993220-6999-7999-8993-699932206999" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
لا يحدّد ملف OpenAPI الخاص بالواجهة مخطّطًا مكتوبًا لهذه الاستجابة بعد — الاستجابة لا تزال JSON صالحًا، لكنها غير موثّقة هنا.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students/{id}/portal-invite
The newest still-open portal invitation for this student and whether its email has left (`deliveryState`: queued, sent or failed, with a `deliveryReason`), or `invitation: null`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/portal-invite" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
invitationمطلوب | object | null | — |
{
"invitation": {
"invitationId": "00637243-0063-7063-8637-006372430063",
"email": "ada.lovelace@example.com",
"username": "string",
"expiresAt": "2026-03-02T09:00:00.000Z",
"deliveryState": "queued",
"deliveryReason": "not_enrolled",
"deliveryUpdatedAt": "2026-03-02T09:00:00.000Z",
"response": "pending",
"declinedAt": "2026-03-02T09:00:00.000Z"
}
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/students/{id}/portal-invite
Invite this student to the portal: creates (or reuses) their login and links it to this record. Defaults to the student’s own email address.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
email | string | string (email) | — |
username | string | string | — |
مثال
{
"email": "ada.lovelace@example.com",
"username": "string"
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/portal-invite" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"email": "ada.lovelace@example.com",
"username": "string"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
statusمطلوب | enum: "invited" | — |
emailمطلوب | string (email) | null | — |
usernameمطلوب | string | null | — |
invitationIdمطلوب | string (uuid) | — |
expiresAtمطلوب | string (date-time) | — |
deliveryStateمطلوب | enum: "queued" | "sent" | "failed" | — |
deliveryReasonمطلوب | enum: "not_enrolled" | "install_blocked" | "no_licence" | "no_key" | "unreachable" | "rate_limited" | "rejected" | "mail_failed" | "internal" | null | null | — |
{
"status": "invited",
"email": "ada.lovelace@example.com",
"username": "string",
"invitationId": "00637243-0063-7063-8637-006372430063",
"expiresAt": "2026-03-02T09:00:00.000Z",
"deliveryState": "queued",
"deliveryReason": "not_enrolled"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/students/{id}/portal-invite/resend
Send this student’s still-open portal invitation again. 409 when there is no pending invitation. On a cloud deployment the link is reissued (the previous one stops working); on a self-hosted install the invitation is re-sent through Institflow’s mailing service.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/portal-invite/resend" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
statusمطلوب | enum: "invited" | — |
emailمطلوب | string (email) | null | — |
usernameمطلوب | string | null | — |
invitationIdمطلوب | string (uuid) | — |
expiresAtمطلوب | string (date-time) | — |
deliveryStateمطلوب | enum: "queued" | "sent" | "failed" | — |
deliveryReasonمطلوب | enum: "not_enrolled" | "install_blocked" | "no_licence" | "no_key" | "unreachable" | "rate_limited" | "rejected" | "mail_failed" | "internal" | null | null | — |
{
"status": "invited",
"email": "ada.lovelace@example.com",
"username": "string",
"invitationId": "00637243-0063-7063-8637-006372430063",
"expiresAt": "2026-03-02T09:00:00.000Z",
"deliveryState": "queued",
"deliveryReason": "not_enrolled"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
PATCH /api/v1/students/{id}/status
Change only a student’s status, enforcing the allowed transition graph.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
statusمطلوب | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
مثال
{
"status": "lead"
}مثال بأمر curl
curl -X PATCH "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/status" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"status": "lead"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
branchIdمطلوب | string (uuid) | — |
studentNumberمطلوب | string | — |
firstNameمطلوب | string | — |
lastNameمطلوب | string | — |
fullNameمطلوب | string | — |
dateOfBirthمطلوب | string (date) | null | — |
genderمطلوب | enum: "male" | "female" | "other" | null | null | — |
nationalIdمطلوب | string | null | ≥1 chars |
emailمطلوب | string (email) | null | — |
phoneمطلوب | string | null | ≥1 chars |
addressمطلوب | object | null | — |
userIdمطلوب | string (uuid) | null | — |
statusمطلوب | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
notesمطلوب | string | null | 0–5000 chars |
tagsمطلوب | array<string> | — |
enrolledAtمطلوب | string (date) | null | — |
createdAtمطلوب | string (date-time) | — |
updatedAtمطلوب | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"branchId": "390b8975-390b-790b-80b8-390b8975390b",
"studentNumber": "S-000042",
"firstName": "Ada",
"lastName": "Lovelace",
"fullName": "Ada Lovelace",
"dateOfBirth": "2026-03-02",
"gender": "male",
"nationalId": "X123456789",
"email": "ada.lovelace@example.com",
"phone": "+15551234567",
"address": {},
"userId": "11f967df-11f9-71f9-8f96-11f967df11f9",
"status": "lead",
"notes": "Prefers afternoon sessions.",
"tags": [
"string"
],
"enrolledAt": "2026-03-02",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "2026-03-02T09:00:00.000Z"
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students/{id}/summary
Attendance rate (last 30 days), outstanding balance, active groups, next session, and recent-absence count for one student.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/37386ae0-3738-7738-8386-37386ae03738/summary" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
studentIdمطلوب | string (uuid) | — |
attendanceمطلوب | object | — |
balancesمطلوب | array<object> | — |
activeGroupsمطلوب | array<object> | — |
enrollmentsمطلوب | array<StudentEnrollmentSummary> | — |
recentSessionsمطلوب | array<StudentRecentSession> | — |
recentAbsencesمطلوب | object | — |
nextSessionمطلوب | unknown | null | — |
assignmentsمطلوب | object | — |
quizzesمطلوب | object | — |
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"attendance": {
"last30Days": {
"presentCount": 0,
"absentCount": 0,
"lateCount": 0,
"excusedCount": 0,
"ratePercent": 0
}
},
"balances": [
{
"currency": "ILS",
"outstandingMinor": -9007199254740991
}
],
"activeGroups": [
{
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"name": "Algebra I",
"status": "planned"
}
],
"enrollments": [
{
"enrollmentId": "c8bc7863-c8bc-78bc-8bc7-c8bc7863c8bc",
"status": "pending",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"groupStatus": "planned",
"courseId": "d0e4743a-d0e4-70e4-8e47-d0e4743ad0e4",
"courseName": "string",
"room": "string",
"teacherStaffId": "22f9eb14-22f9-72f9-8f9e-22f9eb1422f9",
"teacherName": "string",
"schedule": [
{
"weekday": 0,
"startTime": "string",
"endTime": "string"
}
],
"nextSession": {
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"scheduledEnd": "2026-03-02T09:00:00.000Z"
}
}
],
"recentSessions": [
{
"sessionId": "736a51cd-736a-736a-86a5-736a51cd736a",
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"groupName": "string",
"scheduledStart": "2026-03-02T09:00:00.000Z",
"status": "present",
"minutesLate": 0
}
],
"recentAbsences": {
"absent": 0,
"ofLast": 0
},
"nextSession": "value",
"assignments": {
"dueSoon": 0,
"late": 0
},
"quizzes": {
"dueSoon": 0,
"late": 0
}
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students/count
Total number of students matching the same filters as `GET /students` (cursor/limit ignored) — the list header’s record count.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
q | query | string | 1–200 chars |
status | query | enum: "lead" | "active" | "inactive" | "graduated" | "withdrawn" | — |
branchId | query | string (uuid) | — |
groupId | query | string (uuid) | — |
tag | query | string | 1–50 chars |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/count" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
totalمطلوب | integer | 0–9007199254740991 |
{
"total": 0
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
GET /api/v1/students/roster-stats
Active groups, 30-day attendance rate and (with `invoices.read`) outstanding balance for up to 100 students in one request — the students list’s operational columns. `balances` is `null` when the caller lacks `invoices.read`.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idsمطلوب | query | string | ≥1 chars |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/students/roster-stats?ids=string" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<StudentRosterStatsEntry> | — |
{
"data": [
{
"studentId": "a4a70332-a4a7-74a7-8a70-a4a70332a4a7",
"activeGroups": [
{
"groupId": "6dc7fce6-6dc7-7dc7-8c7f-6dc7fce66dc7",
"name": "Algebra I",
"status": "planned"
}
],
"attendanceRatePercent": 0,
"balances": [
{
"currency": "ILS",
"outstandingMinor": -9007199254740991,
"overdueCount": 0
}
]
}
]
}تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.