Milestones
Track progress with milestones in Vaiz SDK.
Getting Milestones
All Milestones
response = client.get_milestones()
for milestone in response.milestones:
progress = f"{milestone.completed}/{milestone.total}"
print(f"📍 {milestone.name}: {progress}")
Single Milestone
response = client.get_milestone("milestone_id")
milestone = response.milestone
print(f"Name: {milestone.name}")
print(f"Progress: {milestone.completed}/{milestone.total}")
print(f"Due: {milestone.due_end}")
Creating Milestones
Basic Milestone
from vaiz.models import CreateMilestoneRequest
milestone = CreateMilestoneRequest(
name="Q1 2025",
board="board_id",
project="project_id"
)
response = client.create_milestone(milestone)
With Dates
from datetime import datetime
from vaiz.models.enums import Color
milestone = CreateMilestoneRequest(
name="Q1 2025 Release",
description="First quarter tasks",
board="board_id",
project="project_id",
due_start=datetime(2025, 1, 1),
due_end=datetime(2025, 3, 31),
color=Color.Green
)
response = client.create_milestone(milestone)
Editing Milestones
from vaiz.models import EditMilestoneRequest
edit = EditMilestoneRequest(
milestone_id="milestone_id",
name="Updated Name",
description="New description",
due_end=datetime(2025, 12, 31)
)
response = client.edit_milestone(edit)
Attaching to Tasks
Toggle Milestone
from vaiz.models import ToggleMilestoneRequest
request = ToggleMilestoneRequest(
task_id="task_id",
milestone_ids=["milestone_id_1", "milestone_id_2"]
)
response = client.toggle_milestone(request)
task = response.task
print(f"Milestones: {task.milestones}")
Toggle Behavior
The toggle_milestone method works as a switch:
- If milestone is attached → it detaches
- If milestone is not attached → it attaches
Examples
Create Quarterly Milestones
from datetime import datetime
quarters = [
("Q1 2025", datetime(2025, 1, 1), datetime(2025, 3, 31)),
("Q2 2025", datetime(2025, 4, 1), datetime(2025, 6, 30)),
("Q3 2025", datetime(2025, 7, 1), datetime(2025, 9, 30)),
("Q4 2025", datetime(2025, 10, 1), datetime(2025, 12, 31)),
]
for name, start, end in quarters:
milestone = CreateMilestoneRequest(
name=name,
board="board_id",
project="project_id",
due_start=start,
due_end=end
)
response = client.create_milestone(milestone)
print(f"✅ Created: {name}")
Track Progress
response = client.get_milestones()
for milestone in response.milestones:
if milestone.total > 0:
percentage = (milestone.completed / milestone.total) * 100
print(f"{milestone.name}: {percentage:.0f}% complete")
See Also
- Milestones API Reference - Complete API documentation and models
- Tasks - Task operations
- Projects - Project management
- Examples - More examples