Skip to main content
The Admin Console library (@bitwarden/admin-console) represents the public API of the Admin Console team at Bitwarden. It manages organizations, collections, user provisioning, and policy enforcement.

Overview

The Admin Console library provides the business logic and services for managing Bitwarden organizations. It handles organization structure, collection management, user onboarding and permissions, policy configuration, and administrative workflows.

Core Concepts

Organizations

Organizations are the top-level container for shared vault items and team collaboration. They provide:
  • Shared Collections - Organized sets of vault items accessible to teams
  • User Management - Invite, onboard, and manage organization members
  • Access Control - Define permissions and roles for users
  • Policy Enforcement - Apply security policies across the organization
  • Billing & Subscriptions - Organization-level subscription management

Collections

Collections are logical groupings of vault items within an organization. They enable:
  • Hierarchical Organization - Nested collection names (e.g., “Engineering/Production/AWS”)
  • Granular Access Control - Assign collections to specific users and groups
  • Bulk Management - Assign multiple items to collections simultaneously

Organization Users

Users invited to an organization go through a lifecycle:
1

Invited

Admin sends invitation via email with encrypted organization key
2

Accepted

User accepts invitation and provides public key for confirmation
3

Confirmed

Admin confirms user with encrypted organization key using user’s public key
4

Active

User has full access to assigned collections and vault items

Directory Structure

Key Services

CollectionService

Manages collection access and decryption for vault filtering and display.
libs/admin-console/src/common/collections/abstractions/collection.service.ts

CollectionAdminService

Provides administrative operations for managing collections (create, update, delete).
libs/admin-console/src/common/collections/abstractions/collection-admin.service.ts

OrganizationUserService

Handles organization user confirmation and management workflows.
libs/admin-console/src/common/organization-user/abstractions/organization-user.service.ts

OrganizationUserApiService

Handles API communication for organization user operations.
libs/admin-console/src/common/organization-user/abstractions/organization-user-api.service.ts

Organization User Lifecycle

Invitation Process

Acceptance Process

Confirmation Process

Collection Hierarchy

Collections support hierarchical organization through naming:

Bulk Operations

The library provides efficient bulk operations for administrative tasks:

Bulk User Confirmation

Bulk Collection Access

Organization Policies

Organization admins can enforce security policies:
  • Master Password Requirements - Minimum complexity and length
  • Two-Factor Authentication - Require 2FA for all users
  • Single Organization - Prevent users from joining multiple orgs
  • Personal Vault Export - Disable personal vault exports
  • Password Generator - Enforce password generator settings
  • Send Options - Control Send feature usage
Policy enforcement happens at multiple levels: client-side validation in the Admin Console library, and server-side enforcement during API operations. Policies are synced and cached locally for offline validation.

Domain Boundaries

Admin Console vs. Vault: The Admin Console manages organizational resources (collections, organization users, policies), while the Vault library manages personal resources (folders, individual vault items). Collections are created in Admin Console but consumed in Vault.
Admin Console vs. Billing: Organization creation and basic settings are in Admin Console, but subscription management, payment methods, and billing history are handled by the Billing library.
Admin Console vs. Auth: User invitation and onboarding flows are in Admin Console, but the initial authentication and login flows are handled by the Auth library. Admin Console works with already-authenticated users.

Usage Example