From 9390a85a80e77e11e3bea577fed970f84bc3cb47 Mon Sep 17 00:00:00 2001 From: akhil-vamshi-konam Date: Wed, 29 Apr 2026 12:07:38 +0530 Subject: [PATCH 1/2] chore: add optional title field to work item link models --- plane/models/work_items.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plane/models/work_items.py b/plane/models/work_items.py index 9e93080..98e7d67 100644 --- a/plane/models/work_items.py +++ b/plane/models/work_items.py @@ -368,6 +368,7 @@ class CreateWorkItemLink(BaseModel): model_config = ConfigDict(extra="ignore", populate_by_name=True) url: str + title: str | None = None class UpdateWorkItemLink(BaseModel): @@ -376,6 +377,7 @@ class UpdateWorkItemLink(BaseModel): model_config = ConfigDict(extra="ignore", populate_by_name=True) url: str | None = None + title: str | None = None class WorkItemAttachment(BaseModel): From 49e0a956f48725f3e4b2120ea74b69088b27f569 Mon Sep 17 00:00:00 2001 From: akhil-vamshi-konam Date: Wed, 29 Apr 2026 12:36:52 +0530 Subject: [PATCH 2/2] chore: add tests for creating and updating work item links --- tests/unit/test_work_items.py | 45 ++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_work_items.py b/tests/unit/test_work_items.py index b19098f..265e097 100644 --- a/tests/unit/test_work_items.py +++ b/tests/unit/test_work_items.py @@ -5,7 +5,7 @@ from plane.client import PlaneClient from plane.models.projects import Project from plane.models.query_params import PaginatedQueryParams, WorkItemQueryParams -from plane.models.work_items import AdvancedSearchWorkItem, CreateWorkItem, UpdateWorkItem +from plane.models.work_items import AdvancedSearchWorkItem, CreateWorkItem, CreateWorkItemLink, UpdateWorkItem, UpdateWorkItemLink class TestWorkItemsAPI: @@ -236,6 +236,49 @@ def test_list_links( assert hasattr(response, "count") assert isinstance(response.results, list) + def test_create_link_with_title( + self, client: PlaneClient, workspace_slug: str, project: Project, work_item + ) -> None: + """Test creating a work item link with title.""" + link = None + try: + link = client.work_items.links.create( + workspace_slug, + project.id, + work_item.id, + CreateWorkItemLink(url="https://example.com", title="Example"), + ) + assert link is not None + assert link.url == "https://example.com" + assert link.title == "Example" + finally: + if link is not None: + client.work_items.links.delete(workspace_slug, project.id, work_item.id, link.id) + + def test_update_link_title( + self, client: PlaneClient, workspace_slug: str, project: Project, work_item + ) -> None: + """Test updating a work item link title.""" + link = None + try: + link = client.work_items.links.create( + workspace_slug, + project.id, + work_item.id, + CreateWorkItemLink(url="https://example.com", title="Original"), + ) + updated = client.work_items.links.update( + workspace_slug, + project.id, + work_item.id, + link.id, + UpdateWorkItemLink(title="Updated"), + ) + assert updated.title == "Updated" + finally: + if link is not None: + client.work_items.links.delete(workspace_slug, project.id, work_item.id, link.id) + def test_list_activities( self, client: PlaneClient, workspace_slug: str, project: Project, work_item ) -> None: