Secret Schema
Felder
Secret Schema
Zero-knowledge encrypted secret entity (v2 — ADR 0084 + ADR 0089). The server never sees plaintext title, tags, notes, or payload — only IDs, ciphertext, and HMAC-trigram blind index entries.
encryptedTitle
AES-256-GCM encrypted title, base64url-encoded.
titleIv
12-byte IV for title encryption, base64url-encoded.
encryptedTags
Encrypted blob of tags (JSON-serialized array). Plaintext tags MUST NOT be sent.
ciphertext
AES-256-GCM ciphertext of JSON.stringify(tags), base64url.
iv
12-byte IV, base64url.
titleIndex
Per-scope HMAC-trigram blind index for searchable encryption (ADR 0089). Empty array allowed only when no searchable text was provided at write time.
titleIndexVersion
SEARCH_INDEX_VERSION at write time. Bumped when normalisation rules change; client lazy-reindexes on save.
secretType
Type-key (plaintext OK — needed for UI grouping / icons; on its own it does not reveal secret content).
assetId
Linked asset UUID
partyId
Linked party/customer UUID. NOT a plain link — this field selects the CRYPTO SCOPE: it switches the client to customer-key encryption (`wrappedCustomerKey`), puts the blind index under the customer-SSK, and opens the row to every holder of that customer key in `buildVaultSecretVisibilityFilter`. Only ever set it together with a matching re-encryption. To express "belongs to customer X" for filtering, use `assetPartyId`.
assetPartyId
Denormalized `asset.partyId` of the linked asset — assignment/filtering only. Carries NO cryptographic meaning and is deliberately absent from the vault visibility filter. Server-derived; never trusted from the client.
contractId
Linked contract UUID
encryptedPayload
AES-256-GCM encrypted payload, base64url-encoded
payloadIv
12-byte IV for AES-256-GCM, base64url-encoded
wrappedKeys
Wrapped DEK entries for individually authorized users
userId
User who can decrypt this secret
wrappedDek
ECDH-wrapped DEK, base64url-encoded
ephemeralPublicKey
Ephemeral ECDH public key used for wrapping, JWK base64url-encoded
wrappedTeamKeys
Wrapped DEK entries for team-level access
teamId
Org unit (team) ID
wrappedDek
Team-key-wrapped DEK, base64url-encoded
teamKeyVersion
Version of the team key used for wrapping
tenantWideAccess
Whether this secret is accessible to all tenant members
wrappedTenantKey
Tenant-key-wrapped DEK, base64url-encoded
tenantKeyVersion
Version of the tenant key used for wrapping
folderId
Vault folder this secret belongs to
secretTypeId
Reference to VaultSecretType for custom type definitions
wrappedFolderKey
DEK wrapped with Folder Key (AES-KW), base64url
folderKeyVersion
Version of the folder key used for wrapping
wrappedCustomerKey
DEK wrapped with Customer Key (AES-KW), base64url
customerKeyVersion
Version of the customer key used for wrapping
importSource
Key of the import source this secret was created by (e.g. 'tanss', 'lastpass'). Absent for hand-created secrets.
importedAt
When this secret was written by the import pipeline.
importConfirmedAt
When a user confirmed the imported values are correct. Null/absent on an imported secret means the confirmation panel is still pending.
importConfirmedBy
Internal user UUID who confirmed the import (users._id, not the auth id).
needsRewrap
Flagged after key rotation; triggers lazy re-wrap on next access
lastRewrapAt
Timestamp of last successful re-wrap
attachments
Zero-knowledge encrypted file attachments stored in S3
fileId
Unique file identifier
encryptedName
AES-256-GCM encrypted filename, base64url-encoded
nameIv
12-byte IV for filename encryption, base64url-encoded
sizeBytes
Encrypted file size in bytes
fileIv
12-byte IV for file content encryption, base64url-encoded
uploadedAt
When the file was uploaded
uploadedBy
User who uploaded the file
Keine Felder passen zum Filter.
Standard-Endpoints
Diese Resource folgt dem generischen CRUD-Vertrag der Plattform. Lesen Sie die Konventionen für Pagination, Idempotenz, Optimistic Locking und Audit. Die wichtigsten Endpoints:
GET /api/v1/secrets— Liste, paginiert + filterbarGET /api/v1/secrets/<id>— Einzelne EntityPOST /api/v1/secrets— AnlegenPATCH /api/v1/secrets/<id>— Teil-UpdateDELETE /api/v1/secrets/<id>— Soft-DeleteGET /api/v1/secrets/<id>/timeline— Audit + Aktivitäten