رفتن به متن مستندات
پلانکمستندات
مرجع API/API نشست و داشبورد مشتری
نیازمند پیکربندی

API نشست و داشبورد مشتری

روش‌ها، بدنه‌ها و محدودیت‌های مسیرهای خصوصی حساب.

توسعه‌دهندگانبازبینی: ۲ مهر ۱۴۰۵
در این صفحهنشست و خطاهای مشترکورود و ثبت‌نامبازیابی رمزخواندن و ویرایش داشبوردنتیجهٔ ثبت بانکی و تعارض‌هادعوت و شارژAPI خصوصی پروندهٔ دارایی

نشست و خطاهای مشترک

مسیرهای خصوصی از کوکی HttpOnly نشست مشتری استفاده می‌کنند؛ شناسهٔ کاربر ارسالی در بدنه جای نشست معتبر را نمی‌گیرد. مسیرهای authBody به Origin هم‌مبدأ، Content-Type شامل application/json، تنظیم بودن سرویس و بدنهٔ شیء حداکثر ۱۶٬۰۰۰ بایت نیاز دارند.

خطای اعتبارسنجی معمولاً 400، نیاز به ورود 401، Origin نامعتبر 403، نوع محتوا 415، محدودیت سرویس ورود 429 و نبود اتصال 503 است. خطاهای AuthError با بدنهٔ {error:string} برمی‌گردند. بعضی GETهای خصوصی نیز Sec-Fetch-Site:cross-site را رد می‌کنند.

ورود و ثبت‌نام

روش و مسیربدنه یا رفتارپاسخ موفق
GET /api/auth/sessionبدون بدنه؛ بررسی و در صورت امکان تازه‌سازی نشست{user} یا {user:null}؛ نبود نشست معتبر لزوماً 401 نیست.
POST /api/auth/loginidentifier یا email، password، remember اختیاری{user,notice?} و کوکی نشست
POST /api/auth/registerfirstName، lastName، phone، email، password؛ username و referralCode اختیاری{phone,step:verify}؛ ثبت‌نام باید به تأیید موبایل برسد.
POST /api/auth/otpaction=send|resend|verify، phone؛ verify با code؛ intent و remember اختیاریارسال: {phone,step:verify}؛ تأیید: نشست یا {step:reset} برای بازیابی
POST /api/auth/emailemail؛ نیازمند نشست{message} برای درخواست تأیید ایمیل
POST /api/auth/logoutOrigin هم‌مبدأ؛ پاک‌کردن نشست حتی در اختلال سرویس بالادست{ok:true}

بازیابی رمز

POST /api/auth/recovery با action=request و email، بازیابی PKCE را آغاز می‌کند؛ پاسخ عمومی وجود حساب را افشا نمی‌کند. بازگشت GET /auth/recovery?code=… پس از بررسی verifier با HTTP303 به صفحهٔ تنظیم رمز یا خطای بازیابی می‌رود.

action=reset و password به کوکی بازیابی معتبر نیاز دارد. رمز جدید ۱۲ تا ۲۵۶ نویسه است؛ پس از موفقیت، دسترسی بازیابی و نشست محلی پاک می‌شوند. نبود یا انقضای دسترسی بازیابی 401 می‌دهد. مقادیر کوکی و توکن در مثال مستندات قرار نمی‌گیرند.

خواندن و ویرایش داشبورد

GET /api/dashboard وضعیت خصوصی حساب، preferences، banks، notifications، unread_count، alerts، referral_codes، referral_stats، api_keys، wallets، positions، transactions، orders، credits، staking و sessions را می‌خواند. مدل کامل در lib/dashboard.ts تعریف شده است.

POST /api/dashboard بدنهٔ {action,payload} می‌گیرد. پاسخ معمول ویرایش {ok:true} است؛ حساب بانکی قرارداد نتیجهٔ جداگانه دارد. عملیات مالی مانند تغییر موجودی، خرید، برداشت یا ایجاد اعتبار جزو actionهای مجاز نیستند.

