You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/api-reference.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# API Reference
2
2
3
-
Complete Python SDK for qp-vault v0.13.0.
3
+
Complete Python SDK for qp-vault v0.14.0.
4
4
5
5
## Constructor
6
6
@@ -20,7 +20,11 @@ Vault(
20
20
)
21
21
```
22
22
23
-
<!-- VERIFIED: vault.py:132-145 -->
23
+
When `tenant_id` is set, the vault enforces tenant isolation: operations auto-inject the locked tenant, and operations with a mismatched `tenant_id` raise `VaultError`.
24
+
25
+
When `role` is set, all operations are checked against the RBAC permission matrix. Operations exceeding the role's permissions raise `VaultError` with code `VAULT_700`.
`GET /health` and `GET /status` responses are cached with a configurable TTL (default 30 seconds). The cache is invalidated on any write operation (add, update, delete).
105
+
106
+
Configure via `VaultConfig(health_cache_ttl_seconds=60)`.
107
+
108
+
<!-- VERIFIED: vault.py:947-955 — health cache -->
109
+
<!-- VERIFIED: vault.py:1026-1031 — status cache -->
Content is truncated to **500KB** before regex scanning to prevent catastrophic backtracking (ReDoS). Full content is still stored and indexed; only the scan input is bounded. Patterns are pre-compiled for validation before use.
@@ -60,7 +61,9 @@ All queries use parameterized placeholders (`?` for SQLite, `$N` for PostgreSQL)
60
61
61
62
## Plugin Security
62
63
63
-
Plugins loaded from `plugins_dir` are verified against a `manifest.json` containing SHA3-256 hashes before execution. Hash mismatches are logged and the plugin is skipped.
64
+
Plugins loaded from `plugins_dir` require a `manifest.json` (SHA3-256 hashes) by default. Without a manifest, the entire directory is skipped. Files not listed in the manifest are rejected. Hash mismatches are logged and the plugin is skipped.
0 commit comments