From ea2764dfdb44e0f15645ec7ff6d03c1725127aab Mon Sep 17 00:00:00 2001 From: Saurabhkmr98 Date: Thu, 26 Mar 2026 14:23:15 +0530 Subject: [PATCH] add project archive endpoints --- package.json | 2 +- src/api/Projects.ts | 14 ++++++++++++++ tests/unit/project.test.ts | 20 +++++++++++++++++--- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e39c0bd..e3d71b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@makeplane/plane-node-sdk", - "version": "0.2.8", + "version": "0.2.9", "description": "Node SDK for Plane", "author": "Plane ", "repository": { diff --git a/src/api/Projects.ts b/src/api/Projects.ts index c551e49..6983ad6 100644 --- a/src/api/Projects.ts +++ b/src/api/Projects.ts @@ -84,4 +84,18 @@ export class Projects extends BaseResource { ): Promise { return this.patch(`/workspaces/${workspaceSlug}/projects/${projectId}/features/`, updateFeatures); } + + /** + * Archive a project + */ + async archive(workspaceSlug: string, projectId: string): Promise { + return this.post(`/workspaces/${workspaceSlug}/projects/${projectId}/archive/`); + } + + /** + * Unarchive a project + */ + async unArchive(workspaceSlug: string, projectId: string): Promise { + return this.httpDelete(`/workspaces/${workspaceSlug}/projects/${projectId}/archive/`); + } } diff --git a/tests/unit/project.test.ts b/tests/unit/project.test.ts index da4303a..abedc7b 100644 --- a/tests/unit/project.test.ts +++ b/tests/unit/project.test.ts @@ -74,6 +74,20 @@ describe(!!config.workspaceSlug, "Project API Tests", () => { expect(foundProject?.name).toBe("Updated Test Project"); }); + it("should archive and unarchive a project", async () => { + await client.projects.archive(workspaceSlug, project.id); + + const archivedProject = await client.projects.retrieve(workspaceSlug, project.id); + expect(archivedProject).toBeDefined(); + expect(archivedProject.archived_at).toBeTruthy(); + + await client.projects.unArchive(workspaceSlug, project.id); + + const unarchivedProject = await client.projects.retrieve(workspaceSlug, project.id); + expect(unarchivedProject).toBeDefined(); + expect(unarchivedProject.archived_at).toBeFalsy(); + }); + it("should get project members", async () => { const members = await client.projects.getMembers(workspaceSlug, project.id); @@ -99,17 +113,17 @@ describe(!!config.workspaceSlug, "Project API Tests", () => { const originalFeatures = await client.projects.retrieveFeatures(workspaceSlug, project.id); const updatedFeatures = await client.projects.updateFeatures(workspaceSlug, project.id, { - epics: !originalFeatures.epics, + pages: !originalFeatures.pages, modules: !originalFeatures.modules, }); expect(updatedFeatures).toBeDefined(); - expect(updatedFeatures.epics).toBe(!originalFeatures.epics); + expect(updatedFeatures.pages).toBe(!originalFeatures.pages); expect(updatedFeatures.modules).toBe(!originalFeatures.modules); // Restore original values await client.projects.updateFeatures(workspaceSlug, project.id, { - epics: originalFeatures.epics, + pages: originalFeatures.pages, modules: originalFeatures.modules, }); });