feat: add code-first API support for projects, milestones, proposes, tasks
- Projects: get/update/delete/members endpoints now accept project_code - Milestones: all project-scoped and top-level endpoints accept milestone_code - Proposes: all endpoints accept project_code and propose_code - Tasks: code-first support for all CRUD + transition + take + search - Schemas: add code/type/due_date/project_code/milestone_code/taken_by fields - All endpoints use id-or-code lookup helpers for backward compatibility - Milestone serializer now includes milestone_code and code fields - Task serializer enriches responses with project_code, milestone_code, taken_by Addresses TODO §2.1: code-first API support across CLI-targeted resources
This commit is contained in:
@@ -44,9 +44,12 @@ class TaskBase(BaseModel):
|
||||
|
||||
class TaskCreate(TaskBase):
|
||||
project_id: Optional[int] = None
|
||||
project_code: Optional[str] = None
|
||||
milestone_id: Optional[int] = None
|
||||
milestone_code: Optional[str] = None
|
||||
reporter_id: Optional[int] = None
|
||||
assignee_id: Optional[int] = None
|
||||
type: Optional[TaskTypeEnum] = None
|
||||
# Resolution specific
|
||||
resolution_summary: Optional[str] = None
|
||||
positions: Optional[str] = None
|
||||
@@ -57,10 +60,12 @@ class TaskUpdate(BaseModel):
|
||||
title: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
task_type: Optional[TaskTypeEnum] = None
|
||||
type: Optional[TaskTypeEnum] = None
|
||||
task_subtype: Optional[str] = None
|
||||
status: Optional[TaskStatusEnum] = None
|
||||
priority: Optional[TaskPriorityEnum] = None
|
||||
assignee_id: Optional[int] = None
|
||||
taken_by: Optional[str] = None
|
||||
tags: Optional[str] = None
|
||||
estimated_effort: Optional[int] = None
|
||||
# Resolution specific
|
||||
@@ -73,10 +78,16 @@ class TaskResponse(TaskBase):
|
||||
id: int
|
||||
status: TaskStatusEnum
|
||||
task_code: Optional[str] = None
|
||||
code: Optional[str] = None
|
||||
type: Optional[str] = None
|
||||
due_date: Optional[datetime] = None
|
||||
project_id: int
|
||||
project_code: Optional[str] = None
|
||||
milestone_id: int
|
||||
milestone_code: Optional[str] = None
|
||||
reporter_id: int
|
||||
assignee_id: Optional[int] = None
|
||||
taken_by: Optional[str] = None
|
||||
created_by_id: Optional[int] = None
|
||||
estimated_working_time: Optional[time] = None
|
||||
resolution_summary: Optional[str] = None
|
||||
|
||||
Reference in New Issue
Block a user