# RESOURCE /v2/scrumboard/boards

<div class="api-docs" id="bkmrk-">  </div># List Scrum Boards

این اندپوینت لیست بوردهای اسکرام را بازیابی می‌کند. نتایج شامل بوردهایی است که کاربر جاری یا **سازنده (Owner)** آن‌هاست و یا به عنوان **عضو (Member)** به آن‌ها دعوت شده است.

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fscrumboard%2F"><div class="endpoint-info"><div>**URL:** `/v2/scrumboard/boards`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** BoardController@index</div><div>**Middleware:** authWithJwt</div></div></div>### Parameters

<div class="api-docs" id="bkmrk-parameter-type-locat"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Location</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">branch</td><td>Integer</td><td>Query</td><td>شناسه شعبه (الزامی برای فیلتر اولیه).</td></tr><tr><td dir="ltr">status</td><td>Integer</td><td>Query</td><td>(اختیاری) فیلتر بر اساس وضعیت فعال/غیرفعال.</td></tr></tbody></table>

</div>### Logic Details

سیستم پردازش‌های زیر را هنگام دریافت لیست انجام می‌دهد:

<div class="api-docs" id="bkmrk-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C%3A-%D8%AA%D9%86%D9%87%D8%A7-%D8%A8">- **فیلتر دسترسی:** تنها بوردهایی بازگردانده می‌شوند که `operator_id` برابر با کاربر جاری باشد **یا** شناسه کاربر در آرایه JSON ستون `members` وجود داشته باشد.
- **Hydration (تزریق داده‌ها):**
    - فیلد `members` (آرایه‌ای از IDها) با آبجکت کامل اطلاعات اپراتورها (نام، آواتار و...) جایگزین می‌شود.
    - لیست‌های بورد (Lists) و لیبل‌ها (Labels) از جداول مربوطه دریافت و به پاسخ اضافه می‌شوند.

</div>### Success Response

```json
{
    "items": [
        {
            "id": 10,
            "title": "پروژه توسعه",
            "operator_id": 55,
            "members": [
                { "id": 60, "first_name": "Ali", "last_name": "Rezaei", "avatar": "..." }
            ],
            "lists": [
                { "id": 1, "title": "درحال انجام", "priority": 2 }
            ],
            "labels": [
                { "id": 5, "title": "فوری" }
            ]
        }
    ],
    "meta": { "timestamp": 1733754000 }
}
```

<div class="api-docs" id="bkmrk--1">---

  </div># Create Scrum Board

این اندپوینت یک بورد اسکرام جدید ایجاد می‌کند. نکته مهم در این متد، **ایجاد خودکار** لیست‌ها و لیبل‌های پیش‌فرض همزمان با ساخت بورد است تا بورد بلافاصله قابل استفاده باشد.

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fscrumboard%2F-1"><div class="endpoint-info"><div>**URL:** `/v2/scrumboard/boards`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** BoardController@store</div><div>**Middleware:** authWithJwt</div></div></div>### Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">title</td><td>String</td><td>عنوان بورد (الزامی).</td></tr><tr><td dir="ltr">icon</td><td>String</td><td>آیکون یا ایموجی بورد (الزامی).</td></tr><tr><td dir="ltr">branch</td><td>Integer</td><td>شناسه شعبه (الزامی).</td></tr><tr><td dir="ltr">sprint\_unit</td><td>String</td><td>(اختیاری) واحد زمان اسپرینت.</td></tr><tr><td dir="ltr">sprint\_duration</td><td>Integer</td><td>(اختیاری) مدت زمان اسپرینت.</td></tr></tbody></table>

</div>### Logic Details (Default Data)

پس از درج بورد، سیستم موارد زیر را به صورت خودکار ایجاد می‌کند:

