Access Control Client Library

A comprehensive TypeScript library for Bentley Systems' Access Control API, providing type-safe access to iTwin access management, roles, permissions, groups, and member operations.
Table of Contents
Quick Start
Get up and running with Access Control Client in just a few steps:
npm install @itwin/access-control-client
import { AccessControlClient } from "@itwin/access-control-client";
const client = new AccessControlClient();
const accessToken = "your-access-token-string";
const roles = await client.roles.getITwinRoles(accessToken, "itwin-id");
console.log(`Found ${roles.data!.length} roles`);
Installation
npm install @itwin/access-control-client
yarn add @itwin/access-control-client
pnpm add @itwin/access-control-client
Basic Usage
Authentication
All API methods require an access token string. See the iTwin Platform documentation for authentication setup.
Environment Configuration
Configure different deployment environments using globalThis.IMJS_URL_PREFIX:
globalThis.IMJS_URL_PREFIX = "dev-";
globalThis.IMJS_URL_PREFIX = "qa-";
globalThis.IMJS_URL_PREFIX = undefined;
Documentation
Core Documentation
API Reference
Core Classes
AccessControlClient - Main client for all access control operations
IAccessControlClient - Interface defining the client API surface
Sub-Clients
The AccessControlClient exposes the following specialized sub-clients:
Access Management
permissions - Query permissions across the platform and iTwins
roles - Manage iTwin roles (CRUD operations)
Group Management
groups - Manage iTwin groups (CRUD operations)
groupMembers - Manage members within groups
groupMemberInvitations - Handle group member invitation lifecycle
User Management
userMembers - Manage individual user members of iTwins
ownerMembers - Manage iTwin owner memberships
memberInvitations - Handle member invitation lifecycle
Advanced Operations
itwinJobs - Bulk operations for member management
itwinShares - Manage iTwin sharing and access tokens
Key Features
- ✅ Complete CRUD operations for roles, groups, and members
- ✅ Bulk operations via iTwin Jobs
- ✅ Invitation management for users and groups
- ✅ Sharing capabilities for controlled iTwin access
- ✅ Type-safe API with full TypeScript support
Quick Reference
import { AccessControlClient } from "@itwin/access-control-client";
import type {
BentleyAPIResponse,
Role,
MultipleUserMembersResponse
} from "@itwin/access-control-client";
const client = new AccessControlClient();
const accessToken = "your-access-token-string";
const iTwinId = "your-itwin-id";
const roles = await client.roles.getITwinRoles(accessToken, iTwinId);
const newRole = await client.roles.createITwinRole(accessToken, iTwinId, {
displayName: "Project Manager",
description: "Role for project management"
});
const members = await client.userMembers.queryITwinUserMembers(
accessToken,
iTwinId,
{ top: 10 }
);
const addedMembers = await client.userMembers.addITwinUserMembers(
accessToken,
iTwinId,
[{
email: "user@example.com",
roleIds: ["role-id"]
}],
"Welcome message"
);
About this Repository
The @itwin/access-control-client package provides a modern, type-safe interface to Bentley Systems' Access Control API. It manages iTwin access permissions, roles, groups, members, invitations, and sharing capabilities.
For more information about the iTwin platform and APIs, visit:
Development
Prerequisites
- Node.js 16+ and pnpm
- TypeScript 4.5+
- Valid iTwin Platform credentials
Building from Source
git clone https://github.com/iTwin/access-control-client.git
cd access-control-client
pnpm install
pnpm build
Running Tests
.env file setup is required for tests. View Getting Started for more information.
pnpm test
pnpm test:coverage
pnpm lint
Contributing
We welcome contributions! Please see our Contributing Guide for details on:
- How to submit issues and feature requests
- Development workflow and coding standards
- Pull request process and review guidelines
- Testing requirements and conventions
- How to use changesets for versioning
Versioning
This project uses Changesets for version management. For more information view Contributing Guide.
License
Copyright © Bentley Systems, Incorporated. All rights reserved.
This project is licensed under the MIT License - see the LICENSE.md file for details.