From ef21551f558d43cc8de7994e99f2ffa2f6640be1 Mon Sep 17 00:00:00 2001 From: Daniel Backup Date: Sat, 23 May 2026 09:10:17 +0300 Subject: [PATCH 1/5] fix: kv2 read version searchparams --- src/engine/kv2.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/engine/kv2.ts b/src/engine/kv2.ts index b32d81d..c861a57 100644 --- a/src/engine/kv2.ts +++ b/src/engine/kv2.ts @@ -60,19 +60,22 @@ export class Kv2 extends ApiSector { * * @link https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2#read-secret-version */ - get read() { +get read() { return generateCommand({ method: 'GET', path: '/{{mountPath}}/data/{{path}}', client: this.client, + refine: (init, args) => { + if (args?.version !== undefined) { + init.url.searchParams.set('version', String(args.version)); + } + return init; + }, schema: { path: z.object({ mountPath: z.string(), path: z.string() }), - searchParams: z.object({ - version: z.number().optional() - }), response: SuccessResponseSchema.extend({ data: z.object({ data: z.record(z.string(), z.string()), From b43b805a0d5cca041fc77e6bf151dc38a58f9db4 Mon Sep 17 00:00:00 2001 From: Daniel Backup Date: Sat, 23 May 2026 09:12:10 +0300 Subject: [PATCH 2/5] fix: indentation --- src/engine/kv2.ts | 50 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/engine/kv2.ts b/src/engine/kv2.ts index c861a57..5e5a6e0 100644 --- a/src/engine/kv2.ts +++ b/src/engine/kv2.ts @@ -60,32 +60,32 @@ export class Kv2 extends ApiSector { * * @link https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2#read-secret-version */ -get read() { - return generateCommand({ - method: 'GET', - path: '/{{mountPath}}/data/{{path}}', - client: this.client, - refine: (init, args) => { - if (args?.version !== undefined) { - init.url.searchParams.set('version', String(args.version)); - } - return init; - }, - schema: { - path: z.object({ - mountPath: z.string(), - path: z.string() - }), - response: SuccessResponseSchema.extend({ - data: z.object({ - data: z.record(z.string(), z.string()), - metadata: MetadataSchema + get read() { + return generateCommand({ + method: 'GET', + path: '/{{mountPath}}/data/{{path}}', + client: this.client, + refine: (init, args) => { + if (args?.version !== undefined) { + init.url.searchParams.set('version', String(args.version)); + } + return init; + }, + schema: { + path: z.object({ + mountPath: z.string(), + path: z.string() + }), + response: SuccessResponseSchema.extend({ + data: z.object({ + data: z.record(z.string(), z.string()), + metadata: MetadataSchema + }) }) - }) - } - }); - } - + } + }); + } + /** * Create/Update secret * From 8dae710126ec4e7aac708139683f776618725d0e Mon Sep 17 00:00:00 2001 From: Varjoissa Date: Sat, 23 May 2026 09:15:39 +0300 Subject: [PATCH 3/5] fix: indentation --- src/engine/kv2.ts | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/engine/kv2.ts b/src/engine/kv2.ts index 5e5a6e0..76c127c 100644 --- a/src/engine/kv2.ts +++ b/src/engine/kv2.ts @@ -61,31 +61,31 @@ export class Kv2 extends ApiSector { * @link https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2#read-secret-version */ get read() { - return generateCommand({ - method: 'GET', - path: '/{{mountPath}}/data/{{path}}', - client: this.client, - refine: (init, args) => { - if (args?.version !== undefined) { - init.url.searchParams.set('version', String(args.version)); - } - return init; - }, - schema: { - path: z.object({ - mountPath: z.string(), - path: z.string() - }), - response: SuccessResponseSchema.extend({ - data: z.object({ - data: z.record(z.string(), z.string()), - metadata: MetadataSchema - }) - }) + return generateCommand({ + method: 'GET', + path: '/{{mountPath}}/data/{{path}}', + client: this.client, + refine: (init, args) => { + if (args?.version !== undefined) { + init.url.searchParams.set('version', String(args.version)); } - }); - } - + return init; + }, + schema: { + path: z.object({ + mountPath: z.string(), + path: z.string() + }), + response: SuccessResponseSchema.extend({ + data: z.object({ + data: z.record(z.string(), z.string()), + metadata: MetadataSchema + }) + }) + } + }); + } + /** * Create/Update secret * From 6405d0e9a80f88ea627f500da2a7db749f6a72a4 Mon Sep 17 00:00:00 2001 From: Varjoissa Date: Sat, 23 May 2026 09:20:39 +0300 Subject: [PATCH 4/5] chore: added changeset --- .changeset/itchy-pots-start.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/itchy-pots-start.md diff --git a/.changeset/itchy-pots-start.md b/.changeset/itchy-pots-start.md new file mode 100644 index 0000000..be32d1e --- /dev/null +++ b/.changeset/itchy-pots-start.md @@ -0,0 +1,5 @@ +--- +"@litehex/node-vault": patch +--- + +Fixed issue in kv2 read method where version params caused misformed urls. See issue #109 From 33feac485decba3680015fee1439b6053bb71c33 Mon Sep 17 00:00:00 2001 From: Varjoissa Date: Sat, 23 May 2026 09:24:50 +0300 Subject: [PATCH 5/5] chore: added zod validation in the refine block to match the schema validation process --- src/engine/kv2.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/engine/kv2.ts b/src/engine/kv2.ts index 76c127c..4d96183 100644 --- a/src/engine/kv2.ts +++ b/src/engine/kv2.ts @@ -67,7 +67,8 @@ export class Kv2 extends ApiSector { client: this.client, refine: (init, args) => { if (args?.version !== undefined) { - init.url.searchParams.set('version', String(args.version)); + const version = z.number().int().positive().parse(args.version); + init.url.searchParams.set('version', String(version)); } return init; },