@itwin/access-control-client 3.7.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +124 -25
- package/README.md +147 -669
- package/lib/cjs/AccessControlClient.d.ts +26 -9
- package/lib/cjs/AccessControlClient.d.ts.map +1 -1
- package/lib/cjs/AccessControlClient.js +21 -5
- package/lib/cjs/AccessControlClient.js.map +1 -1
- package/lib/cjs/access-control-client.d.ts +30 -1
- package/lib/cjs/access-control-client.d.ts.map +1 -1
- package/lib/cjs/access-control-client.js +42 -6
- package/lib/cjs/access-control-client.js.map +1 -1
- package/lib/cjs/accessControlClientInterfaces/GroupClient.d.ts +19 -0
- package/lib/cjs/accessControlClientInterfaces/GroupClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/GroupClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/GroupClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMemberInvitationClient.d.ts +15 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMemberInvitationClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMemberInvitationClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMemberInvitationClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMembersClient.d.ts +19 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMembersClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMembersClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/GroupMembersClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/ITwinJobsClient.d.ts +12 -0
- package/lib/cjs/accessControlClientInterfaces/ITwinJobsClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/ITwinJobsClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/ITwinJobsClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/ItwinSharesClient.d.ts +25 -0
- package/lib/cjs/accessControlClientInterfaces/ItwinSharesClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/ItwinSharesClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/ItwinSharesClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/MemberInvitationsClient.d.ts +12 -0
- package/lib/cjs/accessControlClientInterfaces/MemberInvitationsClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/MemberInvitationsClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/MemberInvitationsClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/OwnerMembersClient .d.ts +13 -0
- package/lib/cjs/accessControlClientInterfaces/OwnerMembersClient .d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/OwnerMembersClient .js +7 -0
- package/lib/cjs/accessControlClientInterfaces/OwnerMembersClient .js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/PermissionsClient.d.ts +10 -0
- package/lib/cjs/accessControlClientInterfaces/PermissionsClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/PermissionsClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/PermissionsClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/RolesClient.d.ts +16 -0
- package/lib/cjs/accessControlClientInterfaces/RolesClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/RolesClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/RolesClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/UserMembersClient.d.ts +16 -0
- package/lib/cjs/accessControlClientInterfaces/UserMembersClient.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/UserMembersClient.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/UserMembersClient.js.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/accessControl.d.ts +23 -0
- package/lib/cjs/accessControlClientInterfaces/accessControl.d.ts.map +1 -0
- package/lib/cjs/accessControlClientInterfaces/accessControl.js +7 -0
- package/lib/cjs/accessControlClientInterfaces/accessControl.js.map +1 -0
- package/lib/cjs/subClients/BaseClient.d.ts +88 -29
- package/lib/cjs/subClients/BaseClient.d.ts.map +1 -1
- package/lib/cjs/subClients/BaseClient.js +165 -40
- package/lib/cjs/subClients/BaseClient.js.map +1 -1
- package/lib/cjs/subClients/GroupMemberInvitationsClient.d.ts +33 -0
- package/lib/cjs/subClients/GroupMemberInvitationsClient.d.ts.map +1 -0
- package/lib/cjs/subClients/GroupMemberInvitationsClient.js +48 -0
- package/lib/cjs/subClients/GroupMemberInvitationsClient.js.map +1 -0
- package/lib/cjs/subClients/GroupMembersClient.d.ts +16 -6
- package/lib/cjs/subClients/GroupMembersClient.d.ts.map +1 -1
- package/lib/cjs/subClients/GroupMembersClient.js +22 -13
- package/lib/cjs/subClients/GroupMembersClient.js.map +1 -1
- package/lib/cjs/subClients/GroupsClient.d.ts +18 -10
- package/lib/cjs/subClients/GroupsClient.d.ts.map +1 -1
- package/lib/cjs/subClients/GroupsClient.js +27 -12
- package/lib/cjs/subClients/GroupsClient.js.map +1 -1
- package/lib/cjs/subClients/ITwinJobsClient.d.ts +12 -5
- package/lib/cjs/subClients/ITwinJobsClient.d.ts.map +1 -1
- package/lib/cjs/subClients/ITwinJobsClient.js +15 -3
- package/lib/cjs/subClients/ITwinJobsClient.js.map +1 -1
- package/lib/cjs/subClients/ItwinShares.d.ts +61 -0
- package/lib/cjs/subClients/ItwinShares.d.ts.map +1 -0
- package/lib/cjs/subClients/ItwinShares.js +77 -0
- package/lib/cjs/subClients/ItwinShares.js.map +1 -0
- package/lib/cjs/subClients/MemberInvitationsClient.d.ts +23 -3
- package/lib/cjs/subClients/MemberInvitationsClient.d.ts.map +1 -1
- package/lib/cjs/subClients/MemberInvitationsClient.js +32 -7
- package/lib/cjs/subClients/MemberInvitationsClient.js.map +1 -1
- package/lib/cjs/subClients/OwnerMembersClient.d.ts +45 -6
- package/lib/cjs/subClients/OwnerMembersClient.d.ts.map +1 -1
- package/lib/cjs/subClients/OwnerMembersClient.js +50 -10
- package/lib/cjs/subClients/OwnerMembersClient.js.map +1 -1
- package/lib/cjs/subClients/PermissionsClient.d.ts +10 -3
- package/lib/cjs/subClients/PermissionsClient.d.ts.map +1 -1
- package/lib/cjs/subClients/PermissionsClient.js +14 -2
- package/lib/cjs/subClients/PermissionsClient.js.map +1 -1
- package/lib/cjs/subClients/RolesClient.d.ts +13 -8
- package/lib/cjs/subClients/RolesClient.d.ts.map +1 -1
- package/lib/cjs/subClients/RolesClient.js +18 -6
- package/lib/cjs/subClients/RolesClient.js.map +1 -1
- package/lib/cjs/subClients/UserMembersClient.d.ts +13 -6
- package/lib/cjs/subClients/UserMembersClient.d.ts.map +1 -1
- package/lib/cjs/subClients/UserMembersClient.js +21 -9
- package/lib/cjs/subClients/UserMembersClient.js.map +1 -1
- package/lib/cjs/types/CommonApiTypes.d.ts +78 -0
- package/lib/cjs/types/CommonApiTypes.d.ts.map +1 -0
- package/lib/cjs/types/CommonApiTypes.js +7 -0
- package/lib/cjs/types/CommonApiTypes.js.map +1 -0
- package/lib/cjs/types/GroupMember.d.ts +75 -0
- package/lib/cjs/types/GroupMember.d.ts.map +1 -0
- package/lib/cjs/types/GroupMember.js +7 -0
- package/lib/cjs/types/GroupMember.js.map +1 -0
- package/lib/cjs/types/Groups.d.ts +83 -0
- package/lib/cjs/types/Groups.d.ts.map +1 -0
- package/lib/cjs/types/Groups.js +7 -0
- package/lib/cjs/types/Groups.js.map +1 -0
- package/lib/cjs/types/ITwinJob.d.ts +70 -0
- package/lib/cjs/types/ITwinJob.d.ts.map +1 -0
- package/lib/cjs/types/ITwinJob.js +7 -0
- package/lib/cjs/types/ITwinJob.js.map +1 -0
- package/lib/cjs/types/Invitations.d.ts +146 -0
- package/lib/cjs/types/Invitations.d.ts.map +1 -0
- package/lib/cjs/types/Invitations.js +7 -0
- package/lib/cjs/types/Invitations.js.map +1 -0
- package/lib/cjs/types/Members.d.ts +71 -0
- package/lib/cjs/types/Members.d.ts.map +1 -0
- package/lib/cjs/types/Members.js +7 -0
- package/lib/cjs/types/Members.js.map +1 -0
- package/lib/cjs/types/OwnerMember.d.ts +105 -0
- package/lib/cjs/types/OwnerMember.d.ts.map +1 -0
- package/lib/cjs/types/OwnerMember.js +7 -0
- package/lib/cjs/types/OwnerMember.js.map +1 -0
- package/lib/cjs/types/Permission.d.ts +5 -0
- package/lib/cjs/types/Permission.d.ts.map +1 -0
- package/lib/cjs/types/Permission.js +7 -0
- package/lib/cjs/types/Permission.js.map +1 -0
- package/lib/cjs/types/Role.d.ts +33 -0
- package/lib/cjs/types/Role.d.ts.map +1 -0
- package/lib/cjs/types/Role.js +7 -0
- package/lib/cjs/types/Role.js.map +1 -0
- package/lib/cjs/types/ShareContract.d.ts +80 -0
- package/lib/cjs/types/ShareContract.d.ts.map +1 -0
- package/lib/cjs/types/ShareContract.js +7 -0
- package/lib/cjs/types/ShareContract.js.map +1 -0
- package/lib/cjs/types/UserMembers.d.ts +115 -0
- package/lib/cjs/types/UserMembers.d.ts.map +1 -0
- package/lib/cjs/types/UserMembers.js +7 -0
- package/lib/cjs/types/UserMembers.js.map +1 -0
- package/lib/cjs/types/links.d.ts +20 -0
- package/lib/cjs/types/links.d.ts.map +1 -0
- package/lib/cjs/types/links.js +7 -0
- package/lib/cjs/types/links.js.map +1 -0
- package/lib/cjs/types/typeUtils.d.ts +42 -0
- package/lib/cjs/types/typeUtils.d.ts.map +1 -0
- package/lib/cjs/types/typeUtils.js +25 -0
- package/lib/cjs/types/typeUtils.js.map +1 -0
- package/lib/esm/AccessControlClient.d.ts +26 -9
- package/lib/esm/AccessControlClient.d.ts.map +1 -1
- package/lib/esm/AccessControlClient.js +31 -5
- package/lib/esm/AccessControlClient.js.map +1 -1
- package/lib/esm/access-control-client.d.ts +30 -1
- package/lib/esm/access-control-client.d.ts.map +1 -1
- package/lib/esm/access-control-client.js +33 -1
- package/lib/esm/access-control-client.js.map +1 -1
- package/lib/esm/accessControlClientInterfaces/GroupClient.d.ts +19 -0
- package/lib/esm/accessControlClientInterfaces/GroupClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/GroupClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/GroupClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/GroupMemberInvitationClient.d.ts +15 -0
- package/lib/esm/accessControlClientInterfaces/GroupMemberInvitationClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/GroupMemberInvitationClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/GroupMemberInvitationClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/GroupMembersClient.d.ts +19 -0
- package/lib/esm/accessControlClientInterfaces/GroupMembersClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/GroupMembersClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/GroupMembersClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/ITwinJobsClient.d.ts +12 -0
- package/lib/esm/accessControlClientInterfaces/ITwinJobsClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/ITwinJobsClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/ITwinJobsClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/ItwinSharesClient.d.ts +25 -0
- package/lib/esm/accessControlClientInterfaces/ItwinSharesClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/ItwinSharesClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/ItwinSharesClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/MemberInvitationsClient.d.ts +12 -0
- package/lib/esm/accessControlClientInterfaces/MemberInvitationsClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/MemberInvitationsClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/MemberInvitationsClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/OwnerMembersClient .d.ts +13 -0
- package/lib/esm/accessControlClientInterfaces/OwnerMembersClient .d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/OwnerMembersClient .js +6 -0
- package/lib/esm/accessControlClientInterfaces/OwnerMembersClient .js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/PermissionsClient.d.ts +10 -0
- package/lib/esm/accessControlClientInterfaces/PermissionsClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/PermissionsClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/PermissionsClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/RolesClient.d.ts +16 -0
- package/lib/esm/accessControlClientInterfaces/RolesClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/RolesClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/RolesClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/UserMembersClient.d.ts +16 -0
- package/lib/esm/accessControlClientInterfaces/UserMembersClient.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/UserMembersClient.js +6 -0
- package/lib/esm/accessControlClientInterfaces/UserMembersClient.js.map +1 -0
- package/lib/esm/accessControlClientInterfaces/accessControl.d.ts +23 -0
- package/lib/esm/accessControlClientInterfaces/accessControl.d.ts.map +1 -0
- package/lib/esm/accessControlClientInterfaces/accessControl.js +6 -0
- package/lib/esm/accessControlClientInterfaces/accessControl.js.map +1 -0
- package/lib/esm/subClients/BaseClient.d.ts +88 -29
- package/lib/esm/subClients/BaseClient.d.ts.map +1 -1
- package/lib/esm/subClients/BaseClient.js +166 -41
- package/lib/esm/subClients/BaseClient.js.map +1 -1
- package/lib/esm/subClients/GroupMemberInvitationsClient.d.ts +33 -0
- package/lib/esm/subClients/GroupMemberInvitationsClient.d.ts.map +1 -0
- package/lib/esm/subClients/GroupMemberInvitationsClient.js +44 -0
- package/lib/esm/subClients/GroupMemberInvitationsClient.js.map +1 -0
- package/lib/esm/subClients/GroupMembersClient.d.ts +16 -6
- package/lib/esm/subClients/GroupMembersClient.d.ts.map +1 -1
- package/lib/esm/subClients/GroupMembersClient.js +22 -13
- package/lib/esm/subClients/GroupMembersClient.js.map +1 -1
- package/lib/esm/subClients/GroupsClient.d.ts +18 -10
- package/lib/esm/subClients/GroupsClient.d.ts.map +1 -1
- package/lib/esm/subClients/GroupsClient.js +27 -12
- package/lib/esm/subClients/GroupsClient.js.map +1 -1
- package/lib/esm/subClients/ITwinJobsClient.d.ts +12 -5
- package/lib/esm/subClients/ITwinJobsClient.d.ts.map +1 -1
- package/lib/esm/subClients/ITwinJobsClient.js +15 -3
- package/lib/esm/subClients/ITwinJobsClient.js.map +1 -1
- package/lib/esm/subClients/ItwinShares.d.ts +61 -0
- package/lib/esm/subClients/ItwinShares.d.ts.map +1 -0
- package/lib/esm/subClients/ItwinShares.js +73 -0
- package/lib/esm/subClients/ItwinShares.js.map +1 -0
- package/lib/esm/subClients/MemberInvitationsClient.d.ts +23 -3
- package/lib/esm/subClients/MemberInvitationsClient.d.ts.map +1 -1
- package/lib/esm/subClients/MemberInvitationsClient.js +32 -7
- package/lib/esm/subClients/MemberInvitationsClient.js.map +1 -1
- package/lib/esm/subClients/OwnerMembersClient.d.ts +45 -6
- package/lib/esm/subClients/OwnerMembersClient.d.ts.map +1 -1
- package/lib/esm/subClients/OwnerMembersClient.js +50 -10
- package/lib/esm/subClients/OwnerMembersClient.js.map +1 -1
- package/lib/esm/subClients/PermissionsClient.d.ts +10 -3
- package/lib/esm/subClients/PermissionsClient.d.ts.map +1 -1
- package/lib/esm/subClients/PermissionsClient.js +14 -2
- package/lib/esm/subClients/PermissionsClient.js.map +1 -1
- package/lib/esm/subClients/RolesClient.d.ts +13 -8
- package/lib/esm/subClients/RolesClient.d.ts.map +1 -1
- package/lib/esm/subClients/RolesClient.js +18 -6
- package/lib/esm/subClients/RolesClient.js.map +1 -1
- package/lib/esm/subClients/UserMembersClient.d.ts +13 -6
- package/lib/esm/subClients/UserMembersClient.d.ts.map +1 -1
- package/lib/esm/subClients/UserMembersClient.js +21 -9
- package/lib/esm/subClients/UserMembersClient.js.map +1 -1
- package/lib/esm/types/CommonApiTypes.d.ts +78 -0
- package/lib/esm/types/CommonApiTypes.d.ts.map +1 -0
- package/lib/esm/types/CommonApiTypes.js +6 -0
- package/lib/esm/types/CommonApiTypes.js.map +1 -0
- package/lib/esm/types/GroupMember.d.ts +75 -0
- package/lib/esm/types/GroupMember.d.ts.map +1 -0
- package/lib/esm/types/GroupMember.js +6 -0
- package/lib/esm/types/GroupMember.js.map +1 -0
- package/lib/esm/types/Groups.d.ts +83 -0
- package/lib/esm/types/Groups.d.ts.map +1 -0
- package/lib/esm/types/Groups.js +6 -0
- package/lib/esm/types/Groups.js.map +1 -0
- package/lib/esm/types/ITwinJob.d.ts +70 -0
- package/lib/esm/types/ITwinJob.d.ts.map +1 -0
- package/lib/esm/types/ITwinJob.js +6 -0
- package/lib/esm/types/ITwinJob.js.map +1 -0
- package/lib/esm/types/Invitations.d.ts +146 -0
- package/lib/esm/types/Invitations.d.ts.map +1 -0
- package/lib/esm/types/Invitations.js +6 -0
- package/lib/esm/types/Invitations.js.map +1 -0
- package/lib/esm/types/Members.d.ts +71 -0
- package/lib/esm/types/Members.d.ts.map +1 -0
- package/lib/esm/types/Members.js +6 -0
- package/lib/esm/types/Members.js.map +1 -0
- package/lib/esm/types/OwnerMember.d.ts +105 -0
- package/lib/esm/types/OwnerMember.d.ts.map +1 -0
- package/lib/esm/types/OwnerMember.js +6 -0
- package/lib/esm/types/OwnerMember.js.map +1 -0
- package/lib/esm/types/Permission.d.ts +5 -0
- package/lib/esm/types/Permission.d.ts.map +1 -0
- package/lib/esm/types/Permission.js +6 -0
- package/lib/esm/types/Permission.js.map +1 -0
- package/lib/esm/types/Role.d.ts +33 -0
- package/lib/esm/types/Role.d.ts.map +1 -0
- package/lib/esm/types/Role.js +6 -0
- package/lib/esm/types/Role.js.map +1 -0
- package/lib/esm/types/ShareContract.d.ts +80 -0
- package/lib/esm/types/ShareContract.d.ts.map +1 -0
- package/lib/esm/types/ShareContract.js +6 -0
- package/lib/esm/types/ShareContract.js.map +1 -0
- package/lib/esm/types/UserMembers.d.ts +115 -0
- package/lib/esm/types/UserMembers.d.ts.map +1 -0
- package/lib/esm/types/UserMembers.js +6 -0
- package/lib/esm/types/UserMembers.js.map +1 -0
- package/lib/esm/types/links.d.ts +20 -0
- package/lib/esm/types/links.d.ts.map +1 -0
- package/lib/esm/types/links.js +6 -0
- package/lib/esm/types/links.js.map +1 -0
- package/lib/esm/types/typeUtils.d.ts +42 -0
- package/lib/esm/types/typeUtils.d.ts.map +1 -0
- package/lib/esm/types/typeUtils.js +22 -0
- package/lib/esm/types/typeUtils.js.map +1 -0
- package/package.json +59 -45
- package/CONTRIBUTING.md +0 -90
- package/GETTINGSTARTED.md +0 -35
- package/lib/cjs/accessControlTypes.d.ts +0 -229
- package/lib/cjs/accessControlTypes.d.ts.map +0 -1
- package/lib/cjs/accessControlTypes.js +0 -25
- package/lib/cjs/accessControlTypes.js.map +0 -1
- package/lib/esm/accessControlTypes.d.ts +0 -229
- package/lib/esm/accessControlTypes.d.ts.map +0 -1
- package/lib/esm/accessControlTypes.js +0 -22
- package/lib/esm/accessControlTypes.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
2
|
+
import type { BentleyAPIResponse, ODataQueryParams } from "../types/CommonApiTypes";
|
|
3
|
+
import type { AddUserMember, AddUserMemberResponse, MultipleUserMembersResponse, SingleUserMemberResponse } from "../types/UserMembers";
|
|
4
|
+
export interface IUserMembersClient {
|
|
5
|
+
/** Retrieves a list of user members and their roles assigned to a specified iTwin. */
|
|
6
|
+
queryITwinUserMembers(accessToken: AccessToken, iTwinId: string, arg?: Pick<ODataQueryParams, "top" | "skip">): Promise<BentleyAPIResponse<MultipleUserMembersResponse>>;
|
|
7
|
+
/** Retrieves a specific user member for a specified iTwin. */
|
|
8
|
+
getITwinUserMember(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<BentleyAPIResponse<SingleUserMemberResponse>>;
|
|
9
|
+
/** Add or invite new iTwin user members */
|
|
10
|
+
addITwinUserMembers(accessToken: AccessToken, iTwinId: string, newMembers: AddUserMember[], customMessage?: string): Promise<BentleyAPIResponse<AddUserMemberResponse>>;
|
|
11
|
+
/** Remove the specified iTwin user member */
|
|
12
|
+
removeITwinUserMember(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<BentleyAPIResponse<undefined>>;
|
|
13
|
+
/** Update iTwin user member roles */
|
|
14
|
+
updateITwinUserMember(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<BentleyAPIResponse<SingleUserMemberResponse>>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=UserMembersClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserMembersClient.d.ts","sourceRoot":"","sources":["../../../src/accessControlClientInterfaces/UserMembersClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGxI,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,qBAAqB,CACnB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,MAAM,CAAC,GAC3C,OAAO,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAE5D,8DAA8D;IAC9D,kBAAkB,CAChB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAExD,2CAA2C;IAC3C,mBAAmB,CACjB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EAAE,EAC3B,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,qBAAqB,CACnB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1C,sCAAsC;IACtC,qBAAqB,CACnB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC,CAAC;CAC1D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
//# sourceMappingURL=UserMembersClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserMembersClient.js","sourceRoot":"","sources":["../../../src/accessControlClientInterfaces/UserMembersClient.ts"],"names":[],"mappings":";AAAA;;;gGAGgG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport type { AccessToken } from \"@itwin/core-bentley\";\nimport type { BentleyAPIResponse, ODataQueryParams } from \"../types/CommonApiTypes\";\nimport type { AddUserMember, AddUserMemberResponse, MultipleUserMembersResponse, SingleUserMemberResponse } from \"../types/UserMembers\";\n\n\nexport interface IUserMembersClient {\n /** Retrieves a list of user members and their roles assigned to a specified iTwin. */\n queryITwinUserMembers(\n accessToken: AccessToken,\n iTwinId: string,\n arg?: Pick<ODataQueryParams, \"top\" | \"skip\">\n ): Promise<BentleyAPIResponse<MultipleUserMembersResponse>>;\n\n /** Retrieves a specific user member for a specified iTwin. */\n getITwinUserMember(\n accessToken: AccessToken,\n iTwinId: string,\n memberId: string\n ): Promise<BentleyAPIResponse<SingleUserMemberResponse>>\n\n /** Add or invite new iTwin user members */\n addITwinUserMembers(\n accessToken: AccessToken,\n iTwinId: string,\n newMembers: AddUserMember[],\n customMessage?: string\n ): Promise<BentleyAPIResponse<AddUserMemberResponse>>;\n\n /** Remove the specified iTwin user member */\n removeITwinUserMember(\n accessToken: AccessToken,\n iTwinId: string,\n memberId: string\n ): Promise<BentleyAPIResponse<undefined>>;\n\n /** Update iTwin user member roles */\n updateITwinUserMember(\n accessToken: AccessToken,\n iTwinId: string,\n memberId: string,\n roleIds: string[]\n ): Promise<BentleyAPIResponse<SingleUserMemberResponse>>;\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IGroupsClient } from "./GroupClient";
|
|
2
|
+
import type { IGroupMemberInvitationClient } from "./GroupMemberInvitationClient";
|
|
3
|
+
import type { IGroupMembersClient } from "./GroupMembersClient";
|
|
4
|
+
import type { IITwinJobsClient } from "./ITwinJobsClient";
|
|
5
|
+
import type { IITwinSharesClient } from "./ItwinSharesClient";
|
|
6
|
+
import type { IMemberInvitationsClient } from "./MemberInvitationsClient";
|
|
7
|
+
import type { IOwnerMembersClient } from "./OwnerMembersClient ";
|
|
8
|
+
import type { IPermissionsClient } from "./PermissionsClient";
|
|
9
|
+
import type { IRolesClient } from "./RolesClient";
|
|
10
|
+
import type { IUserMembersClient } from "./UserMembersClient";
|
|
11
|
+
export interface IAccessControlClient {
|
|
12
|
+
permissions: IPermissionsClient;
|
|
13
|
+
roles: IRolesClient;
|
|
14
|
+
groups: IGroupsClient;
|
|
15
|
+
userMembers: IUserMembersClient;
|
|
16
|
+
groupMembers: IGroupMembersClient;
|
|
17
|
+
ownerMembers: IOwnerMembersClient;
|
|
18
|
+
memberInvitations: IMemberInvitationsClient;
|
|
19
|
+
itwinJobs: IITwinJobsClient;
|
|
20
|
+
itwinShares: IITwinSharesClient;
|
|
21
|
+
groupMemberInvitations: IGroupMemberInvitationClient;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=accessControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessControl.d.ts","sourceRoot":"","sources":["../../../src/accessControlClientInterfaces/accessControl.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,YAAY,EAAE,mBAAmB,CAAC;IAClC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,kBAAkB,CAAC;IAChC,sBAAsB,EAAE,4BAA4B,CAAA;CACrD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
//# sourceMappingURL=accessControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessControl.js","sourceRoot":"","sources":["../../../src/accessControlClientInterfaces/accessControl.ts"],"names":[],"mappings":";AAAA;;;gGAGgG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport type { IGroupsClient } from \"./GroupClient\";\nimport type { IGroupMemberInvitationClient } from \"./GroupMemberInvitationClient\";\nimport type { IGroupMembersClient } from \"./GroupMembersClient\";\nimport type { IITwinJobsClient } from \"./ITwinJobsClient\";\nimport type { IITwinSharesClient } from \"./ItwinSharesClient\";\nimport type { IMemberInvitationsClient } from \"./MemberInvitationsClient\";\nimport type { IOwnerMembersClient } from \"./OwnerMembersClient \";\nimport type { IPermissionsClient } from \"./PermissionsClient\";\nimport type { IRolesClient } from \"./RolesClient\";\nimport type { IUserMembersClient } from \"./UserMembersClient\";\n\nexport interface IAccessControlClient {\n permissions: IPermissionsClient;\n roles: IRolesClient;\n groups: IGroupsClient;\n userMembers: IUserMembersClient;\n groupMembers: IGroupMembersClient;\n ownerMembers: IOwnerMembersClient;\n memberInvitations: IMemberInvitationsClient;\n itwinJobs: IITwinJobsClient;\n itwinShares: IITwinSharesClient;\n groupMemberInvitations: IGroupMemberInvitationClient\n}\n"]}
|
|
@@ -2,40 +2,99 @@
|
|
|
2
2
|
* @module AccessControlClient
|
|
3
3
|
*/
|
|
4
4
|
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
headers?: Record<string, string>;
|
|
12
|
-
validateStatus?: (status: number) => boolean;
|
|
13
|
-
}
|
|
5
|
+
import type { BentleyAPIResponse, Method, ODataQueryParams, RequestConfig } from "../types/CommonApiTypes";
|
|
6
|
+
import { ParameterMapping } from "../types/typeUtils";
|
|
7
|
+
/**
|
|
8
|
+
* Base client class providing common functionality for Access Control API requests.
|
|
9
|
+
* Handles authentication, request configuration, and query string building, and error validation.
|
|
10
|
+
*/
|
|
14
11
|
export declare class BaseClient {
|
|
15
12
|
protected _baseUrl: string;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new BaseClient instance for Access Control API operations
|
|
15
|
+
* @param url - Optional custom base URL, defaults to production iTwins API URL
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Use default production URL
|
|
20
|
+
* const client = new BaseClient();
|
|
21
|
+
*
|
|
22
|
+
* // Use custom URL for development/testing
|
|
23
|
+
* const client = new ITwinsAccessClient("https://api.bentley.com/accesscontrol/itwins");
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
16
26
|
constructor(url?: string);
|
|
17
27
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
* Maps the some properties of {@link ODataQueryParams} to their corresponding query parameter names.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* This mapping is used to translate internal property names to the expected parameter names
|
|
32
|
+
* when constructing requests. Properties mapped to empty strings are excluded from
|
|
33
|
+
* the query string as they should be sent as headers instead.
|
|
34
|
+
*
|
|
35
|
+
* The mapping includes OData query parameters (prefixed with $) for pagination.
|
|
36
|
+
*
|
|
37
|
+
* @readonly
|
|
38
|
+
*/
|
|
39
|
+
protected static readonly paginationParamMapping: ParameterMapping<Pick<ODataQueryParams, "top" | "skip">>;
|
|
40
|
+
/**
|
|
41
|
+
* Sends a basic API request to the specified URL with the given method and data.
|
|
42
|
+
* @param accessToken The client access token
|
|
43
|
+
* @param method The HTTP method of the request (GET, POST, DELETE, etc)
|
|
44
|
+
* @param url The URL of the request
|
|
45
|
+
* @param data Optional request body data
|
|
46
|
+
* @param property Optional property name to extract from response data
|
|
47
|
+
* @param additionalHeaders Optional additional headers to include in the request
|
|
48
|
+
* @returns Promise resolving to a BentleyAPIResponse containing the response data or error
|
|
49
|
+
*/
|
|
50
|
+
protected sendGenericAPIRequest<TResponse = unknown, TData = unknown>(accessToken: AccessToken, method: Method, url: string, data?: TData, property?: string, additionalHeaders?: Record<string, string>): Promise<BentleyAPIResponse<TResponse>>;
|
|
51
|
+
/**
|
|
52
|
+
* Build the request configuration including method, headers, and body
|
|
53
|
+
* @param accessTokenString The client access token
|
|
54
|
+
* @param method The HTTP method of the request
|
|
55
|
+
* @param url The URL of the request
|
|
56
|
+
* @param data Optional request body data
|
|
57
|
+
* @param additionalHeaders Optional additional headers to include in the request
|
|
58
|
+
* @returns RequestConfig object with method, url, body, and headers
|
|
59
|
+
*/
|
|
60
|
+
protected getRequestOptions<TData>(accessTokenString: AccessToken, method: Method, url: string, data?: TData, additionalHeaders?: Record<string, string>): RequestConfig;
|
|
26
61
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
62
|
+
* Builds a query string to be appended to a URL from query arguments
|
|
63
|
+
* @param parameterMapping - Parameter mapping configuration that maps object properties to query parameter names
|
|
64
|
+
* @param queryArg - Object containing queryable properties for filtering
|
|
65
|
+
* @returns Query string with parameters applied, ready to append to a URL
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const queryString = this.getQueryString(
|
|
70
|
+
* BaseClient.paginationParamMapping,
|
|
71
|
+
* {
|
|
72
|
+
* top: 10,
|
|
73
|
+
* skip: 5,
|
|
74
|
+
* }
|
|
75
|
+
* );
|
|
76
|
+
* // Returns: "$top=10&$skip=5"
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
protected getQueryString<T>(parameterMapping: ParameterMapping<NonNullable<T>>, queryArg?: T): string;
|
|
33
80
|
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
81
|
+
* Helper method to build query parameter array from mapping.
|
|
82
|
+
* Uses exhaustive parameter mapping to ensure type safety and prevent missing parameters.
|
|
83
|
+
* Automatically handles URL encoding and filters out excluded parameters.
|
|
84
|
+
*
|
|
85
|
+
* @param queryArg - Object containing queryable properties
|
|
86
|
+
* @param mapping - Parameter mapping configuration that maps object properties to query parameter names
|
|
87
|
+
* @returns Array of formatted query parameter strings ready for URL construction
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const params = this.buildQueryParams(
|
|
92
|
+
* { top: 10, skip: 5 },
|
|
93
|
+
* { top: "$top", skip: "$skip" }
|
|
94
|
+
* );
|
|
95
|
+
* // Returns: ["$top=10", "$skip=5"]
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
private buildQueryParams;
|
|
39
99
|
}
|
|
40
|
-
export {};
|
|
41
100
|
//# sourceMappingURL=BaseClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAEV,kBAAkB,EAClB,MAAM,EACN,gBAAgB,EAChB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAe,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA8BnE;;;GAGG;AACH,qBAAa,UAAU;IACrB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAkD;IAE1E;;;;;;;;;;;;KAYC;gBACgB,GAAG,CAAC,EAAE,MAAM;IAa/B;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAI7F;IAEb;;;;;;;;;OASG;cACa,qBAAqB,CAAC,SAAS,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EACxE,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAuDzC;;;;;;;;OAQG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAC/B,iBAAiB,EAAE,WAAW,EAC9B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,KAAK,EACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,aAAa;IAuBd;;;;;;;;;;;;;;;;;KAiBC;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EACxB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAClD,QAAQ,CAAC,EAAE,CAAC,GACX,MAAM;IAOT;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,gBAAgB;CAoBzB"}
|
|
@@ -1,7 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module AccessControlClient
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.BaseClient = void 0;
|
|
11
|
+
const typeUtils_1 = require("../types/typeUtils");
|
|
12
|
+
/**
|
|
13
|
+
* Type guard to validate if an object is a valid Error structure
|
|
14
|
+
* @param error - Unknown object to validate
|
|
15
|
+
* @returns True if the object is a valid Error type
|
|
16
|
+
*/
|
|
17
|
+
function isValidError(error) {
|
|
18
|
+
if (typeof error !== "object" || error === null) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const obj = error;
|
|
22
|
+
return typeof obj.code === "string" && typeof obj.message === "string";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Type guard to validate if response data contains an error
|
|
26
|
+
* @param data - Unknown response data to validate
|
|
27
|
+
* @returns True if the data contains a valid Error object
|
|
28
|
+
*/
|
|
29
|
+
function isErrorResponse(data) {
|
|
30
|
+
if (typeof data !== "object" || data === null) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
const obj = data;
|
|
34
|
+
return "error" in obj && isValidError(obj.error);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Base client class providing common functionality for Access Control API requests.
|
|
38
|
+
* Handles authentication, request configuration, and query string building, and error validation.
|
|
39
|
+
*/
|
|
4
40
|
class BaseClient {
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new BaseClient instance for Access Control API operations
|
|
43
|
+
* @param url - Optional custom base URL, defaults to production iTwins API URL
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Use default production URL
|
|
48
|
+
* const client = new BaseClient();
|
|
49
|
+
*
|
|
50
|
+
* // Use custom URL for development/testing
|
|
51
|
+
* const client = new ITwinsAccessClient("https://api.bentley.com/accesscontrol/itwins");
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
5
54
|
constructor(url) {
|
|
6
55
|
this._baseUrl = "https://api.bentley.com/accesscontrol/itwins";
|
|
7
56
|
if (url !== undefined) {
|
|
@@ -17,40 +66,50 @@ class BaseClient {
|
|
|
17
66
|
}
|
|
18
67
|
}
|
|
19
68
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
69
|
+
* Sends a basic API request to the specified URL with the given method and data.
|
|
70
|
+
* @param accessToken The client access token
|
|
71
|
+
* @param method The HTTP method of the request (GET, POST, DELETE, etc)
|
|
72
|
+
* @param url The URL of the request
|
|
73
|
+
* @param data Optional request body data
|
|
74
|
+
* @param property Optional property name to extract from response data
|
|
75
|
+
* @param additionalHeaders Optional additional headers to include in the request
|
|
76
|
+
* @returns Promise resolving to a BentleyAPIResponse containing the response data or error
|
|
77
|
+
*/
|
|
25
78
|
async sendGenericAPIRequest(accessToken, method, url, data, property, additionalHeaders) {
|
|
26
79
|
const requestOptions = this.getRequestOptions(accessToken, method, url, data, additionalHeaders);
|
|
27
80
|
try {
|
|
28
81
|
const response = await fetch(requestOptions.url, {
|
|
29
82
|
method: requestOptions.method,
|
|
30
83
|
headers: requestOptions.headers,
|
|
31
|
-
body: requestOptions.
|
|
84
|
+
body: requestOptions.body,
|
|
32
85
|
});
|
|
33
|
-
let responseData;
|
|
34
|
-
const contentType = response.headers.get("content-type");
|
|
35
|
-
if (contentType && contentType.includes("application/json")) {
|
|
36
|
-
responseData = await response.json();
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
responseData = await response.text();
|
|
40
|
-
}
|
|
41
86
|
// Convert Headers object to plain object for compatibility
|
|
42
87
|
const headers = {};
|
|
43
88
|
response.headers.forEach((value, key) => {
|
|
44
89
|
headers[key] = value;
|
|
45
90
|
});
|
|
91
|
+
const responseData = response.status !== 204 ? await response.json() : undefined;
|
|
92
|
+
if (!response.ok) {
|
|
93
|
+
if (isErrorResponse(responseData)) {
|
|
94
|
+
return {
|
|
95
|
+
status: response.status,
|
|
96
|
+
error: responseData.error,
|
|
97
|
+
headers,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
throw new Error("An error occurred while processing the request");
|
|
101
|
+
}
|
|
46
102
|
return {
|
|
47
103
|
status: response.status,
|
|
48
|
-
data: responseData
|
|
49
|
-
|
|
104
|
+
data: (responseData === "" || responseData === undefined
|
|
105
|
+
? undefined
|
|
106
|
+
: property && (0, typeUtils_1.hasProperty)(responseData, property)
|
|
107
|
+
? responseData[property]
|
|
108
|
+
: responseData),
|
|
50
109
|
headers,
|
|
51
110
|
};
|
|
52
111
|
}
|
|
53
|
-
catch (
|
|
112
|
+
catch (_a) {
|
|
54
113
|
return {
|
|
55
114
|
status: 500,
|
|
56
115
|
error: {
|
|
@@ -62,41 +121,107 @@ class BaseClient {
|
|
|
62
121
|
}
|
|
63
122
|
}
|
|
64
123
|
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
124
|
+
* Build the request configuration including method, headers, and body
|
|
125
|
+
* @param accessTokenString The client access token
|
|
126
|
+
* @param method The HTTP method of the request
|
|
127
|
+
* @param url The URL of the request
|
|
128
|
+
* @param data Optional request body data
|
|
129
|
+
* @param additionalHeaders Optional additional headers to include in the request
|
|
130
|
+
* @returns RequestConfig object with method, url, body, and headers
|
|
131
|
+
*/
|
|
132
|
+
getRequestOptions(accessTokenString, method, url, data, additionalHeaders) {
|
|
133
|
+
if (!accessTokenString) {
|
|
134
|
+
throw new Error("Access token is required");
|
|
135
|
+
}
|
|
136
|
+
if (!url) {
|
|
137
|
+
throw new Error("URL is required");
|
|
138
|
+
}
|
|
139
|
+
const body = JSON.stringify(data);
|
|
69
140
|
return {
|
|
70
141
|
method,
|
|
71
142
|
url,
|
|
72
|
-
|
|
143
|
+
body,
|
|
73
144
|
headers: {
|
|
74
|
-
|
|
145
|
+
authorization: accessTokenString,
|
|
75
146
|
"content-type": "application/json",
|
|
76
|
-
|
|
147
|
+
accept: "application/vnd.bentley.itwin-platform.v2+json",
|
|
77
148
|
...additionalHeaders,
|
|
78
149
|
},
|
|
79
|
-
validateStatus(status) {
|
|
80
|
-
return status < 500; // Resolve only if the status code is less than 500
|
|
81
|
-
},
|
|
82
150
|
};
|
|
83
151
|
}
|
|
84
152
|
/**
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
153
|
+
* Builds a query string to be appended to a URL from query arguments
|
|
154
|
+
* @param parameterMapping - Parameter mapping configuration that maps object properties to query parameter names
|
|
155
|
+
* @param queryArg - Object containing queryable properties for filtering
|
|
156
|
+
* @returns Query string with parameters applied, ready to append to a URL
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* const queryString = this.getQueryString(
|
|
161
|
+
* BaseClient.paginationParamMapping,
|
|
162
|
+
* {
|
|
163
|
+
* top: 10,
|
|
164
|
+
* skip: 5,
|
|
165
|
+
* }
|
|
166
|
+
* );
|
|
167
|
+
* // Returns: "$top=10&$skip=5"
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
getQueryString(parameterMapping, queryArg) {
|
|
171
|
+
if (!queryArg)
|
|
172
|
+
return "";
|
|
173
|
+
const params = this.buildQueryParams(queryArg, parameterMapping);
|
|
174
|
+
return params.join("&");
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Helper method to build query parameter array from mapping.
|
|
178
|
+
* Uses exhaustive parameter mapping to ensure type safety and prevent missing parameters.
|
|
179
|
+
* Automatically handles URL encoding and filters out excluded parameters.
|
|
180
|
+
*
|
|
181
|
+
* @param queryArg - Object containing queryable properties
|
|
182
|
+
* @param mapping - Parameter mapping configuration that maps object properties to query parameter names
|
|
183
|
+
* @returns Array of formatted query parameter strings ready for URL construction
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const params = this.buildQueryParams(
|
|
188
|
+
* { top: 10, skip: 5 },
|
|
189
|
+
* { top: "$top", skip: "$skip" }
|
|
190
|
+
* );
|
|
191
|
+
* // Returns: ["$top=10", "$skip=5"]
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
buildQueryParams(queryArg, mapping) {
|
|
195
|
+
const params = [];
|
|
196
|
+
// Type assertion constrains paramKey to actual property names and mappedValue to the specific strings from the mapping
|
|
197
|
+
// Narrows from set of all strings to only valid keys/values
|
|
198
|
+
for (const [paramKey, mappedValue] of Object.entries(mapping)) {
|
|
199
|
+
if (mappedValue === "")
|
|
200
|
+
continue;
|
|
201
|
+
const queryArgValue = queryArg[paramKey];
|
|
202
|
+
if (queryArgValue !== undefined && queryArgValue !== null) {
|
|
203
|
+
const stringValue = String(queryArgValue);
|
|
204
|
+
params.push(`${mappedValue}=${encodeURIComponent(stringValue)}`);
|
|
205
|
+
}
|
|
96
206
|
}
|
|
97
|
-
|
|
98
|
-
return queryString.replace(/^&+/, "");
|
|
207
|
+
return params;
|
|
99
208
|
}
|
|
100
209
|
}
|
|
101
210
|
exports.BaseClient = BaseClient;
|
|
211
|
+
/**
|
|
212
|
+
* Maps the some properties of {@link ODataQueryParams} to their corresponding query parameter names.
|
|
213
|
+
*
|
|
214
|
+
* @remarks
|
|
215
|
+
* This mapping is used to translate internal property names to the expected parameter names
|
|
216
|
+
* when constructing requests. Properties mapped to empty strings are excluded from
|
|
217
|
+
* the query string as they should be sent as headers instead.
|
|
218
|
+
*
|
|
219
|
+
* The mapping includes OData query parameters (prefixed with $) for pagination.
|
|
220
|
+
*
|
|
221
|
+
* @readonly
|
|
222
|
+
*/
|
|
223
|
+
BaseClient.paginationParamMapping = {
|
|
224
|
+
top: "$top",
|
|
225
|
+
skip: "$skip",
|
|
226
|
+
};
|
|
102
227
|
//# sourceMappingURL=BaseClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\nimport type { AccessControlAPIResponse, AccessControlQueryArg } from \"../accessControlTypes\";\r\n\r\n// Custom types to replace axios types\r\ntype Method = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\r\n\r\ninterface RequestConfig {\r\n method: Method;\r\n url: string;\r\n data?: any;\r\n headers?: Record<string, string>;\r\n validateStatus?: (status: number) => boolean;\r\n}\r\n\r\nexport class BaseClient {\r\n protected _baseUrl: string = \"https://api.bentley.com/accesscontrol/itwins\";\r\n\r\n public constructor(url?: string) {\r\n if (url !== undefined) {\r\n this._baseUrl = url;\r\n } else {\r\n const urlPrefix = process.env.IMJS_URL_PREFIX;\r\n if (urlPrefix) {\r\n const baseUrl = new URL(this._baseUrl);\r\n baseUrl.hostname = urlPrefix + baseUrl.hostname;\r\n this._baseUrl = baseUrl.href;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sends a basic API request\r\n * @param accessToken The client access token\r\n * @param method The method type of the request (ex. GET, POST, DELETE, etc)\r\n * @param url The url of the request\r\n */\r\n protected async sendGenericAPIRequest(\r\n accessToken: AccessToken,\r\n method: Method,\r\n url: string,\r\n data?: any,\r\n property?: string,\r\n additionalHeaders?: { [key: string]: string }\r\n ): Promise<AccessControlAPIResponse<any>> { // TODO: Change any response\r\n const requestOptions = this.getRequestOptions(accessToken, method, url, data, additionalHeaders);\r\n try {\r\n const response = await fetch(requestOptions.url, {\r\n method: requestOptions.method,\r\n headers: requestOptions.headers,\r\n body: requestOptions.data ? JSON.stringify(requestOptions.data) : undefined,\r\n });\r\n\r\n let responseData: any;\r\n const contentType = response.headers.get(\"content-type\");\r\n\r\n if (contentType && contentType.includes(\"application/json\")) {\r\n responseData = await response.json();\r\n } else {\r\n responseData = await response.text();\r\n }\r\n\r\n // Convert Headers object to plain object for compatibility\r\n const headers: Record<string, string> = {};\r\n response.headers.forEach((value, key) => {\r\n headers[key] = value;\r\n });\r\n\r\n return {\r\n status: response.status,\r\n data: responseData?.error || responseData === \"\" ? undefined : property ? responseData[property] : responseData,\r\n error: responseData?.error,\r\n headers,\r\n };\r\n } catch (err) {\r\n return {\r\n status: 500,\r\n error: {\r\n code: \"InternalServerError\",\r\n message:\r\n \"An internal exception happened while calling iTwins Service\",\r\n },\r\n headers: {},\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Build the request methods, headers, and other options\r\n * @param accessToken The client access token\r\n */\r\n protected getRequestOptions(accessToken: AccessToken, method: Method, url: string, data?: any, additionalHeaders?: { [key: string]: string }): RequestConfig {\r\n return {\r\n method,\r\n url,\r\n data,\r\n headers: {\r\n \"authorization\": accessToken,\r\n \"content-type\": \"application/json\",\r\n \"accept\": \"application/vnd.bentley.itwin-platform.v2+json\",\r\n ...additionalHeaders,\r\n },\r\n validateStatus(status: number) {\r\n return status < 500; // Resolve only if the status code is less than 500\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Build a query to be appended to a URL\r\n * @param queryArg Object container queryable properties\r\n * @returns query string with AccessControlQueryArg applied, which should be appended to a url\r\n */\r\n protected getQueryString(queryArg: AccessControlQueryArg): string {\r\n let queryString = \"\";\r\n\r\n if (queryArg.top) {\r\n queryString += `&$top=${queryArg.top}`;\r\n }\r\n\r\n if (queryArg.skip) {\r\n queryString += `&$skip=${queryArg.skip}`;\r\n }\r\n\r\n // trim & from start of string\r\n return queryString.replace(/^&+/, \"\");\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\n\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\nimport type {\r\n ApimError,\r\n BentleyAPIResponse,\r\n Method,\r\n ODataQueryParams,\r\n RequestConfig,\r\n} from \"../types/CommonApiTypes\";\r\nimport { hasProperty, ParameterMapping } from \"../types/typeUtils\";\r\n\r\n/**\r\n * Type guard to validate if an object is a valid Error structure\r\n * @param error - Unknown object to validate\r\n * @returns True if the object is a valid Error type\r\n */\r\nfunction isValidError(error: unknown): error is ApimError {\r\n if (typeof error !== \"object\" || error === null) {\r\n return false;\r\n }\r\n\r\n const obj = error as Record<string, unknown>;\r\n return typeof obj.code === \"string\" && typeof obj.message === \"string\";\r\n}\r\n\r\n/**\r\n * Type guard to validate if response data contains an error\r\n * @param data - Unknown response data to validate\r\n * @returns True if the data contains a valid Error object\r\n */\r\nfunction isErrorResponse(data: unknown): data is { error: ApimError } {\r\n if (typeof data !== \"object\" || data === null) {\r\n return false;\r\n }\r\n\r\n const obj = data as Record<string, unknown>;\r\n return \"error\" in obj && isValidError(obj.error);\r\n}\r\n\r\n/**\r\n * Base client class providing common functionality for Access Control API requests.\r\n * Handles authentication, request configuration, and query string building, and error validation.\r\n */\r\nexport class BaseClient {\r\n protected _baseUrl: string = \"https://api.bentley.com/accesscontrol/itwins\";\r\n\r\n /**\r\n * Creates a new BaseClient instance for Access Control API operations\r\n * @param url - Optional custom base URL, defaults to production iTwins API URL\r\n *\r\n * @example\r\n * ```typescript\r\n * // Use default production URL\r\n * const client = new BaseClient();\r\n *\r\n * // Use custom URL for development/testing\r\n * const client = new ITwinsAccessClient(\"https://api.bentley.com/accesscontrol/itwins\");\r\n * ```\r\n */\r\n public constructor(url?: string) {\r\n if (url !== undefined) {\r\n this._baseUrl = url;\r\n } else {\r\n const urlPrefix = process.env.IMJS_URL_PREFIX;\r\n if (urlPrefix) {\r\n const baseUrl = new URL(this._baseUrl);\r\n baseUrl.hostname = urlPrefix + baseUrl.hostname;\r\n this._baseUrl = baseUrl.href;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Maps the some properties of {@link ODataQueryParams} to their corresponding query parameter names.\r\n *\r\n * @remarks\r\n * This mapping is used to translate internal property names to the expected parameter names\r\n * when constructing requests. Properties mapped to empty strings are excluded from\r\n * the query string as they should be sent as headers instead.\r\n *\r\n * The mapping includes OData query parameters (prefixed with $) for pagination.\r\n *\r\n * @readonly\r\n */\r\n protected static readonly paginationParamMapping: ParameterMapping<Pick<ODataQueryParams, \"top\" | \"skip\">> =\r\n {\r\n top: \"$top\",\r\n skip: \"$skip\",\r\n } as const;\r\n\r\n /**\r\n * Sends a basic API request to the specified URL with the given method and data.\r\n * @param accessToken The client access token\r\n * @param method The HTTP method of the request (GET, POST, DELETE, etc)\r\n * @param url The URL of the request\r\n * @param data Optional request body data\r\n * @param property Optional property name to extract from response data\r\n * @param additionalHeaders Optional additional headers to include in the request\r\n * @returns Promise resolving to a BentleyAPIResponse containing the response data or error\r\n */\r\n protected async sendGenericAPIRequest<TResponse = unknown, TData = unknown>(\r\n accessToken: AccessToken,\r\n method: Method,\r\n url: string,\r\n data?: TData,\r\n property?: string,\r\n additionalHeaders?: Record<string, string>\r\n ): Promise<BentleyAPIResponse<TResponse>> {\r\n const requestOptions = this.getRequestOptions(\r\n accessToken,\r\n method,\r\n url,\r\n data,\r\n additionalHeaders\r\n );\r\n try {\r\n const response = await fetch(requestOptions.url, {\r\n method: requestOptions.method,\r\n headers: requestOptions.headers,\r\n body: requestOptions.body,\r\n });\r\n // Convert Headers object to plain object for compatibility\r\n const headers: Record<string, string> = {};\r\n response.headers.forEach((value, key) => {\r\n headers[key] = value;\r\n });\r\n const responseData =\r\n response.status !== 204 ? await response.json() : undefined;\r\n\r\n if (!response.ok) {\r\n if (isErrorResponse(responseData)) {\r\n return {\r\n status: response.status,\r\n error: responseData.error,\r\n headers,\r\n };\r\n }\r\n throw new Error(\"An error occurred while processing the request\");\r\n }\r\n return {\r\n status: response.status,\r\n data:\r\n (responseData === \"\" || responseData === undefined\r\n ? undefined\r\n : property && hasProperty(responseData, property)\r\n ? responseData[property]\r\n : responseData) as TResponse,\r\n headers,\r\n };\r\n } catch {\r\n return {\r\n status: 500,\r\n error: {\r\n code: \"InternalServerError\",\r\n message:\r\n \"An internal exception happened while calling iTwins Service\",\r\n },\r\n headers: {},\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Build the request configuration including method, headers, and body\r\n * @param accessTokenString The client access token\r\n * @param method The HTTP method of the request\r\n * @param url The URL of the request\r\n * @param data Optional request body data\r\n * @param additionalHeaders Optional additional headers to include in the request\r\n * @returns RequestConfig object with method, url, body, and headers\r\n */\r\n protected getRequestOptions<TData>(\r\n accessTokenString: AccessToken,\r\n method: Method,\r\n url: string,\r\n data?: TData,\r\n additionalHeaders?: Record<string, string>\r\n ): RequestConfig {\r\n if (!accessTokenString) {\r\n throw new Error(\"Access token is required\");\r\n }\r\n\r\n if (!url) {\r\n throw new Error(\"URL is required\");\r\n }\r\n const body: string | undefined = JSON.stringify(data);\r\n\r\n return {\r\n method,\r\n url,\r\n body,\r\n headers: {\r\n authorization: accessTokenString,\r\n \"content-type\": \"application/json\",\r\n accept: \"application/vnd.bentley.itwin-platform.v2+json\",\r\n ...additionalHeaders,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Builds a query string to be appended to a URL from query arguments\r\n * @param parameterMapping - Parameter mapping configuration that maps object properties to query parameter names\r\n * @param queryArg - Object containing queryable properties for filtering\r\n * @returns Query string with parameters applied, ready to append to a URL\r\n *\r\n * @example\r\n * ```typescript\r\n * const queryString = this.getQueryString(\r\n * BaseClient.paginationParamMapping,\r\n * {\r\n * top: 10,\r\n * skip: 5,\r\n * }\r\n * );\r\n * // Returns: \"$top=10&$skip=5\"\r\n * ```\r\n */\r\n protected getQueryString<T>(\r\n parameterMapping: ParameterMapping<NonNullable<T>>,\r\n queryArg?: T\r\n ): string {\r\n if (!queryArg) return \"\";\r\n\r\n const params = this.buildQueryParams(queryArg, parameterMapping);\r\n return params.join(\"&\");\r\n }\r\n\r\n /**\r\n * Helper method to build query parameter array from mapping.\r\n * Uses exhaustive parameter mapping to ensure type safety and prevent missing parameters.\r\n * Automatically handles URL encoding and filters out excluded parameters.\r\n *\r\n * @param queryArg - Object containing queryable properties\r\n * @param mapping - Parameter mapping configuration that maps object properties to query parameter names\r\n * @returns Array of formatted query parameter strings ready for URL construction\r\n *\r\n * @example\r\n * ```typescript\r\n * const params = this.buildQueryParams(\r\n * { top: 10, skip: 5 },\r\n * { top: \"$top\", skip: \"$skip\" }\r\n * );\r\n * // Returns: [\"$top=10\", \"$skip=5\"]\r\n * ```\r\n */\r\n private buildQueryParams<T>(\r\n queryArg: T,\r\n mapping: ParameterMapping<T>\r\n ): string[] {\r\n const params: string[] = [];\r\n // Type assertion constrains paramKey to actual property names and mappedValue to the specific strings from the mapping\r\n // Narrows from set of all strings to only valid keys/values\r\n for (const [paramKey, mappedValue] of Object.entries(mapping) as [\r\n keyof T,\r\n ParameterMapping<T>[keyof T]\r\n ][]) {\r\n if (mappedValue === \"\") continue;\r\n const queryArgValue = queryArg[paramKey];\r\n if (queryArgValue !== undefined && queryArgValue !== null) {\r\n const stringValue = String(queryArgValue);\r\n params.push(`${mappedValue}=${encodeURIComponent(stringValue)}`);\r\n }\r\n }\r\n return params;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
+
import type { MultipleGroupMemberInvitationResponse } from "../access-control-client";
|
|
6
|
+
import type { IGroupMemberInvitationClient } from "../accessControlClientInterfaces/GroupMemberInvitationClient";
|
|
7
|
+
import type { BentleyAPIResponse, ODataQueryParams } from "../types/CommonApiTypes";
|
|
8
|
+
import { BaseClient } from "./BaseClient";
|
|
9
|
+
/** Client API to perform iTwin group members operations.
|
|
10
|
+
* @beta
|
|
11
|
+
*/
|
|
12
|
+
export declare class GroupMemberInvitationClient extends BaseClient implements IGroupMemberInvitationClient {
|
|
13
|
+
/** Create a new GroupMembersClient instance
|
|
14
|
+
* @param url Optional base URL for the access control service. If not provided, defaults to base url.
|
|
15
|
+
*/
|
|
16
|
+
constructor(url?: string);
|
|
17
|
+
/** Retrieves a list of iTwin group members and their roles assignments.
|
|
18
|
+
* @param accessToken The client access token string
|
|
19
|
+
* @param iTwinId The id of the iTwin
|
|
20
|
+
* @beta
|
|
21
|
+
* @returns Array of members
|
|
22
|
+
*/
|
|
23
|
+
queryITwinGroupMemberInvitations(accessToken: AccessToken, iTwinId: string, groupId: string, arg?: Pick<ODataQueryParams, "top" | "skip">): Promise<BentleyAPIResponse<MultipleGroupMemberInvitationResponse>>;
|
|
24
|
+
/** Deletes a member invitations.
|
|
25
|
+
* @param accessToken The client access token string
|
|
26
|
+
* @param iTwinId The id of the iTwin
|
|
27
|
+
* @param invitationId The id of the invitation id
|
|
28
|
+
* @beta
|
|
29
|
+
* @returns Array of member invitations
|
|
30
|
+
*/
|
|
31
|
+
deleteITwinGroupMemberInvitation(accessToken: AccessToken, iTwinId: string, groupId: string, invitationId: string): Promise<BentleyAPIResponse<undefined>>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=GroupMemberInvitationsClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupMemberInvitationsClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/GroupMemberInvitationsClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8DAA8D,CAAC;AACjH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,qBAAa,2BACX,SAAQ,UACR,YAAW,4BAA4B;IACvC;;OAEG;gBACgB,GAAG,CAAC,EAAE,MAAM;IAI/B;;;;;OAKG;IACU,gCAAgC,CAC3C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,MAAM,CAAC,GAC3C,OAAO,CAAC,kBAAkB,CAAC,qCAAqC,CAAC,CAAC;IAenE;;;;;;KAMC;IACU,gCAAgC,CAC3C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;CAI1C"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module AccessControlClient
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.GroupMemberInvitationClient = void 0;
|
|
11
|
+
const BaseClient_1 = require("./BaseClient");
|
|
12
|
+
/** Client API to perform iTwin group members operations.
|
|
13
|
+
* @beta
|
|
14
|
+
*/
|
|
15
|
+
class GroupMemberInvitationClient extends BaseClient_1.BaseClient {
|
|
16
|
+
/** Create a new GroupMembersClient instance
|
|
17
|
+
* @param url Optional base URL for the access control service. If not provided, defaults to base url.
|
|
18
|
+
*/
|
|
19
|
+
constructor(url) {
|
|
20
|
+
super(url);
|
|
21
|
+
}
|
|
22
|
+
/** Retrieves a list of iTwin group members and their roles assignments.
|
|
23
|
+
* @param accessToken The client access token string
|
|
24
|
+
* @param iTwinId The id of the iTwin
|
|
25
|
+
* @beta
|
|
26
|
+
* @returns Array of members
|
|
27
|
+
*/
|
|
28
|
+
async queryITwinGroupMemberInvitations(accessToken, iTwinId, groupId, arg) {
|
|
29
|
+
let url = `${this._baseUrl}/${iTwinId}/groups/${groupId}/invitations`;
|
|
30
|
+
if (arg) {
|
|
31
|
+
url += `?${this.getQueryString(GroupMemberInvitationClient.paginationParamMapping, { top: arg.top, skip: arg.skip })}`;
|
|
32
|
+
}
|
|
33
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url, undefined);
|
|
34
|
+
}
|
|
35
|
+
/** Deletes a member invitations.
|
|
36
|
+
* @param accessToken The client access token string
|
|
37
|
+
* @param iTwinId The id of the iTwin
|
|
38
|
+
* @param invitationId The id of the invitation id
|
|
39
|
+
* @beta
|
|
40
|
+
* @returns Array of member invitations
|
|
41
|
+
*/
|
|
42
|
+
async deleteITwinGroupMemberInvitation(accessToken, iTwinId, groupId, invitationId) {
|
|
43
|
+
const url = `${this._baseUrl}/${iTwinId}/groups/${groupId}/invitations/${invitationId}`;
|
|
44
|
+
return this.sendGenericAPIRequest(accessToken, "DELETE", url);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.GroupMemberInvitationClient = GroupMemberInvitationClient;
|
|
48
|
+
//# sourceMappingURL=GroupMemberInvitationsClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupMemberInvitationsClient.js","sourceRoot":"","sources":["../../../src/subClients/GroupMemberInvitationsClient.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAMH,6CAA0C;AAE1C;;GAEG;AACH,MAAa,2BACX,SAAQ,uBAAU;IAElB;;OAEG;IACH,YAAmB,GAAY;QAC7B,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,gCAAgC,CAC3C,WAAwB,EACxB,OAAe,EACf,OAAe,EACf,GAA4C;QAE5C,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,WAAW,OAAO,cAAc,CAAC;QAEtE,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACzH,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,EACX,KAAK,EACL,GAAG,EACH,SAAS,CACV,CAAC;IACJ,CAAC;IAEC;;;;;;KAMC;IACI,KAAK,CAAC,gCAAgC,CAC3C,WAAwB,EACxB,OAAe,EACf,OAAe,EACf,YAAoB;QAEpB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,WAAW,OAAO,gBAAgB,YAAY,EAAE,CAAC;QACxF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;CACF;AApDD,kEAoDC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module AccessControlClient\n */\n\nimport type { AccessToken } from \"@itwin/core-bentley\";\nimport type { MultipleGroupMemberInvitationResponse } from \"../access-control-client\";\nimport type { IGroupMemberInvitationClient } from \"../accessControlClientInterfaces/GroupMemberInvitationClient\";\nimport type { BentleyAPIResponse, ODataQueryParams } from \"../types/CommonApiTypes\";\nimport { BaseClient } from \"./BaseClient\";\n\n/** Client API to perform iTwin group members operations.\n * @beta\n */\nexport class GroupMemberInvitationClient\n extends BaseClient\n implements IGroupMemberInvitationClient {\n /** Create a new GroupMembersClient instance\n * @param url Optional base URL for the access control service. If not provided, defaults to base url.\n */\n public constructor(url?: string) {\n super(url);\n }\n\n /** Retrieves a list of iTwin group members and their roles assignments.\n * @param accessToken The client access token string\n * @param iTwinId The id of the iTwin\n * @beta\n * @returns Array of members\n */\n public async queryITwinGroupMemberInvitations(\n accessToken: AccessToken,\n iTwinId: string,\n groupId: string,\n arg?: Pick<ODataQueryParams, \"top\" | \"skip\">\n ): Promise<BentleyAPIResponse<MultipleGroupMemberInvitationResponse>> {\n let url = `${this._baseUrl}/${iTwinId}/groups/${groupId}/invitations`;\n\n if (arg) {\n url += `?${this.getQueryString(GroupMemberInvitationClient.paginationParamMapping, { top: arg.top, skip: arg.skip })}`;\n }\n\n return this.sendGenericAPIRequest(\n accessToken,\n \"GET\",\n url,\n undefined,\n );\n }\n\n /** Deletes a member invitations.\n * @param accessToken The client access token string\n * @param iTwinId The id of the iTwin\n * @param invitationId The id of the invitation id\n * @beta\n * @returns Array of member invitations\n */\n public async deleteITwinGroupMemberInvitation(\n accessToken: AccessToken,\n iTwinId: string,\n groupId: string,\n invitationId: string\n ): Promise<BentleyAPIResponse<undefined>> {\n const url = `${this._baseUrl}/${iTwinId}/groups/${groupId}/invitations/${invitationId}`;\n return this.sendGenericAPIRequest(accessToken, \"DELETE\", url);\n }\n}\n"]}
|