Skip to main content
#P1764

RESOURCE /v2/scrumboard/sprints


Sprint Hydration Logic

اسپرینت‌ها ظروف نگهداری کارت‌ها در بازه‌های زمانی مشخص هستند. منطق Hydration در اینجا بسیار سنگین است زیرا با دریافت اسپرینت، سیستم به صورت خودکار تمام کارت‌های داخل آن را واکشی کرده و فرآیند "Card Deep Hydration" را برای تک تک آن‌ها اجرا می‌کند.

Fetch Sprint Data
Step 1: Reports
Fetch `scrumboard_sprint_reports`
+ Hydrate Operator for each report
Step 2: Cards Hydration (Heavy)
Decode `cards` JSON (Array of IDs)
Loop through Cards & Apply Card Deep Hydration:
(Members, Labels, Comments, Checklists, Attachments)
Return Sprint with Full Nested Data


Get Sprints List

دریافت لیست اسپرینت‌های یک بورد. هر آیتم در لیست شامل آرایه‌ای کامل از کارت‌های داخل آن اسپرینت است.

URL: /v2/scrumboard/sprints
Method: GET
Controller: SprintController@index

Parameters

Parameter Type Location Description
board_id Integer Query (الزامی) شناسه بورد مربوطه.
status Integer Query (اختیاری) فیلتر بر اساس وضعیت اسپرینت.

Response Structure

{
    "items": [
        {
            "id": 10,
            "board_id": 1,
            "title": "Sprint #4 - Login Refactor",
            "goal": "Improve security",
            "duration": "2 weeks",
            "status": 1,
            "created_at": "...",
            // گزارش‌های اسپرینت
            "reports": [
                { "id": 1, "note": "Daily meeting...", "operator": { ... } }
            ],
            // کارت‌های داخل اسپرینت (کاملاً Hydrate شده)
            "cards": [
                {
                    "id": 101,
                    "title": "Login API",
                    "members": [...],
                    "labels": [...],
                    "comments": [...],
                    "checklists": [...],
                    "attachments": [...]
                }
            ]
        }
    ],
    "meta": { "timestamp": 1733754000 }
}

Create Sprint

ایجاد یک اسپرینت جدید. می‌توان در لحظه ایجاد، لیست کارت‌های مرتبط را نیز تعیین کرد.

URL: /v2/scrumboard/sprints
Method: POST
Controller: SprintController@store

Body Parameters

Parameter Type Description
board_id Integer (الزامی) شناسه بورد والد.
title String (الزامی) عنوان اسپرینت.
duration String (الزامی) مدت زمان (مثلاً "2 weeks").
goal String (اختیاری) هدف اسپرینت.
description String (اختیاری) توضیحات تکمیلی.
color String (اختیاری) کد رنگ برای نمایش در UI.
cards Array[Int] (اختیاری) آرایه‌ای از شناسه کارت‌ها جهت اتصال به این اسپرینت. مثال: [101, 102]

Success Response

{
    "payload": {
        "id": 11,
        "title": "New Sprint",
        "cards": [], // یا شامل آبجکت‌های کارت اگر در ورودی ارسال شده باشد
        "reports": [],
        ...
    },
    "meta": { "timestamp": 1733754000 }
}

Show Sprint Details

مشاهده جزئیات یک اسپرینت خاص به همراه تمامی وابستگی‌ها (کارت‌ها و گزارش‌ها).

URL: /v2/scrumboard/sprints/{id}
Method: GET
Controller: SprintController@show

Update Sprint

به‌روزرسانی اطلاعات اسپرینت. مهم: اگر پارامتر cards ارسال شود، لیست کارت‌های اسپرینت با لیست جدید جایگزین می‌شود (Sync).

URL: /v2/scrumboard/sprints/{id}
Method: PUT / PATCH
Controller: SprintController@update

Body Parameters

Parameter Type Description
title String عنوان اسپرینت.
status Integer وضعیت (مثلاً 1: فعال، 0: آرشیو).
cards Array[Int] لیست جدید شناسه کارت‌ها. مثال: [101, 105, 109]
... ... سایر فیلدهای مشابه متد Create (goal, color, duration, etc).

Success Response

{
    "payload": {
        "id": 11,
        "title": "Updated Title",
        "cards": [ ... ], // لیست جدید کارت‌ها با جزئیات کامل
        ...
    },
    "meta": { "timestamp": 1733754000 }
}

Delete Sprint

حذف اسپرینت از دیتابیس. این عملیات کارت‌ها را حذف نمی‌کند، بلکه فقط ارتباط اسپرینت را از بین می‌برد (مگر اینکه در دیتابیس تنظیمات دیگری اعمال شده باشد).

URL: /v2/scrumboard/sprints/{id}
Method: DELETE
Controller: SprintController@destroy

Response

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