<div class="api-docs" id="bkmrk-%D9%84%DB%8C%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C-%D9%BE%DB%8C%D8%B4%E2%80%8C%D9%81%D8%B1%D8%B6%3A-%D9%86%DB%8C"><div class="api-notice info" dir="rtl">**لیست‌های پیش‌فرض:**- **نیازمند بررسی** (رنگ: #ffdb6d، اولویت: 3)
- **درحال انجام** (رنگ: #4287f4، اولویت: 2)
- **انجام شده** (رنگ: #4caf50، اولویت: 1)

**لیبل‌های پیش‌فرض:** بسیار فوری، بالا، متوسط، پایین.</div></div>### Success Response

```json
{
    "payload": {
        "id": 12,
        "title": "New Board",
        "lists": [ ... ],
        "labels": [ ... ]
    },
    "meta": { "timestamp": 1733754000 }
}
```

<div class="api-docs" id="bkmrk--2">---

  </div># Show Scrum Board

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

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fscrumboard%2F-2"><div class="endpoint-info"><div>**URL:** `/v2/scrumboard/boards/{id}`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** BoardController@show</div></div></div>### Path Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr-1"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>Integer</td><td>شناسه بورد.</td></tr></tbody></table>

</div>### Logic Details

این متد چک می‌کند که آیا کاربر درخواست کننده (`operator`) یا سازنده بورد است و یا شناسه او در فیلد JSON `members` وجود دارد. در غیر این صورت (یا اگر بورد وجود نداشته باشد)، نتیجه خالی برمی‌گرداند.

### Success Response

```json
{
    "payload": {
        "id": 12,
        "title": "Board Title",
        "members": [...],
        "lists": [...],
        "labels": [...]
    },
    "meta": { "timestamp": 1733754000 }
}
```

<div class="api-docs" id="bkmrk--3">---

  </div># Update Scrum Board

بروزرسانی اطلاعات بورد. نکته امنیتی مهم این است که برخلاف نمایش، **فقط سازنده بورد (Operator ID منطبق)** اجازه ویرایش را دارد.

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fscrumboard%2F-3"><div class="endpoint-info"><div>**URL:** `/v2/scrumboard/boards/{id}`</div><div>**Method:** <span class="method-put">PUT</span> / <span class="method-patch">PATCH</span></div><div>**Controller:** BoardController@update</div></div></div>### Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr-2"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">title</td><td>String</td><td>عنوان جدید.</td></tr><tr><td dir="ltr">description</td><td>String</td><td>توضیحات.</td></tr><tr><td dir="ltr">members</td><td>Array (IDs)</td><td>لیست ID اعضای جدید (به JSON تبدیل می‌شود).</td></tr><tr><td dir="ltr">status</td><td>Integer</td><td>وضعیت (پیش‌فرض 1).</td></tr></tbody></table>

</div>### Error Response (Forbidden)

اگر کاربر جاری سازنده بورد نباشد:

```json
{
    "error": {
        "code": 1001,
        "message": "You do not have permission to edit this scrum board."
    },
    "meta": { "timestamp": 1733754000 }
}
```

### Success Response

```json
{
    "payload": { "id": 12, "title": "Updated Title", ... },
    "meta": { "timestamp": 1733754000 }
}
```

<div class="api-docs" id="bkmrk--4">---

  </div># Delete Scrum Board

حذف کامل بورد از دیتابیس. این عملیات نیز مانند ویرایش، تنها توسط **سازنده بورد** قابل انجام است.

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fscrumboard%2F-4"><div class="endpoint-info"><div>**URL:** `/v2/scrumboard/boards/{id}`</div><div>**Method:** <span class="method-delete">DELETE</span></div><div>**Controller:** BoardController@destroy</div></div></div>### Logic Details

ابتدا مالکیت بورد بررسی می‌شود. اگر کاربر جاری سازنده نباشد، خطای کد `1001` بازگردانده می‌شود. در صورت موفقیت، رکورد از جدول `scrumboard_boards` حذف می‌شود.

### Success Response

```json
{
    "payload": 1, // تعداد رکوردهای حذف شده
    "meta": {
        "timestamp": 1733754000
    }
}
```