Shared Folder - Without sync-down

This page details the process to share a shared folder without needing to sync down the vault first.

Overview

This flow is appropriate when the app does not sync Keeper vault data into a local SDK instance (sync_down / VaultOnline) and instead uses authenticated API calls directly after login.

Use this path when you need to read shared folder metadata, invite or update a user, remove a user, work with teams, or load record payloads by UID as soon as IAuthentication is available.

For a full synced vault, shared-folder modeling as in VaultOnline, and the broadest integration surface, prefer IVaultSharedFolder / VaultOnline instead.

DotNet SDK

Structures and classes

Type
Purpose

ISharedFolderSkipSyncDown

Interface for dependency injection and testing.

SharedFolderSkipSyncDown

Static entry points (GetSharedFolderAsync, PutUserToSharedFolderAsync, RemoveUserFromSharedFolderAsync).

SharedFolderSkipSyncDown.SharedFolderSkipSyncDownClient

Default implementation of ISharedFolderSkipSyncDown.

Use this path when your app needs to read shared folder metadata, invite or update a user, or remove a user from a shared folder as soon as authentication with keeper is completed.

For full vault integration (synced tree, teams, etc.), use IVaultSharedFolder / VaultOnline instead.

Scope and limitations

  • Shared folder skip-sync targets apps that do not run a full sync_down / VaultOnline tree. It supports selected shared-folder and record operations right after authentication.

  • Users: Add, update, or remove individual users (email), as in the previous release.

  • Teams: You can add or remove a team from a shared folder and list teams available for sharing, without loading the vault.

  • Records: You can list record UIDs linked to a shared folder and fetch and decrypt records without syncing the vault.

Supported Functions

Shared folder — supported functions

GetSharedFolderAsync

Loads one shared folder by UID. The request includes shared folders while returning shared folder along with user flows, team flows, and record UID listing.

Returns null if the session cannot access the folder or the response has no shared folder entries.

GetRecordUidsFromSharedFolderAsync

Returns distinct record UIDs attached to the folder. Empty if the folder is unavailable or has no records.

PutUserToSharedFolderAsync / RemoveUserFromSharedFolderAsync

Add or Update a user, or Remove a user. Optional IUserShareOptions (e.g. SharedFolderUserOptions) controls permissions and expiration.

GetAvailableTeamsForShareAsync

Returns teams the current user may share with, using the same approach - without loading the vault.

GetTeamUidFromNameAsync

Resolves a team display name to a team UID when the name is unique. Returns null if none match; throws if multiple teams match (use an explicit Team Name).

PutTeamToSharedFolderAsync / RemoveTeamFromSharedFolderAsync

Add or update a team to the shared folder, or remove it. Pass a team UID or, when it uniquely identifies a team, a display name. GetTeamUidFromNameAsync helps when you need an explicit UID. Optional IUserShareOptions applies where supported.

GetRecordKeysFromSharedFolderAsync(auth, sharedFolderUid)

Loads decrypted record keys for every record linked to that shared folder.

record UID → record key. Empty if the folder cannot be read or no keys are available.

Record payloads without vault sync — RecordSkipSyncDown

Use when you already have record UIDs (for example from GetRecordUidsFromSharedFolderAsync) and want decrypted KeeperRecord instances without a full vault sync.

GetRecordsAsync

Retrieves record data of the given record uids.

RecordDetailsInclude matches the API (default DATA_PLUS_SHARE). Use DataOnly or ShareOnly for a narrower payload.

RecordDetailsSkipSyncResult:

Member
Meaning

Records

Successfully decrypted records

NoPermissionRecordUids

From noPermissionRecordUid

FailedRecordUids

Rows returned but decrypt/load failed (e.g. unsupported recordKeyType)

InvalidRecordUids

Caller strings that could not be decoded to binary record UIDs and were not sent

GetOwnedRecordsAsync(auth, recordUids, include?)

Fetches record details for the given UIDs and decrypts each record using the key supplied with that record in the response.

RecordDetailsSkipSyncResult — decrypted records plus lists of UIDs with no permission, failed decrypt/load, or invalid UID strings.

Typical pattern when UIDs come from a shared folder listing:

GetSharedFolderRecordsAsync(auth, sharedFolderUid, include?)

Resolves keys from the shared folder, then loads and decrypts all records attached to that folder.

Same RecordDetailsSkipSyncResult as above.

GetRecordsAsync (obsolete)

Does: Same as GetOwnedRecordsAsync.

Result: Same as GetOwnedRecordsAsync.

Usage: Prefer GetOwnedRecordsAsync or GetSharedFolderRecordsAsync explicitly.

RecordDetailsSkipSyncResult

Property
What you get

Records

Decrypted KeeperRecord instances that succeeded.

NoPermissionRecordUids

UIDs the server reported as no permission.

FailedRecordUids

UIDs that were returned but could not be decrypted or loaded.

InvalidRecordUids

UIDs you passed in that were not valid record UID strings.


Sample helpers (Sample/ShareFolderSkipSyncExample)

Function
Does
Typical call

ListSharedFolderRecordsAsync

Prints titles for records decrypted via GetSharedFolderRecordsAsync.

await ListSharedFolderRecordsAsync(auth, sharedFolderUid);

ListSharedFolderRecordsOwnedAsync

Prints titles for records decrypted via UIDs from the folder + GetOwnedRecordsAsync.

await ListSharedFolderRecordsOwnedAsync(auth, sharedFolderUid);

PutUserToSharedFolder / RemoveUserFromSharedFolder

Adds or removes a user, then prints folder records (shared-folder decrypt path).

After share changes, see console output.

PutTeamToSharedFolder / RemoveTeamFromSharedFolder

Adds or removes a team, then prints folder records (shared-folder decrypt path).

Same.

Prerequisites

Valid IAuthentication after login ( vault.Auth from VaultOnline or AuthenticateAndGetVault.GetAuthAsync from examples below or any object that implements IAuthentication interface)

Sample: authenticate, folder metadata, user share (prior release style)


Sample: teams, record UIDs, and decrypt records (no full vault sync)

Last updated

Was this helpful?