pub enum VaultOp {
Show 45 variants
VaultCreate {
master_password: Zeroizing<String>,
},
VaultStatus,
EntryAdd {
entry: ServiceEntry,
},
EntryGet {
entry_id: i64,
},
EntryList,
EntryUpdate {
entry_id: i64,
entry: ServiceEntry,
},
EntryDelete {
entry_id: i64,
},
TotpAdd {
entry_id: i64,
secret: Zeroizing<String>,
algorithm: Option<String>,
digits: Option<u8>,
period: Option<u32>,
issuer: Option<String>,
account_name: Option<String>,
},
TotpCode {
entry_id: i64,
},
TotpMetadata {
entry_id: i64,
},
TotpRemove {
entry_id: i64,
},
SshKeyAdd {
name: String,
comment: Option<String>,
key_type: String,
public_key: String,
private_key: Zeroizing<String>,
fingerprint: String,
},
SshKeyList,
SshKeyGet {
key_id: i64,
include_private: bool,
},
SshKeyDelete {
key_id: i64,
},
RegistryOverview {
include_strength: bool,
},
RegistrySweep,
EntityList,
EntityAdd {
name: String,
kind: String,
criticality: String,
notes: Option<String>,
rotation_interval_days: Option<i64>,
},
EntityDelete {
name: String,
},
EntryAssign {
entry_id: i64,
entity: String,
label: Option<String>,
},
EntryUnassign {
entry_id: i64,
},
EntryMarkRotated {
entry_id: i64,
},
EntrySetExpiresAt {
entry_id: i64,
expires_at: Option<i64>,
},
HealthReport,
AuditVerify,
BiometricStatusGet,
BiometricEnable {
master_password: Zeroizing<String>,
},
BiometricDisable,
ExportAll,
ImportEntries {
entries: Vec<ServiceEntry>,
},
SyncInit {
relay_url: String,
device_name: Option<String>,
},
SyncDisable,
SyncDeviceList,
SyncDeviceRevoke {
device_id: String,
},
SyncStatus,
SyncNow,
SyncDeadLetterList,
SyncMigrateClaim,
SyncMigrateAuthoritative {
new_relay_vault: String,
},
SyncConflictList,
SyncConflictResolve {
object_id: String,
take_remote: bool,
},
SyncDeadLetterPurge {
server_sequence: Option<i64>,
},
SyncPairStart,
SyncPairJoin {
relay_url: String,
code: String,
salt: String,
},
}Expand description
One application-service request.
This is the single call shape for vault operations. Most ops execute
against the live vault on the blocking pool via
sentinelpass_core::daemon::service::LiveVaultService; the daemon’s
async dispatcher owns SyncNow (relay HTTP). SyncPairStart /
SyncPairJoin are NOT served by the daemon in this release: pairing is
an exclusive OFFLINE maintenance flow run by the CLI under the
maintenance lock (pair-join creates local vaults — creation the daemon’s
live surface must not perform); over IPC they fail with the typed
op_not_served code.
Debug is hand-written and redacts every field: this enum carries
master passwords, TOTP seeds, and private keys, and derived Debug would
print them into logs or panic payloads (core sets the same redaction
convention).
Variants§
VaultCreate
Create a vault. Valid only while the daemon is in maintenance mode (no vault exists); the daemon holds the exclusive maintenance lock (WBS-501/503).
VaultStatus
EntryAdd
Fields
entry: ServiceEntryEntryGet
EntryList
EntryUpdate
EntryDelete
TotpAdd
The secret is RAW BASE32 only: otpauth:// URI parsing stays
client-side (both the CLI and the UI parse the URI themselves and
send the derived fields).
Fields
TotpCode
TotpMetadata
TotpRemove
SshKeyAdd
Fields
SshKeyList
SshKeyGet
SshKeyDelete
RegistryOverview
include_strength: true decrypts and scores every eligible secret —
bounded by the 30s session deadline on very large vaults (stage-6
review F5: documented cap).
RegistrySweep
EntityList
EntityAdd
Fields
EntityDelete
EntryAssign
EntryUnassign
EntryMarkRotated
EntrySetExpiresAt
HealthReport
Vault password health report (summary + per-entry findings), as JSON. DECRYPTS EVERY ENTRY server-side — the 30s session deadline bounds the response on very large vaults (stage-6 review F5: documented cap).
AuditVerify
Verify the audit hash chain (WBS-415), as JSON.
BiometricStatusGet
BiometricEnable
BiometricDisable
ExportAll
Decrypted dump of every EXPORTABLE entry (generic passwords and API
keys — passkey_reference entries are excluded, matching every
built-in export path). The client renders JSON/CSV/KeePass locally.
ImportEntries
Bulk insert from an import file parse. Returns created ids.
Fields
entries: Vec<ServiceEntry>SyncInit
SyncDisable
SyncDeviceList
SyncDeviceRevoke
SyncStatus
Sync status (local metadata read).
SyncNow
Run a full push+pull cycle. Daemon-async: the sync engine awaits relay HTTP, so the daemon’s async dispatcher executes this op.
SyncDeadLetterList
List dead-lettered sync mutations (metadata only; WBS-607).
SyncMigrateClaim
Claim the AUTHORITATIVE migration for the configured origin vault (WBS-624): the relay mints a fresh vault and records the claim. A second claim for the same origin is refused. Requires the relay network (daemon-async like SyncNow).
SyncMigrateAuthoritative
Re-baseline THIS device as the migration authority for the given fresh relay vault: resets every object’s sync bookkeeping so the full local baseline re-uploads as fresh creates. Local vault write.
SyncConflictList
List stored concurrent-edit conflicts (metadata only; WBS-611 / SR-SYNC-005): the payload VALUES require an unlocked vault and are not part of this listing.
SyncConflictResolve
Resolve a stored concurrent-edit conflict: take_remote = false
keeps the local content (re-versioned above the peer so the next
push lands); true applies the stored alternative. Requires the
vault unlocked (take-remote decrypts and re-seals).
SyncDeadLetterPurge
Purge dead-lettered sync mutations: one by server sequence, or all
when server_sequence is None. The fail-closed dead-letter bound
requires a supported purge path (raw SQL against the daemon-owned
vault is not one).
SyncPairStart
Upload this vault’s bootstrap under a fresh pairing code. Not served over IPC in this release — the CLI runs pairing as exclusive offline maintenance under the vault lock.
SyncPairJoin
Fetch a bootstrap with a pairing code and adopt it (creating the local vault when none exists). Not served over IPC in this release — the CLI runs pairing as exclusive offline maintenance under the vault lock.