# Route: POST /api/v2/online/{type}/unlock

## Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir; text-align: justify; line-height: 1.9;"><table border="1" style="width: 96%; margin: auto; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>Method</td><td>Endpoint</td><td>Controller</td><td>Middleware</td><td>Purpose</td></tr><tr><td>POST</td><td style="direction: ltr;">/api/v2/online/{type}/unlock</td><td style="direction: ltr;">OnlineController@unlockItemProgress</td><td style="direction: ltr;">authWithJwt</td><td>رفع قفل آیتم (Flight/Train) در Temporary Reservation</td></tr></tbody></table>

</div>### منطق عملکرد

<div class="align-right" id="bkmrk-%D9%88%D8%B1%D9%88%D8%AF%DB%8C%E2%80%AF%28%D8%AA%D9%85%D8%A7%D9%85%E2%80%AF%D8%AF%D8%A7%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C" style="font-family: Vazir; line-height: 1.9;">1. ورودی (تمام داده‌های درخواست) از $request دریافت می‌شود.
2. نمونه‌ای از `\App\Lib\BaseService` ایجاد می‌شود.
3. فراخوانی تابع `BaseService::unlockItemProgress($request‑>all(), $request‑>get('branch'))`.
4. پاسخ دریافتی در `data` به صورت JSON بازگردانده می‌شود.
5. در صورت خطا (Code 1002)، جزئیات trace و مشخصات پشتیبانی برمی‌گردد.

</div>### ورودی‌ها

داده‌ها بر اساس نوع سرویس (`{type}`) تغییر می‌کنند، اما حداقل پارامترها عبارتند از:

<div class="align-right" id="bkmrk-branch%E2%80%AF%3A%E2%80%AF%D8%B4%D9%86%D8%A7%D8%B3%D9%87%D9%94%E2%80%AF%D8%B4%D8%B9%D8%A8%D9%87" style="font-family: Vazir; line-height: 1.9;">- `branch` : شناسهٔ شعبه
- `lock_id` : شناسه قفل موقت در جدول `temporary_reservations`
- `token` | `progress_id` : شناسه داخلی لاک

</div>### پاسخ نمونه موفق

```
{
 "status": true,
 "time": 1732050510,
 "data": {
   "unlocked": true,
   "id": 9372,
   "message": "Lock released successfully"
 }
}
```

### پاسخ خطا

```
{
 "status": false,
 "time": 1732050510,
 "error": {
   "code": 1002,
   "message": "Lock not found or already expired",
   "trace": [...]
 },
 "support": {
   "phone": "021‑91016838 in 121",
   "email": "ict@airplus.app",
   "panel": "helpdesk.airplus.app"
 }
}
```

### وابستگی‌ها

<div class="align-right" id="bkmrk-baseservice%3A%3Aunlocki" style="font-family: Vazir; line-height: 1.9;">- `BaseService::unlockItemProgress()`
- مدیریت Table `temporary_reservations`

</div>### نکات توسعه

<div id="bkmrk-online-unlock-item" style="font-family: Vazir; line-height: 1.9;">- بهتر است در نسخه بعدی، تاریخ Expiry لاک در خروجی نمایش داده شود.

</div>