همهٔ APIها
API محصولP0

API محصول (احراز هویت و کلاس)

endpointهای REST برای اپ وب و موبایل پلتفرم کلاس آنلاین رسا لاین. همهٔ مسیرها زیر پیشوند /api هستند. پاسخ خطا: code، errorFa، requestId.

Base URL: /api

احراز هویت

جریان ورود: send-otpverify-otp → ذخیرهٔ accessToken در درخواست‌های بعدی.

همهٔ endpointهای زیر (به‌جز OTP) نیاز به هدر دارند:
Authorization: Bearer <accessToken>
Content-Type: application/json
POST/auth/send-otp

ارسال کد OTP

کد یک‌بارمصرف برای ورود با موبایل یا ایمیل ارسال می‌کند. عمومی — بدون توکن.

تابع SDK: POST /auth/send-otp

پارامترهای درخواست (Body)

فیلدنوعالزامیتوضیح
identifierstringبلهموبایل 09… یا ایمیل

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
sentbooleanبلهtrue در صورت موفقیت
expiresInSecondsnumberبلهاعتبار کد

خطاهای محتمل

codeHTTPزمان
NOT_FOUND404کاربر با این شناسه نیست
RATE_LIMITED429تعداد درخواست OTP زیاد

نمونه Request

{ "identifier": "admin@platform.ir" }

نمونه Response

{ "sent": true, "expiresInSeconds": 300 }

پیاده‌سازی

POST /api/auth/send-otp
Content-Type: application/json

{ "identifier": "admin@platform.ir" }

URL کامل: POST /api/auth/send-otp

POST/auth/verify-otp

تأیید OTP و دریافت توکن

کد OTP را تأیید می‌کند و accessToken + پروفایل کاربر برمی‌گرداند.

تابع SDK: POST /auth/verify-otp

پارامترهای درخواست (Body)

فیلدنوعالزامیتوضیح
identifierstringبلههمان شناسهٔ send-otp
otpstringبلهکد ۶ رقمی

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
accessTokenstringبلهJWT برای درخواست‌های بعدی
userobjectبلهپروفایل و نقش‌ها

خطاهای محتمل

codeHTTPزمان
OTP_INVALID400کد نامعتبر یا منقضی
RATE_LIMITED429تلاش زیاد

نمونه Request

{ "identifier": "admin@platform.ir", "otp": "123456" }

نمونه Response

{ "accessToken": "eyJ…", "user": { "id": "uuid", "role": "school_admin" } }

پیاده‌سازی

POST /api/auth/verify-otp
Content-Type: application/json

{ "identifier": "admin@platform.ir", "otp": "123456" }

URL کامل: POST /api/auth/verify-otp

GET/auth/me

پروفایل جاری

اطلاعات کاربر واردشده و مدرسهٔ فعال.

تابع SDK: GET /auth/me

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
userobjectبلهid, email, role, schoolId, permissions

خطاهای محتمل

codeHTTPزمان
UNAUTHORIZED401توکن نامعتبر

نمونه Response

{ "user": { "id": "uuid", "displayName": "مدیر", "role": "school_admin" } }

پیاده‌سازی

GET /api/auth/me
Authorization: Bearer <accessToken>

URL کامل: GET /api/auth/me

GET/classes

لیست کلاس‌ها

کلاس‌های قابل‌دسترس کاربر (فیلتر بر اساس نقش و مدرسه).

تابع SDK: GET /classes

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
classesarrayبلهآرایهٔ کلاس‌ها

خطاهای محتمل

codeHTTPزمان
FORBIDDEN403بدون مجوز

نمونه Response

{ "classes": [{ "id": "uuid", "name": "ریاضی", "status": "published" }] }

پیاده‌سازی

GET /api/classes
Authorization: Bearer <accessToken>

URL کامل: GET /api/classes

POST/classes

ساخت کلاس

کلاس جدید در مدرسه — نیاز به نقش معلم یا مدیر.

تابع SDK: POST /classes

پارامترهای درخواست (Body)

فیلدنوعالزامیتوضیح
namestringبلهنام کلاس
schoolIduuidخیربرای ادمین پلتفرم

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
classobjectبلهکلاس ساخته‌شده

خطاهای محتمل

codeHTTPزمان
FORBIDDEN403بدون مجوز
MAX_CLASSES409سقف پلن

نمونه Request

{ "name": "فیزیک پایه یازدهم" }

نمونه Response

{ "class": { "id": "uuid", "name": "فیزیک پایه یازدهم" } }

پیاده‌سازی

POST /api/classes
Authorization: Bearer <accessToken>
Content-Type: application/json

{ "name": "فیزیک پایه یازدهم" }

URL کامل: POST /api/classes

GET/events

لیست رویدادها / وبینارها

رویدادهای زنده و برنامه‌ریزی‌شدهٔ مدرسه.

تابع SDK: GET /events

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
eventsarrayبلهرویدادها

خطاهای محتمل

codeHTTPزمان
FORBIDDEN403بدون مجوز

نمونه Response

{ "events": [{ "id": "uuid", "title": "وبینار", "status": "scheduled" }] }

پیاده‌سازی

GET /api/events
Authorization: Bearer <accessToken>

URL کامل: GET /api/events

POST/events

ساخت رویداد

وبینار یا جلسهٔ زنده جدید.

تابع SDK: POST /events

پارامترهای درخواست (Body)

فیلدنوعالزامیتوضیح
titlestringبلهعنوان
startsAtISO8601بلهشروع
eventTypestringخیرwebinar | session

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
eventobjectبلهرویداد

خطاهای محتمل

codeHTTPزمان
MAX_EVENTS409سقف پلن

نمونه Request

{ "title": "وبینار معرفی", "startsAt": "2026-06-01T10:00:00Z", "eventType": "webinar" }

نمونه Response

{ "event": { "id": "uuid", "title": "وبینار معرفی" } }

پیاده‌سازی

POST /api/events
Authorization: Bearer <accessToken>
Content-Type: application/json

{ "title": "وبینار معرفی", "startsAt": "2026-06-01T10:00:00Z", "eventType": "webinar" }

URL کامل: POST /api/events

GET/notifications

اعلان‌ها

اعلان‌های درون‌برنامه‌ای کاربر با صفحه‌بندی.

تابع SDK: GET /notifications

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
itemsarrayبلهاعلان‌ها
nextCursorstringخیرصفحهٔ بعد

خطاهای محتمل

codeHTTPزمان
UNAUTHORIZED401بدون توکن

نمونه Response

{ "items": [{ "id": "uuid", "title": "کلاس جدید", "read": false }], "nextCursor": null }

پیاده‌سازی

GET /api/notifications
Authorization: Bearer <accessToken>

URL کامل: GET /api/notifications

GET/notifications/unread-count

تعداد خوانده‌نشده

شمارندهٔ اعلان‌های خوانده‌نشده برای badge.

تابع SDK: GET /notifications/unread-count

فیلدهای پاسخ

فیلدنوعالزامیتوضیح
countnumberبلهتعداد

نمونه Response

{ "count": 3 }

پیاده‌سازی

GET /api/notifications/unread-count
Authorization: Bearer <accessToken>

URL کامل: GET /api/notifications/unread-count