@zincapp/znvault-cli 3.3.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -28
- package/dist/commands/advisor.d.ts +14 -1
- package/dist/commands/advisor.d.ts.map +1 -1
- package/dist/commands/advisor.js +355 -331
- package/dist/commands/advisor.js.map +1 -1
- package/dist/commands/agent/index.d.ts +2 -1
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +23 -19
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/apikey/conditions.d.ts.map +1 -1
- package/dist/commands/apikey/conditions.js +4 -3
- package/dist/commands/apikey/conditions.js.map +1 -1
- package/dist/commands/apikey/create.d.ts.map +1 -1
- package/dist/commands/apikey/create.js +4 -2
- package/dist/commands/apikey/create.js.map +1 -1
- package/dist/commands/apikey/delete.d.ts.map +1 -1
- package/dist/commands/apikey/delete.js +4 -2
- package/dist/commands/apikey/delete.js.map +1 -1
- package/dist/commands/apikey/enable-disable.d.ts.map +1 -1
- package/dist/commands/apikey/enable-disable.js +7 -4
- package/dist/commands/apikey/enable-disable.js.map +1 -1
- package/dist/commands/apikey/helpers.d.ts +16 -0
- package/dist/commands/apikey/helpers.d.ts.map +1 -1
- package/dist/commands/apikey/helpers.js +9 -0
- package/dist/commands/apikey/helpers.js.map +1 -1
- package/dist/commands/apikey/index.d.ts +2 -1
- package/dist/commands/apikey/index.d.ts.map +1 -1
- package/dist/commands/apikey/index.js +23 -14
- package/dist/commands/apikey/index.js.map +1 -1
- package/dist/commands/apikey/list.d.ts.map +1 -1
- package/dist/commands/apikey/list.js +4 -3
- package/dist/commands/apikey/list.js.map +1 -1
- package/dist/commands/apikey/managed/bind.d.ts.map +1 -1
- package/dist/commands/apikey/managed/bind.js +4 -3
- package/dist/commands/apikey/managed/bind.js.map +1 -1
- package/dist/commands/apikey/managed/conditions.d.ts.map +1 -1
- package/dist/commands/apikey/managed/conditions.js +5 -4
- package/dist/commands/apikey/managed/conditions.js.map +1 -1
- package/dist/commands/apikey/managed/config.d.ts.map +1 -1
- package/dist/commands/apikey/managed/config.js +4 -3
- package/dist/commands/apikey/managed/config.js.map +1 -1
- package/dist/commands/apikey/managed/create.d.ts.map +1 -1
- package/dist/commands/apikey/managed/create.js +4 -1
- package/dist/commands/apikey/managed/create.js.map +1 -1
- package/dist/commands/apikey/managed/delete.d.ts.map +1 -1
- package/dist/commands/apikey/managed/delete.js +4 -2
- package/dist/commands/apikey/managed/delete.js.map +1 -1
- package/dist/commands/apikey/managed/get.d.ts.map +1 -1
- package/dist/commands/apikey/managed/get.js +4 -2
- package/dist/commands/apikey/managed/get.js.map +1 -1
- package/dist/commands/apikey/managed/list.d.ts.map +1 -1
- package/dist/commands/apikey/managed/list.js +4 -2
- package/dist/commands/apikey/managed/list.js.map +1 -1
- package/dist/commands/apikey/managed/permissions.d.ts.map +1 -1
- package/dist/commands/apikey/managed/permissions.js +5 -3
- package/dist/commands/apikey/managed/permissions.js.map +1 -1
- package/dist/commands/apikey/managed/rotate.d.ts.map +1 -1
- package/dist/commands/apikey/managed/rotate.js +4 -3
- package/dist/commands/apikey/managed/rotate.js.map +1 -1
- package/dist/commands/apikey/permissions.d.ts.map +1 -1
- package/dist/commands/apikey/permissions.js +5 -3
- package/dist/commands/apikey/permissions.js.map +1 -1
- package/dist/commands/apikey/policies.d.ts.map +1 -1
- package/dist/commands/apikey/policies.js +10 -7
- package/dist/commands/apikey/policies.js.map +1 -1
- package/dist/commands/apikey/rotate.d.ts.map +1 -1
- package/dist/commands/apikey/rotate.js +4 -3
- package/dist/commands/apikey/rotate.js.map +1 -1
- package/dist/commands/apikey/show.d.ts.map +1 -1
- package/dist/commands/apikey/show.js +5 -4
- package/dist/commands/apikey/show.js.map +1 -1
- package/dist/commands/audit.d.ts +2 -1
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +15 -3
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/cluster.d.ts.map +1 -1
- package/dist/commands/cluster.js +31 -14
- package/dist/commands/cluster.js.map +1 -1
- package/dist/commands/group.d.ts +2 -1
- package/dist/commands/group.d.ts.map +1 -1
- package/dist/commands/group.js +61 -39
- package/dist/commands/group.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +6 -5
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/host/index.d.ts +2 -1
- package/dist/commands/host/index.d.ts.map +1 -1
- package/dist/commands/host/index.js +22 -18
- package/dist/commands/host/index.js.map +1 -1
- package/dist/commands/kms/crud.d.ts +1 -1
- package/dist/commands/kms/crud.d.ts.map +1 -1
- package/dist/commands/kms/crud.js +6 -6
- package/dist/commands/kms/crud.js.map +1 -1
- package/dist/commands/kms/index.d.ts +2 -1
- package/dist/commands/kms/index.d.ts.map +1 -1
- package/dist/commands/kms/index.js +14 -6
- package/dist/commands/kms/index.js.map +1 -1
- package/dist/commands/kms/lifecycle.d.ts +1 -1
- package/dist/commands/kms/lifecycle.d.ts.map +1 -1
- package/dist/commands/kms/lifecycle.js +7 -7
- package/dist/commands/kms/lifecycle.js.map +1 -1
- package/dist/commands/kms/routing.d.ts +5 -0
- package/dist/commands/kms/routing.d.ts.map +1 -1
- package/dist/commands/kms/routing.js +41 -5
- package/dist/commands/kms/routing.js.map +1 -1
- package/dist/commands/policy/attachments.d.ts +9 -5
- package/dist/commands/policy/attachments.d.ts.map +1 -1
- package/dist/commands/policy/attachments.js +16 -13
- package/dist/commands/policy/attachments.js.map +1 -1
- package/dist/commands/policy/crud.d.ts +6 -5
- package/dist/commands/policy/crud.d.ts.map +1 -1
- package/dist/commands/policy/crud.js +16 -11
- package/dist/commands/policy/crud.js.map +1 -1
- package/dist/commands/policy/helpers.d.ts +16 -0
- package/dist/commands/policy/helpers.d.ts.map +1 -1
- package/dist/commands/policy/helpers.js +9 -0
- package/dist/commands/policy/helpers.js.map +1 -1
- package/dist/commands/policy/index.d.ts +2 -1
- package/dist/commands/policy/index.d.ts.map +1 -1
- package/dist/commands/policy/index.js +149 -101
- package/dist/commands/policy/index.js.map +1 -1
- package/dist/commands/policy/io.d.ts +3 -2
- package/dist/commands/policy/io.d.ts.map +1 -1
- package/dist/commands/policy/io.js +7 -5
- package/dist/commands/policy/io.js.map +1 -1
- package/dist/commands/policy/list.d.ts +6 -2
- package/dist/commands/policy/list.d.ts.map +1 -1
- package/dist/commands/policy/list.js +7 -6
- package/dist/commands/policy/list.js.map +1 -1
- package/dist/commands/quarantine.d.ts +2 -1
- package/dist/commands/quarantine.d.ts.map +1 -1
- package/dist/commands/quarantine.js +394 -339
- package/dist/commands/quarantine.js.map +1 -1
- package/dist/commands/role.d.ts +2 -1
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +92 -49
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/ssh/index.d.ts +2 -1
- package/dist/commands/ssh/index.d.ts.map +1 -1
- package/dist/commands/ssh/index.js +18 -13
- package/dist/commands/ssh/index.js.map +1 -1
- package/dist/commands/sso/crud.d.ts +1 -1
- package/dist/commands/sso/crud.d.ts.map +1 -1
- package/dist/commands/sso/crud.js +16 -16
- package/dist/commands/sso/crud.js.map +1 -1
- package/dist/commands/sso/helpers.d.ts +7 -1
- package/dist/commands/sso/helpers.d.ts.map +1 -1
- package/dist/commands/sso/helpers.js +32 -1
- package/dist/commands/sso/helpers.js.map +1 -1
- package/dist/commands/sso/index.d.ts +2 -1
- package/dist/commands/sso/index.d.ts.map +1 -1
- package/dist/commands/sso/index.js +13 -5
- package/dist/commands/sso/index.js.map +1 -1
- package/dist/commands/superadmin/accounts.d.ts +10 -0
- package/dist/commands/superadmin/accounts.d.ts.map +1 -0
- package/dist/commands/{superadmin.js → superadmin/accounts.js} +16 -15
- package/dist/commands/superadmin/accounts.js.map +1 -0
- package/dist/commands/superadmin/index.d.ts +20 -0
- package/dist/commands/superadmin/index.d.ts.map +1 -0
- package/dist/commands/superadmin/index.js +60 -0
- package/dist/commands/superadmin/index.js.map +1 -0
- package/dist/commands/user.d.ts +2 -1
- package/dist/commands/user.d.ts.map +1 -1
- package/dist/commands/user.js +26 -13
- package/dist/commands/user.js.map +1 -1
- package/dist/index.js +18 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/client/apikeys.d.ts +21 -13
- package/dist/lib/client/apikeys.d.ts.map +1 -1
- package/dist/lib/client/apikeys.js +30 -26
- package/dist/lib/client/apikeys.js.map +1 -1
- package/dist/lib/client/audit.d.ts +54 -1
- package/dist/lib/client/audit.d.ts.map +1 -1
- package/dist/lib/client/audit.js +83 -9
- package/dist/lib/client/audit.js.map +1 -1
- package/dist/lib/client/index.d.ts +37 -36
- package/dist/lib/client/index.d.ts.map +1 -1
- package/dist/lib/client/index.js +37 -36
- package/dist/lib/client/index.js.map +1 -1
- package/dist/lib/client/managed-keys.d.ts +10 -7
- package/dist/lib/client/managed-keys.d.ts.map +1 -1
- package/dist/lib/client/managed-keys.js +16 -16
- package/dist/lib/client/managed-keys.js.map +1 -1
- package/dist/lib/client/policies.d.ts +14 -10
- package/dist/lib/client/policies.d.ts.map +1 -1
- package/dist/lib/client/policies.js +22 -22
- package/dist/lib/client/policies.js.map +1 -1
- package/dist/lib/client/quarantine.d.ts +25 -9
- package/dist/lib/client/quarantine.d.ts.map +1 -1
- package/dist/lib/client/quarantine.js +44 -27
- package/dist/lib/client/quarantine.js.map +1 -1
- package/dist/lib/client/users.d.ts +30 -3
- package/dist/lib/client/users.d.ts.map +1 -1
- package/dist/lib/client/users.js +39 -15
- package/dist/lib/client/users.js.map +1 -1
- package/dist/lib/command-context.d.ts +64 -0
- package/dist/lib/command-context.d.ts.map +1 -0
- package/dist/lib/command-context.js +90 -0
- package/dist/lib/command-context.js.map +1 -0
- package/dist/lib/context-help.d.ts.map +1 -1
- package/dist/lib/context-help.js +5 -0
- package/dist/lib/context-help.js.map +1 -1
- package/dist/lib/db/health.d.ts.map +1 -1
- package/dist/lib/db/health.js +13 -4
- package/dist/lib/db/health.js.map +1 -1
- package/dist/lib/mode.d.ts +18 -4
- package/dist/lib/mode.d.ts.map +1 -1
- package/dist/lib/mode.js +13 -6
- package/dist/lib/mode.js.map +1 -1
- package/dist/tui/hooks/useApi.d.ts +14 -7
- package/dist/tui/hooks/useApi.d.ts.map +1 -1
- package/dist/tui/hooks/useApi.js.map +1 -1
- package/dist/tui/screens/Dashboard.d.ts.map +1 -1
- package/dist/tui/screens/Dashboard.js +2 -3
- package/dist/tui/screens/Dashboard.js.map +1 -1
- package/dist/types/index.d.ts +59 -12
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/commands/superadmin.d.ts +0 -3
- package/dist/commands/superadmin.d.ts.map +0 -1
- package/dist/commands/superadmin.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
+
import { applyTenantContextPatch } from './lib/command-context.js';
|
|
3
4
|
import { registerAuthCommands } from './commands/auth.js';
|
|
5
|
+
// Apply the global Commander patch that gates `--tenant` options by registration
|
|
6
|
+
// context. Must run before any command registration.
|
|
7
|
+
applyTenantContextPatch(Command.prototype);
|
|
4
8
|
import { registerHealthCommands } from './commands/health.js';
|
|
5
|
-
import { registerClusterCommands } from './commands/cluster.js';
|
|
6
|
-
import { registerTenantCommands } from './commands/tenant.js';
|
|
7
9
|
import { registerUserCommands } from './commands/user.js';
|
|
8
|
-
import { registerSuperadminCommands } from './commands/superadmin.js';
|
|
9
|
-
import { registerLockdownCommands } from './commands/lockdown.js';
|
|
10
|
+
import { registerSuperadminCommands } from './commands/superadmin/index.js';
|
|
10
11
|
import { registerQuarantineCommands } from './commands/quarantine.js';
|
|
11
12
|
import { registerAuditCommands } from './commands/audit.js';
|
|
12
13
|
import { registerEmergencyCommands } from './commands/emergency.js';
|
|
@@ -19,9 +20,7 @@ import { registerPolicyCommands } from './commands/policy.js';
|
|
|
19
20
|
import { registerPermissionsCommands } from './commands/permissions.js';
|
|
20
21
|
import { registerSecretCommands } from './commands/secret.js';
|
|
21
22
|
import { registerKmsCommands } from './commands/kms/index.js';
|
|
22
|
-
import { registerLmkCommands } from './commands/lmk.js';
|
|
23
23
|
import { registerRoleCommands } from './commands/role.js';
|
|
24
|
-
import { registerBackupCommands } from './commands/backup/index.js';
|
|
25
24
|
import { registerNotificationCommands } from './commands/notification.js';
|
|
26
25
|
import { registerTuiCommands } from './commands/tui.js';
|
|
27
26
|
import { registerSelfUpdateCommands } from './commands/self-update.js';
|
|
@@ -84,14 +83,20 @@ program
|
|
|
84
83
|
const config = getConfig();
|
|
85
84
|
profileIndicator(getActiveProfileName(), config.url);
|
|
86
85
|
});
|
|
87
|
-
// Register all command groups
|
|
86
|
+
// Register all top-level command groups (tenant context by default).
|
|
87
|
+
//
|
|
88
|
+
// In v4, the following groups moved entirely under `znvault superadmin <...>`
|
|
89
|
+
// and are no longer registered at the top level:
|
|
90
|
+
// - tenant, cluster, lockdown, lmk, backup (pure-superadmin)
|
|
91
|
+
// - superadmin account management → `superadmin accounts <...>`
|
|
92
|
+
//
|
|
93
|
+
// Dual-purpose groups (user, audit, quarantine, advisor, agent, apikey, host,
|
|
94
|
+
// kms, policy, role, sso, ssh, group) are registered here in tenant context
|
|
95
|
+
// (no --tenant flag) AND again under the superadmin namespace with
|
|
96
|
+
// `context: 'superadmin'` (--tenant accepted).
|
|
88
97
|
registerAuthCommands(program);
|
|
89
98
|
registerHealthCommands(program);
|
|
90
|
-
registerClusterCommands(program);
|
|
91
|
-
registerTenantCommands(program);
|
|
92
99
|
registerUserCommands(program);
|
|
93
|
-
registerSuperadminCommands(program);
|
|
94
|
-
registerLockdownCommands(program);
|
|
95
100
|
registerQuarantineCommands(program);
|
|
96
101
|
registerAuditCommands(program);
|
|
97
102
|
registerEmergencyCommands(program);
|
|
@@ -104,9 +109,7 @@ registerPolicyCommands(program);
|
|
|
104
109
|
registerPermissionsCommands(program);
|
|
105
110
|
registerSecretCommands(program);
|
|
106
111
|
registerKmsCommands(program);
|
|
107
|
-
registerLmkCommands(program);
|
|
108
112
|
registerRoleCommands(program);
|
|
109
|
-
registerBackupCommands(program);
|
|
110
113
|
registerNotificationCommands(program);
|
|
111
114
|
registerTuiCommands(program);
|
|
112
115
|
registerSelfUpdateCommands(program);
|
|
@@ -121,6 +124,8 @@ registerGroupCommands(program);
|
|
|
121
124
|
registerDynamicSecretsCommands(program);
|
|
122
125
|
registerSSHCommands(program);
|
|
123
126
|
registerSSHCACommands(program);
|
|
127
|
+
// Superadmin namespace (must come last so all referenced groups are loaded).
|
|
128
|
+
registerSuperadminCommands(program);
|
|
124
129
|
// Configure context-aware help (hides superadmin-only commands for regular users)
|
|
125
130
|
configureContextHelp(program);
|
|
126
131
|
// Run background update check (non-blocking)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,iFAAiF;AACjF,qDAAqD;AACrD,uBAAuB,CAAC,OAAO,CAAC,SAAqE,CAAC,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,cAAc,EACd,SAAS,EACT,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAU5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,OAAO,CAAC,UAAU,EAAE,CAAC;KACrB,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;KACzD,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;KAClE,MAAM,CAAC,SAAS,EAAE,0CAA0C,CAAC;KAC7D,MAAM,CAAC,aAAa,EAAE,kEAAkE,CAAC;KACzF,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE;IAChD,uBAAuB;IACvB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAiB,CAAC;IAE/C,4CAA4C;IAC5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,+DAA+D;IAC/D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,kDAAkD;IAClD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,gFAAgF;IAChF,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,UAAU,KAAK,YAAY,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,gBAAgB,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEL,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,iDAAiD;AACjD,+DAA+D;AAC/D,kEAAkE;AAClE,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,mEAAmE;AACnE,+CAA+C;AAC/C,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACxC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,6EAA6E;AAC7E,0BAA0B,CAAC,OAAO,CAAC,CAAC;AAEpC,kFAAkF;AAClF,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,6CAA6C;AAC7C,wBAAwB,EAAE,CAAC;AAE3B;;GAEG;AACH,SAAS,YAAY;IACnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IAEzC,IAAI,UAAU,GAA8B,MAAM,CAAC;IACnD,IAAI,QAA4B,CAAC;IACjC,IAAI,UAA8B,CAAC;IACnC,IAAI,YAAgC,CAAC;IAErC,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,UAAU,GAAG,QAAQ,CAAC;QACtB,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7B,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,IAAI,WAAW,EAAE,WAAW,EAAE,CAAC;QACpC,UAAU,GAAG,KAAK,CAAC;QACnB,2CAA2C;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAwC,CAAC;YAC7G,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,eAAe,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU,EAAE;QACrB,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,GAAG;QACpB,UAAU;QACV,QAAQ;QACR,UAAU;QACV,YAAY;KACb,CAAC;AACJ,CAAC;AAED,yBAAyB;AACzB,KAAK,UAAU,IAAI;IACjB,mDAAmD;IACnD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6DAA6D;IAC7D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;IACnC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC9C,aAAa,EACb,MAAM,EACN,SAAS,EACT,oBAAoB,CACrB,CAAC;YACF,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,WAAW;AACX,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -2,14 +2,21 @@
|
|
|
2
2
|
* API Key management client
|
|
3
3
|
*
|
|
4
4
|
* Routing policy:
|
|
5
|
-
* - When `tenantId` is supplied
|
|
5
|
+
* - When `tenantId` is supplied OR the caller passes `asSuperadmin: true`,
|
|
6
6
|
* we target `/v1/superadmin/api-keys/*` (the cross-tenant surface).
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
7
|
+
* - Otherwise, we target `/auth/api-keys/*` (tenant principal; tenant
|
|
8
|
+
* derived from JWT).
|
|
9
|
+
*
|
|
10
|
+
* The explicit `asSuperadmin` flag is required for `znvault superadmin
|
|
11
|
+
* apikey list` (no `--tenant`): the tenant surface rejects pure superadmin
|
|
12
|
+
* principals with "Superadmins must use /v1/superadmin/* routes".
|
|
9
13
|
*/
|
|
10
14
|
import { HttpClient } from './http.js';
|
|
11
15
|
import type { APIKey, CreateAPIKeyResponse, ListAPIKeysResponse, RotateAPIKeyResponse, APIKeySelfResponse, APIKeyPolicyAttachment } from '../../types/index.js';
|
|
12
16
|
import type { MessageResponse } from './types.js';
|
|
17
|
+
export interface ApiKeyScope {
|
|
18
|
+
asSuperadmin?: boolean;
|
|
19
|
+
}
|
|
13
20
|
export declare class ApiKeysClient extends HttpClient {
|
|
14
21
|
create(data: {
|
|
15
22
|
name: string;
|
|
@@ -19,19 +26,20 @@ export declare class ApiKeysClient extends HttpClient {
|
|
|
19
26
|
tenantId?: string;
|
|
20
27
|
ipAllowlist?: string[];
|
|
21
28
|
conditions?: Record<string, unknown>;
|
|
29
|
+
asSuperadmin?: boolean;
|
|
22
30
|
}): Promise<CreateAPIKeyResponse>;
|
|
23
|
-
list(tenantId?: string): Promise<ListAPIKeysResponse>;
|
|
24
|
-
getById(id: string, tenantId?: string): Promise<APIKey>;
|
|
25
|
-
deleteById(id: string, tenantId?: string): Promise<void>;
|
|
26
|
-
rotate(id: string, name?: string, tenantId?: string): Promise<RotateAPIKeyResponse>;
|
|
27
|
-
updatePermissions(id: string, permissions: string[], tenantId?: string): Promise<APIKey>;
|
|
28
|
-
updateConditions(id: string, conditions: Record<string, unknown>, tenantId?: string): Promise<APIKey>;
|
|
29
|
-
setEnabled(id: string, enabled: boolean, tenantId?: string): Promise<APIKey>;
|
|
30
|
-
getPolicies(id: string, tenantId?: string): Promise<{
|
|
31
|
+
list(tenantId?: string, opts?: ApiKeyScope): Promise<ListAPIKeysResponse>;
|
|
32
|
+
getById(id: string, tenantId?: string, opts?: ApiKeyScope): Promise<APIKey>;
|
|
33
|
+
deleteById(id: string, tenantId?: string, opts?: ApiKeyScope): Promise<void>;
|
|
34
|
+
rotate(id: string, name?: string, tenantId?: string, opts?: ApiKeyScope): Promise<RotateAPIKeyResponse>;
|
|
35
|
+
updatePermissions(id: string, permissions: string[], tenantId?: string, opts?: ApiKeyScope): Promise<APIKey>;
|
|
36
|
+
updateConditions(id: string, conditions: Record<string, unknown>, tenantId?: string, opts?: ApiKeyScope): Promise<APIKey>;
|
|
37
|
+
setEnabled(id: string, enabled: boolean, tenantId?: string, opts?: ApiKeyScope): Promise<APIKey>;
|
|
38
|
+
getPolicies(id: string, tenantId?: string, opts?: ApiKeyScope): Promise<{
|
|
31
39
|
policies: APIKeyPolicyAttachment[];
|
|
32
40
|
}>;
|
|
33
|
-
attachPolicy(keyId: string, policyId: string, tenantId?: string): Promise<MessageResponse>;
|
|
34
|
-
detachPolicy(keyId: string, policyId: string, tenantId?: string): Promise<MessageResponse>;
|
|
41
|
+
attachPolicy(keyId: string, policyId: string, tenantId?: string, opts?: ApiKeyScope): Promise<MessageResponse>;
|
|
42
|
+
detachPolicy(keyId: string, policyId: string, tenantId?: string, opts?: ApiKeyScope): Promise<MessageResponse>;
|
|
35
43
|
getSelf(): Promise<APIKeySelfResponse>;
|
|
36
44
|
rotateSelf(name?: string): Promise<RotateAPIKeyResponse & {
|
|
37
45
|
expiresInDays: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apikeys.d.ts","sourceRoot":"","sources":["../../../src/lib/client/apikeys.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"apikeys.d.ts","sourceRoot":"","sources":["../../../src/lib/client/apikeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,22 +3,26 @@
|
|
|
3
3
|
* API Key management client
|
|
4
4
|
*
|
|
5
5
|
* Routing policy:
|
|
6
|
-
* - When `tenantId` is supplied
|
|
6
|
+
* - When `tenantId` is supplied OR the caller passes `asSuperadmin: true`,
|
|
7
7
|
* we target `/v1/superadmin/api-keys/*` (the cross-tenant surface).
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
8
|
+
* - Otherwise, we target `/auth/api-keys/*` (tenant principal; tenant
|
|
9
|
+
* derived from JWT).
|
|
10
|
+
*
|
|
11
|
+
* The explicit `asSuperadmin` flag is required for `znvault superadmin
|
|
12
|
+
* apikey list` (no `--tenant`): the tenant surface rejects pure superadmin
|
|
13
|
+
* principals with "Superadmins must use /v1/superadmin/* routes".
|
|
10
14
|
*/
|
|
11
15
|
import { HttpClient } from './http.js';
|
|
12
16
|
const TENANT_BASE = '/auth/api-keys';
|
|
13
17
|
const ADMIN_BASE = '/v1/superadmin/api-keys';
|
|
14
|
-
function basePath(tenantId) {
|
|
15
|
-
return tenantId ? ADMIN_BASE : TENANT_BASE;
|
|
18
|
+
function basePath(tenantId, asSuperadmin) {
|
|
19
|
+
return tenantId || asSuperadmin ? ADMIN_BASE : TENANT_BASE;
|
|
16
20
|
}
|
|
17
21
|
export class ApiKeysClient extends HttpClient {
|
|
18
22
|
async create(data) {
|
|
19
23
|
return this.request({
|
|
20
24
|
method: 'POST',
|
|
21
|
-
path: basePath(data.tenantId),
|
|
25
|
+
path: basePath(data.tenantId, data.asSuperadmin),
|
|
22
26
|
query: data.tenantId ? { tenantId: data.tenantId } : undefined,
|
|
23
27
|
body: {
|
|
24
28
|
name: data.name,
|
|
@@ -30,80 +34,80 @@ export class ApiKeysClient extends HttpClient {
|
|
|
30
34
|
},
|
|
31
35
|
});
|
|
32
36
|
}
|
|
33
|
-
async list(tenantId) {
|
|
37
|
+
async list(tenantId, opts) {
|
|
34
38
|
return this.request({
|
|
35
39
|
method: 'GET',
|
|
36
|
-
path: basePath(tenantId),
|
|
40
|
+
path: basePath(tenantId, opts?.asSuperadmin),
|
|
37
41
|
query: tenantId ? { tenantId } : undefined,
|
|
38
42
|
});
|
|
39
43
|
}
|
|
40
|
-
async getById(id, tenantId) {
|
|
44
|
+
async getById(id, tenantId, opts) {
|
|
41
45
|
return this.request({
|
|
42
46
|
method: 'GET',
|
|
43
|
-
path: `${basePath(tenantId)}/${id}`,
|
|
47
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}`,
|
|
44
48
|
query: tenantId ? { tenantId } : undefined,
|
|
45
49
|
});
|
|
46
50
|
}
|
|
47
|
-
async deleteById(id, tenantId) {
|
|
51
|
+
async deleteById(id, tenantId, opts) {
|
|
48
52
|
await this.request({
|
|
49
53
|
method: 'DELETE',
|
|
50
|
-
path: `${basePath(tenantId)}/${id}`,
|
|
54
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}`,
|
|
51
55
|
query: tenantId ? { tenantId } : undefined,
|
|
52
56
|
});
|
|
53
57
|
}
|
|
54
|
-
async rotate(id, name, tenantId) {
|
|
58
|
+
async rotate(id, name, tenantId, opts) {
|
|
55
59
|
return this.request({
|
|
56
60
|
method: 'POST',
|
|
57
|
-
path: `${basePath(tenantId)}/${id}/rotate`,
|
|
61
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}/rotate`,
|
|
58
62
|
query: tenantId ? { tenantId } : undefined,
|
|
59
63
|
body: name ? { name } : {},
|
|
60
64
|
});
|
|
61
65
|
}
|
|
62
|
-
async updatePermissions(id, permissions, tenantId) {
|
|
66
|
+
async updatePermissions(id, permissions, tenantId, opts) {
|
|
63
67
|
const response = await this.request({
|
|
64
68
|
method: 'PATCH',
|
|
65
|
-
path: `${basePath(tenantId)}/${id}/permissions`,
|
|
69
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}/permissions`,
|
|
66
70
|
query: tenantId ? { tenantId } : undefined,
|
|
67
71
|
body: { permissions },
|
|
68
72
|
});
|
|
69
73
|
return response.apiKey;
|
|
70
74
|
}
|
|
71
|
-
async updateConditions(id, conditions, tenantId) {
|
|
75
|
+
async updateConditions(id, conditions, tenantId, opts) {
|
|
72
76
|
const response = await this.request({
|
|
73
77
|
method: 'PATCH',
|
|
74
|
-
path: `${basePath(tenantId)}/${id}/conditions`,
|
|
78
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}/conditions`,
|
|
75
79
|
query: tenantId ? { tenantId } : undefined,
|
|
76
80
|
body: { conditions },
|
|
77
81
|
});
|
|
78
82
|
return response.apiKey;
|
|
79
83
|
}
|
|
80
|
-
async setEnabled(id, enabled, tenantId) {
|
|
84
|
+
async setEnabled(id, enabled, tenantId, opts) {
|
|
81
85
|
const response = await this.request({
|
|
82
86
|
method: 'PATCH',
|
|
83
|
-
path: `${basePath(tenantId)}/${id}/enabled`,
|
|
87
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}/enabled`,
|
|
84
88
|
query: tenantId ? { tenantId } : undefined,
|
|
85
89
|
body: { enabled },
|
|
86
90
|
});
|
|
87
91
|
return response.apiKey;
|
|
88
92
|
}
|
|
89
|
-
async getPolicies(id, tenantId) {
|
|
93
|
+
async getPolicies(id, tenantId, opts) {
|
|
90
94
|
return this.request({
|
|
91
95
|
method: 'GET',
|
|
92
|
-
path: `${basePath(tenantId)}/${id}/policies`,
|
|
96
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${id}/policies`,
|
|
93
97
|
query: tenantId ? { tenantId } : undefined,
|
|
94
98
|
});
|
|
95
99
|
}
|
|
96
|
-
async attachPolicy(keyId, policyId, tenantId) {
|
|
100
|
+
async attachPolicy(keyId, policyId, tenantId, opts) {
|
|
97
101
|
return this.request({
|
|
98
102
|
method: 'POST',
|
|
99
|
-
path: `${basePath(tenantId)}/${keyId}/policies/${policyId}`,
|
|
103
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${keyId}/policies/${policyId}`,
|
|
100
104
|
query: tenantId ? { tenantId } : undefined,
|
|
101
105
|
});
|
|
102
106
|
}
|
|
103
|
-
async detachPolicy(keyId, policyId, tenantId) {
|
|
107
|
+
async detachPolicy(keyId, policyId, tenantId, opts) {
|
|
104
108
|
return this.request({
|
|
105
109
|
method: 'DELETE',
|
|
106
|
-
path: `${basePath(tenantId)}/${keyId}/policies/${policyId}`,
|
|
110
|
+
path: `${basePath(tenantId, opts?.asSuperadmin)}/${keyId}/policies/${policyId}`,
|
|
107
111
|
query: tenantId ? { tenantId } : undefined,
|
|
108
112
|
});
|
|
109
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apikeys.js","sourceRoot":"","sources":["../../../src/lib/client/apikeys.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC
|
|
1
|
+
{"version":3,"file":"apikeys.js","sourceRoot":"","sources":["../../../src/lib/client/apikeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Audit log client
|
|
3
|
+
*
|
|
4
|
+
* Routing:
|
|
5
|
+
* - `asSuperadmin: true` → `/v1/superadmin/audit*` (cross-tenant; required
|
|
6
|
+
* when the caller is a superadmin under `znvault superadmin audit`).
|
|
7
|
+
* - otherwise → `/v1/audit*` (tenant-scoped; tenant derived from JWT).
|
|
8
|
+
*
|
|
9
|
+
* Superadmins MUST use the `/v1/superadmin/*` surface; the tenant-scoped
|
|
10
|
+
* surface rejects superadmin principals with
|
|
11
|
+
* "Superadmins must use /v1/superadmin/* routes".
|
|
12
|
+
*
|
|
13
|
+
* Note: the tenant and superadmin namespaces use different query schemas:
|
|
14
|
+
* - tenant `/v1/audit`: snake_case (`client_cn`, `start_date`, `end_date`)
|
|
15
|
+
* - admin `/v1/superadmin/audit`: camelCase (`username`, `startDate`,
|
|
16
|
+
* `endDate`); also supports `tenantId` filter.
|
|
17
|
+
* The admin namespace exposes only `GET /v1/superadmin/audit` (list) and
|
|
18
|
+
* `GET /v1/superadmin/audit/stats`. There is no superadmin /verify or
|
|
19
|
+
* /export endpoint — so for those operations the client routes through the
|
|
20
|
+
* superadmin list path with an optional `tenantId` filter when in admin
|
|
21
|
+
* mode, and through the tenant `/v1/audit/verify` & `/v1/audit/export`
|
|
22
|
+
* routes otherwise.
|
|
3
23
|
*/
|
|
4
24
|
import { HttpClient } from './http.js';
|
|
5
25
|
import type { AuditEntry, AuditVerifyResult } from '../../types/index.js';
|
|
26
|
+
export interface AuditScopeOptions {
|
|
27
|
+
asSuperadmin?: boolean;
|
|
28
|
+
}
|
|
6
29
|
export declare class AuditClient extends HttpClient {
|
|
7
30
|
list(options?: {
|
|
8
31
|
user?: string;
|
|
@@ -10,12 +33,42 @@ export declare class AuditClient extends HttpClient {
|
|
|
10
33
|
startDate?: string;
|
|
11
34
|
endDate?: string;
|
|
12
35
|
limit?: number;
|
|
36
|
+
tenantId?: string;
|
|
37
|
+
asSuperadmin?: boolean;
|
|
13
38
|
}): Promise<AuditEntry[]>;
|
|
14
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Verify the HMAC chain integrity of audit logs.
|
|
41
|
+
*
|
|
42
|
+
* Only the tenant-scoped surface exposes `/v1/audit/verify`. When called
|
|
43
|
+
* with `asSuperadmin: true`, the request still targets `/v1/audit/verify`
|
|
44
|
+
* which will reject a pure superadmin principal — surface that error to
|
|
45
|
+
* the caller rather than silently no-op.
|
|
46
|
+
*/
|
|
47
|
+
verifyChain(_opts?: AuditScopeOptions): Promise<AuditVerifyResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Export audit logs.
|
|
50
|
+
*
|
|
51
|
+
* - In tenant mode, hits `/v1/audit/export` (CSV/JSON download).
|
|
52
|
+
* - In superadmin mode, the server only exposes `/v1/superadmin/audit`
|
|
53
|
+
* (list) — there is no dedicated export endpoint. We hit the list
|
|
54
|
+
* endpoint with a high `limit` so the caller can still serialize the
|
|
55
|
+
* resulting JSON to disk. CSV is not supported in admin mode.
|
|
56
|
+
*/
|
|
15
57
|
export(options?: {
|
|
16
58
|
format?: 'json' | 'csv';
|
|
17
59
|
startDate?: string;
|
|
18
60
|
endDate?: string;
|
|
61
|
+
tenantId?: string;
|
|
62
|
+
asSuperadmin?: boolean;
|
|
19
63
|
}): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Audit statistics summary.
|
|
66
|
+
*
|
|
67
|
+
* Available on both tenant (`/v1/audit/stats`) and admin
|
|
68
|
+
* (`/v1/superadmin/audit/stats`) surfaces.
|
|
69
|
+
*/
|
|
70
|
+
getStats(opts?: AuditScopeOptions & {
|
|
71
|
+
tenantId?: string;
|
|
72
|
+
}): Promise<unknown>;
|
|
20
73
|
}
|
|
21
74
|
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/lib/client/audit.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/lib/client/audit.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAK9B,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAY,SAAQ,UAAU;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BzB;;;;;;;OAOG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOxE;;;;;;;;OAQG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE;QACrB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BnB;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAOnF"}
|
package/dist/lib/client/audit.js
CHANGED
|
@@ -1,40 +1,114 @@
|
|
|
1
1
|
// Path: src/lib/client/audit.ts
|
|
2
2
|
/**
|
|
3
3
|
* Audit log client
|
|
4
|
+
*
|
|
5
|
+
* Routing:
|
|
6
|
+
* - `asSuperadmin: true` → `/v1/superadmin/audit*` (cross-tenant; required
|
|
7
|
+
* when the caller is a superadmin under `znvault superadmin audit`).
|
|
8
|
+
* - otherwise → `/v1/audit*` (tenant-scoped; tenant derived from JWT).
|
|
9
|
+
*
|
|
10
|
+
* Superadmins MUST use the `/v1/superadmin/*` surface; the tenant-scoped
|
|
11
|
+
* surface rejects superadmin principals with
|
|
12
|
+
* "Superadmins must use /v1/superadmin/* routes".
|
|
13
|
+
*
|
|
14
|
+
* Note: the tenant and superadmin namespaces use different query schemas:
|
|
15
|
+
* - tenant `/v1/audit`: snake_case (`client_cn`, `start_date`, `end_date`)
|
|
16
|
+
* - admin `/v1/superadmin/audit`: camelCase (`username`, `startDate`,
|
|
17
|
+
* `endDate`); also supports `tenantId` filter.
|
|
18
|
+
* The admin namespace exposes only `GET /v1/superadmin/audit` (list) and
|
|
19
|
+
* `GET /v1/superadmin/audit/stats`. There is no superadmin /verify or
|
|
20
|
+
* /export endpoint — so for those operations the client routes through the
|
|
21
|
+
* superadmin list path with an optional `tenantId` filter when in admin
|
|
22
|
+
* mode, and through the tenant `/v1/audit/verify` & `/v1/audit/export`
|
|
23
|
+
* routes otherwise.
|
|
4
24
|
*/
|
|
5
25
|
import { HttpClient } from './http.js';
|
|
26
|
+
const TENANT_BASE = '/v1/audit';
|
|
27
|
+
const ADMIN_BASE = '/v1/superadmin/audit';
|
|
6
28
|
export class AuditClient extends HttpClient {
|
|
7
29
|
async list(options) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
30
|
+
const query = options?.asSuperadmin
|
|
31
|
+
? {
|
|
32
|
+
username: options.user,
|
|
33
|
+
action: options.action,
|
|
34
|
+
startDate: options.startDate,
|
|
35
|
+
endDate: options.endDate,
|
|
36
|
+
limit: options.limit ?? 100,
|
|
37
|
+
tenantId: options.tenantId,
|
|
38
|
+
}
|
|
39
|
+
: {
|
|
12
40
|
client_cn: options?.user,
|
|
13
41
|
action: options?.action,
|
|
14
42
|
start_date: options?.startDate,
|
|
15
43
|
end_date: options?.endDate,
|
|
16
44
|
limit: options?.limit ?? 100,
|
|
17
|
-
}
|
|
45
|
+
};
|
|
46
|
+
const response = await this.request({
|
|
47
|
+
method: 'GET',
|
|
48
|
+
path: options?.asSuperadmin ? ADMIN_BASE : TENANT_BASE,
|
|
49
|
+
query,
|
|
18
50
|
});
|
|
19
51
|
return response.items;
|
|
20
52
|
}
|
|
21
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Verify the HMAC chain integrity of audit logs.
|
|
55
|
+
*
|
|
56
|
+
* Only the tenant-scoped surface exposes `/v1/audit/verify`. When called
|
|
57
|
+
* with `asSuperadmin: true`, the request still targets `/v1/audit/verify`
|
|
58
|
+
* which will reject a pure superadmin principal — surface that error to
|
|
59
|
+
* the caller rather than silently no-op.
|
|
60
|
+
*/
|
|
61
|
+
async verifyChain(_opts) {
|
|
22
62
|
return this.request({
|
|
23
63
|
method: 'GET',
|
|
24
|
-
path:
|
|
64
|
+
path: `${TENANT_BASE}/verify`,
|
|
25
65
|
});
|
|
26
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Export audit logs.
|
|
69
|
+
*
|
|
70
|
+
* - In tenant mode, hits `/v1/audit/export` (CSV/JSON download).
|
|
71
|
+
* - In superadmin mode, the server only exposes `/v1/superadmin/audit`
|
|
72
|
+
* (list) — there is no dedicated export endpoint. We hit the list
|
|
73
|
+
* endpoint with a high `limit` so the caller can still serialize the
|
|
74
|
+
* resulting JSON to disk. CSV is not supported in admin mode.
|
|
75
|
+
*/
|
|
27
76
|
async export(options) {
|
|
77
|
+
if (options?.asSuperadmin) {
|
|
78
|
+
const response = await this.request({
|
|
79
|
+
method: 'GET',
|
|
80
|
+
path: ADMIN_BASE,
|
|
81
|
+
query: {
|
|
82
|
+
startDate: options.startDate,
|
|
83
|
+
endDate: options.endDate,
|
|
84
|
+
tenantId: options.tenantId,
|
|
85
|
+
limit: 10000,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
return JSON.stringify(response.items);
|
|
89
|
+
}
|
|
28
90
|
return this.request({
|
|
29
91
|
method: 'GET',
|
|
30
|
-
path:
|
|
92
|
+
path: `${TENANT_BASE}/export`,
|
|
31
93
|
query: {
|
|
32
94
|
format: options?.format ?? 'json',
|
|
33
95
|
start_date: options?.startDate,
|
|
34
96
|
end_date: options?.endDate,
|
|
35
|
-
limit: 10000,
|
|
36
97
|
},
|
|
37
98
|
});
|
|
38
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Audit statistics summary.
|
|
102
|
+
*
|
|
103
|
+
* Available on both tenant (`/v1/audit/stats`) and admin
|
|
104
|
+
* (`/v1/superadmin/audit/stats`) surfaces.
|
|
105
|
+
*/
|
|
106
|
+
async getStats(opts) {
|
|
107
|
+
return this.request({
|
|
108
|
+
method: 'GET',
|
|
109
|
+
path: opts?.asSuperadmin ? `${ADMIN_BASE}/stats` : `${TENANT_BASE}/stats`,
|
|
110
|
+
query: opts?.tenantId ? { tenantId: opts.tenantId } : undefined,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
39
113
|
}
|
|
40
114
|
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/lib/client/audit.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/lib/client/audit.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAM1C,MAAM,OAAO,WAAY,SAAQ,UAAU;IACzC,KAAK,CAAC,IAAI,CAAC,OAQV;QACC,MAAM,KAAK,GAA0D,OAAO,EAAE,YAAY;YACxF,CAAC,CAAC;gBACE,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG;gBAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B;YACH,CAAC,CAAC;gBACE,SAAS,EAAE,OAAO,EAAE,IAAI;gBACxB,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,UAAU,EAAE,OAAO,EAAE,SAAS;gBAC9B,QAAQ,EAAE,OAAO,EAAE,OAAO;gBAC1B,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG;aAC7B,CAAC;QAEN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgC;YACjE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;YACtD,KAAK;SACN,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,KAAyB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAoB;YACrC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,WAAW,SAAS;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CAAC,OAMZ;QACC,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgC;gBACjE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE;oBACL,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,KAAK,EAAE,KAAK;iBACb;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAS;YAC1B,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,WAAW,SAAS;YAC7B,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,MAAM;gBACjC,UAAU,EAAE,OAAO,EAAE,SAAS;gBAC9B,QAAQ,EAAE,OAAO,EAAE,OAAO;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAgD;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAU;YAC3B,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,QAAQ;YACzE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SAChE,CAAC,CAAC;IACL,CAAC;CACF"}
|