UNPKG

@itwin/access-control-client

Version:

Access control client for the iTwin platform

180 lines 8 kB
/** @packageDocumentation * @module AccessControlClient */ import type { AccessToken } from "@itwin/core-bentley"; export interface IAccessControlClient { permissions: IPermissionsClient; roles: IRolesClient; groups: IGroupsClient; userMembers: IUserMembersClient; groupMembers: IGroupMembersClient; ownerMembers: IOwnerMembersClient; memberInvitations: IMemberInvitationsClient; } export interface IPermissionsClient { /** Retrieves the list of all available permissions **/ getPermissionsAsync(accessToken: AccessToken): Promise<AccessControlAPIResponse<Permission[]>>; /** Retrieves a list of permissions the identity has for a specified iTwin */ getITwinPermissionsAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Permission[]>>; } export interface IUserMembersClient { /** Retrieves a list of user members and their roles assigned to a specified iTwin. */ queryITwinUserMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<UserMember[]>>; /** Retrieves a specific user member for a specified iTwin. */ getITwinUserMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<UserMember>>; /** Add or invite new iTwin user members */ addITwinUserMembersAsync(accessToken: AccessToken, iTwinId: string, newMembers: AddUserMember[]): Promise<AccessControlAPIResponse<AddUserMemberResponse>>; /** Remove the specified iTwin user member */ removeITwinUserMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>; /** Update iTwin user member roles */ updateITwinUserMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<AccessControlAPIResponse<UserMember>>; } export interface IOwnerMembersClient { /** Retrieves a list of owner members on a specified iTwin. */ queryITwinOwnerMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<OwnerMember[]>>; /** Add or invite new iTwin owner member */ addITwinOwnerMemberAsync(accessToken: AccessToken, iTwinId: string, newMember: OwnerMember): Promise<AccessControlAPIResponse<AddOwnerMemberResponse>>; /** Remove the specified iTwin owner member */ removeITwinOwnerMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>; } export interface IGroupMembersClient { /** Retrieves a list of group members and their roles assigned to a specified iTwin. */ queryITwinGroupMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<GroupMember[]>>; /** Retrieves a specific group member for a specified iTwin. */ getITwinGroupMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<GroupMember>>; /** Add new iTwin group members */ addITwinGroupMembersAsync(accessToken: AccessToken, iTwinId: string, newMembers: AddGroupMember[]): Promise<AccessControlAPIResponse<GroupMember[]>>; /** Remove the specified iTwin group member */ removeITwinGroupMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>; /** Update iTwin group member roles */ updateITwinGroupMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<AccessControlAPIResponse<GroupMember>>; } export interface IRolesClient { /** Retrieves a list of roles the for a specified iTwin */ getITwinRolesAsync(accessToken: AccessToken, iTwinId: string, additionalHeaders?: { [key: string]: string; }): Promise<AccessControlAPIResponse<Role[]>>; /** Retrieves a role for a specified iTwin */ getITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<Role>>; /** Creates a new iTwin Role */ createITwinRoleAsync(accessToken: AccessToken, iTwinId: string, role: Role): Promise<AccessControlAPIResponse<Role>>; /** Removes an existing iTwin Role */ deleteITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<undefined>>; /** Updates an existing iTwin Role */ updateITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string, role: Role): Promise<AccessControlAPIResponse<Role>>; } export interface IGroupsClient { /** Retrieves a list of groups the for a specified iTwin */ getITwinGroupsAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Group[]>>; /** Retrieves a group for a specified iTwin */ getITwinGroupAsync(accessToken: AccessToken, iTwinId: string, groupId: string): Promise<AccessControlAPIResponse<Group>>; /** Creates a new iTwin group */ createITwinGroupAsync(accessToken: AccessToken, iTwinId: string, group: Group): Promise<AccessControlAPIResponse<Group>>; /** Removes an existing iTwin group */ deleteITwinGroupAsync(accessToken: AccessToken, iTwinId: string, groupId: string): Promise<AccessControlAPIResponse<undefined>>; /** Updates an existing iTwin group */ updateITwinGroupAsync(accessToken: AccessToken, iTwinId: string, groupId: string, group: GroupUpdate): Promise<AccessControlAPIResponse<Group>>; } export interface IMemberInvitationsClient { /** Retrieves a list of member invitations. */ queryITwinMemberInvitationsAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<MemberInvitation[]>>; } export interface AccessControlQueryArg { top?: number; skip?: number; } export interface AccessControlAPIResponse<T> { data?: T; status: number; error?: Error; } export interface Error { code: string; message: string; details?: ErrorDetail[]; target?: string; } export interface ErrorDetail { code: string; message: string; target?: string; } export interface AddOwnerMemberResponse { member?: OwnerMember; invitation?: MemberInvitation; } export interface AddUserMemberResponse { members: UserMember[]; invitations: MemberInvitation[]; } export declare type Permission = string; export interface UserMember { id?: string; email?: string; givenName?: string; surname?: string; organization?: string; roles?: Omit<Role, "permissions">[]; } export interface AddUserMember { roleIds: string[]; email: string; } export interface OwnerMember { id?: string; email?: string; givenName?: string; surname?: string; organization?: string; } export interface GroupMember { id?: string; groupName?: string; groupDescription?: string; roles?: Omit<Role, "permissions">[]; } export interface AddGroupMember { groupId: string; roleIds: string[]; } export interface Role { id?: string; displayName: string; description: string; permissions: Permission[]; } export interface Group { id?: string; name?: string; description?: string; members?: GroupUser[]; imsGroups?: string[]; } export interface GroupUser { id?: string; email?: string; givenName?: string; surname?: string; organization?: string; } export interface GroupUpdate { id?: string; name?: string; description?: string; members?: string[]; imsGroups?: string[]; } export interface MemberInvitation { id: string; email: string; invitedByEmail: string; status: MemberInvitationStatus; createdDate: string; expirationDate: string; roles?: Omit<Role, "permissions" | "description">[]; } export declare enum MemberInvitationStatus { Pending = "Pending", Accepted = "Accepted" } //# sourceMappingURL=accessControlTypes.d.ts.map