From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 318BE1FF138 for ; Wed, 18 Feb 2026 17:43:29 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1B81AC2E; Wed, 18 Feb 2026 17:44:29 +0100 (CET) From: Shan Shaji To: pdm-devel@lists.proxmox.com Subject: [PATCH proxmox v4 1/1] pve-api-types: generate missing `delete_token` method Date: Wed, 18 Feb 2026 17:41:35 +0100 Message-ID: <20260218164135.413762-8-s.shaji@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260218164135.413762-1-s.shaji@proxmox.com> References: <20260218164135.413762-1-s.shaji@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1771433027110 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.109 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: VVIXFXJCG33IMQY2S74GOWSR24GUANYP X-Message-ID-Hash: VVIXFXJCG33IMQY2S74GOWSR24GUANYP X-MailFrom: s.shaji@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Removing a remote node from PDM and adding it again is prevented by the already existing token. Inorder to allow deletion of token from PVE, generate the endpoint that is necessary to call from PDM. Signed-off-by: Shan Shaji --- changes since v3: No changes pve-api-types/generate.pl | 1 + pve-api-types/src/generated/code.rs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/pve-api-types/generate.pl b/pve-api-types/generate.pl index e5c5d051..da8c2d47 100755 --- a/pve-api-types/generate.pl +++ b/pve-api-types/generate.pl @@ -362,6 +362,7 @@ Schema2Rust::derive('ListRealm' => 'Clone', 'PartialEq'); # api(GET => '/access/users/{userid}', 'get_user', 'return-name' => 'User'); api(POST => '/access/users/{userid}/token/{tokenid}', 'create_token', 'param-name' => 'CreateToken'); Schema2Rust::derive('CreateToken' => 'Default'); +api(DELETE => '/access/users/{userid}/token/{tokenid}', 'delete_token'); api(GET => '/nodes/{node}/apt/update', 'list_available_updates', 'return-name' => 'AptUpdateInfo'); api(POST => '/nodes/{node}/apt/update', 'update_apt_database', 'output-type' => 'PveUpid', 'param-name' => 'AptUpdateParams'); diff --git a/pve-api-types/src/generated/code.rs b/pve-api-types/src/generated/code.rs index bdf93884..c12f6bbe 100644 --- a/pve-api-types/src/generated/code.rs +++ b/pve-api-types/src/generated/code.rs @@ -634,6 +634,11 @@ pub trait PveClient { )) } + /// Remove API token for a specific user. + async fn delete_token(&self, userid: &str, tokenid: &str) -> Result<(), Error> { + Err(Error::Other("delete_token not implemented")) + } + /// Get APT repository information. async fn get_apt_repositories(&self, node: &str) -> Result { Err(Error::Other("get_apt_repositories not implemented")) @@ -1802,6 +1807,16 @@ where self.0.delete(url).await?.nodata() } + /// Remove API token for a specific user. + async fn delete_token(&self, userid: &str, tokenid: &str) -> Result<(), Error> { + let url = &format!( + "/api2/extjs/access/users/{}/token/{}", + percent_encode(userid.as_bytes(), percent_encoding::NON_ALPHANUMERIC), + percent_encode(tokenid.as_bytes(), percent_encoding::NON_ALPHANUMERIC) + ); + self.0.delete(url).await?.nodata() + } + /// Get APT repository information. async fn get_apt_repositories(&self, node: &str) -> Result { let url = &format!( -- 2.47.3