actionpayload مجاز
profilefirst_name، last_name، birth_date اختیاری و national_id در صورت مجازبودن
preferencesپرچم‌های نمایش و اعلان/تأیید، theme=dark|light، locale=fa|en|ar، currency=TMN|USDT
alert_addproject_id از نوع UUID، direction=above|below، target_price_rial رشتهٔ صحیح مثبت ۱ تا ۳۰ رقم
bank_remove / bank_primary / alert_remove / api_revokeid از نوع UUID
notification_readid اختیاری؛ نبود آن برای ثبت خوانده‌شدن مجموعه
bank_addiban، account_title و card_number اختیاری، request_key از نوع UUID و consent=true

نتیجهٔ ثبت بانکی و تعارض‌ها

موفقیت bank_add به‌صورت {ok:true,id} است. رد قابل تشخیص می‌تواند {ok:false,code,error} باشد: bank_not_matched با HTTP422، bank_registration_unavailable با 503 و دیگر وضعیت‌های فرایند معمولاً با 409 برمی‌گردند.

نسخهٔ قدیمی پایگاه داده، قفل اطلاعات هویتی، تعارض داده یا سقف حساب و هشدار پاسخ مشخص دارند. در خطای شبکه یا نتیجهٔ نامطمئن، نمایش موفقیت پیش‌فرض مجاز نیست.

دعوت و شارژ

روش و مسیرقراردادوضعیت
GET /api/referralsprogram، codes، stats، invitees، rewards برای همان حساب200؛ نیاز به نشست، اختلال503
POST /api/referrals{action:create,label}؛ عنوان حداکثر۶۰ نویسهنتیجهٔ ایجاد کد؛ سقف۲۰ کد و تماس تأییدشده
GET /api/deposits{enabled:false,provider:null,deposits}؛ تا۱۰۰ سابقهٔ اخیر200؛ نیاز به نشست
POST /api/deposits{amountToman}؛ رشتهٔ صحیح مثبت حداکثر۱۲ رقم پس از نرمال‌سازی400 مبلغ نامعتبر؛ مبلغ معتبر نیز503 چون درگاه متصل نیست.

API خصوصی پروندهٔ دارایی

GET /api/tokenization فهرست پرونده‌های صاحب نشست را می‌خواند. POST همان مسیر با action=start نوع دارایی و پذیرش نسخهٔ شرایط را دریافت می‌کند؛ action=save اطلاعات پیش‌نویس، action=submit تأیید و ارسال پرونده و action=accept شمارهٔ نسخهٔ پیشنهاد و پذیرش صریح آن را ثبت می‌کند. به‌جز شروع، شناسهٔ پرونده و آخرین version برای جلوگیری از تغییر هم‌زمان لازم‌اند.

POST /api/tokenization/documents فایل و شناسهٔ جایگاه مدرک را به‌صورت multipart دریافت می‌کند. GET با id و document فقط پس از مجوز، فایل خصوصی را برمی‌گرداند. DELETE به شناسهٔ پرونده، نسخه و شناسهٔ مدرک نیاز دارد و فقط در وضعیت قابل ویرایش مجاز است.

کنترل صاحب داده، وضعیت و نسخه در سرور و پایگاه داده اعمال می‌شود. یادداشت داخلی کارشناسان در پاسخ مشتری قرار نمی‌گیرد. نبود سرویس یا مهاجرت، خطای عدم دسترسی سرویس می‌دهد؛ هیچ مسیر عمومی برای اعلام موفقیت صدور یا افزودن موجودی وجود ندارد.

مراجع پیاده‌سازی این صفحه

این مسیرها نام فایل‌های مبنای مستندات‌اند؛ دسترسی به مخزن یا محیط خصوصی ایجاد نمی‌کنند.

  • lib/customer-auth.ts
  • lib/auth-cookies.ts
  • lib/auth-input.ts
  • lib/dashboard.ts
  • lib/bank-registration.ts
  • app/api/auth/session/route.ts
  • app/api/auth/login/route.ts
  • app/api/auth/register/route.ts
  • app/api/auth/otp/route.ts
  • app/api/auth/recovery/route.ts
  • app/auth/recovery/route.ts
  • app/api/dashboard/route.ts
  • app/api/referrals/route.ts
  • app/api/deposits/route.ts
  • app/api/tokenization/route.ts
  • app/api/tokenization/documents/route.ts
  • lib/tokenization.ts
  • supabase/migrations/202609240001_asset_tokenization.sql