support
Support
Report a problem or suggest a feature to the vendor from a self-hosted install, and see the vendor's status and replies (self-hosted installs only).
5 نقاط النهاية
GET /api/v1/support/submissions
What this institute sent the vendor, newest first (cursor-paginated): the text, whether it has left the install, what the vendor did with it and the vendor’s replies. Self-hosted only.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/support/submissions" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
nextCursorمطلوب | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "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/support/submissions
Report a problem or suggest a feature to the vendor. Saved here first and sent in the background, retried if the vendor cannot be reached. Do not include personal data. Self-hosted only.
محتوى الطلب
| الاسم | النوع | القيود |
|---|---|---|
kindمطلوب | enum: "problem" | "feature" | — |
categoryمطلوب | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titleمطلوب | string | 1–120 chars |
textمطلوب | string | 1–4000 chars |
مثال
{
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"text": "string"
}مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/support/submissions" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"text": "string"
}'الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
kindمطلوب | enum: "problem" | "feature" | — |
categoryمطلوب | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titleمطلوب | string | — |
bodyمطلوب | string | — |
deliveryمطلوب | enum: "queued" | "sent" | "failed" | — |
lastErrorمطلوب | string | null | — |
remoteStatusمطلوب | enum: "new" | "acknowledged" | "in_progress" | "resolved" | "declined" | "duplicate" | null | null | — |
createdAtمطلوب | string (date-time) | — |
sentAtمطلوب | string (date-time) | null | — |
syncedAtمطلوب | string (date-time) | null | — |
repliesمطلوب | array<object> | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "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/support/submissions/{id}
One submission with the vendor’s replies. Self-hosted only.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X GET "https://your-institute.example/api/v1/support/submissions/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
kindمطلوب | enum: "problem" | "feature" | — |
categoryمطلوب | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titleمطلوب | string | — |
bodyمطلوب | string | — |
deliveryمطلوب | enum: "queued" | "sent" | "failed" | — |
lastErrorمطلوب | string | null | — |
remoteStatusمطلوب | enum: "new" | "acknowledged" | "in_progress" | "resolved" | "declined" | "duplicate" | null | null | — |
createdAtمطلوب | string (date-time) | — |
sentAtمطلوب | string (date-time) | null | — |
syncedAtمطلوب | string (date-time) | null | — |
repliesمطلوب | array<object> | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "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/support/submissions/{id}/retry
Send a submission that failed (or is stuck) again. A submission already sent is final. Self-hosted only.
معطيات المسار والاستعلام
| الاسم | الموضع | النوع | القيود |
|---|---|---|---|
idمطلوب | path | string | — |
مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/support/submissions/37386ae0-3738-7738-8386-37386ae03738/retry" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
idمطلوب | string (uuid) | — |
kindمطلوب | enum: "problem" | "feature" | — |
categoryمطلوب | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titleمطلوب | string | — |
bodyمطلوب | string | — |
deliveryمطلوب | enum: "queued" | "sent" | "failed" | — |
lastErrorمطلوب | string | null | — |
remoteStatusمطلوب | enum: "new" | "acknowledged" | "in_progress" | "resolved" | "declined" | "duplicate" | null | null | — |
createdAtمطلوب | string (date-time) | — |
sentAtمطلوب | string (date-time) | null | — |
syncedAtمطلوب | string (date-time) | null | — |
repliesمطلوب | array<object> | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "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? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
POST /api/v1/support/submissions/refresh
Ask the vendor now what became of these submissions (a pass of the background mirror). Self-hosted only.
مثال بأمر curl
curl -X POST "https://your-institute.example/api/v1/support/submissions/refresh" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"الاستجابات
| الاسم | النوع | القيود |
|---|---|---|
dataمطلوب | array<object> | — |
nextCursorمطلوب | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "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? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.
تُعيد مغلّف الخطأ المشترك `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. جميع الرموز مذكورة في دليل الاصطلاحات.