@itwin/access-control-client 0.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.
Files changed (59) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +15 -0
  3. package/lib/cjs/AccessControlClient.d.ts +10 -0
  4. package/lib/cjs/AccessControlClient.d.ts.map +1 -0
  5. package/lib/cjs/AccessControlClient.js +15 -0
  6. package/lib/cjs/AccessControlClient.js.map +1 -0
  7. package/lib/cjs/access-control-client.d.ts +3 -0
  8. package/lib/cjs/access-control-client.d.ts.map +1 -0
  9. package/lib/cjs/access-control-client.js +19 -0
  10. package/lib/cjs/access-control-client.js.map +1 -0
  11. package/lib/cjs/accessControlTypes.d.ts +80 -0
  12. package/lib/cjs/accessControlTypes.d.ts.map +1 -0
  13. package/lib/cjs/accessControlTypes.js +10 -0
  14. package/lib/cjs/accessControlTypes.js.map +1 -0
  15. package/lib/cjs/subClients/BaseClient.d.ts +30 -0
  16. package/lib/cjs/subClients/BaseClient.d.ts.map +1 -0
  17. package/lib/cjs/subClients/BaseClient.js +78 -0
  18. package/lib/cjs/subClients/BaseClient.js.map +1 -0
  19. package/lib/cjs/subClients/MembersClient.d.ts +44 -0
  20. package/lib/cjs/subClients/MembersClient.d.ts.map +1 -0
  21. package/lib/cjs/subClients/MembersClient.js +66 -0
  22. package/lib/cjs/subClients/MembersClient.js.map +1 -0
  23. package/lib/cjs/subClients/PermissionsClient.d.ts +20 -0
  24. package/lib/cjs/subClients/PermissionsClient.d.ts.map +1 -0
  25. package/lib/cjs/subClients/PermissionsClient.js +25 -0
  26. package/lib/cjs/subClients/PermissionsClient.js.map +1 -0
  27. package/lib/cjs/subClients/RolesClient.d.ts +43 -0
  28. package/lib/cjs/subClients/RolesClient.d.ts.map +1 -0
  29. package/lib/cjs/subClients/RolesClient.js +57 -0
  30. package/lib/cjs/subClients/RolesClient.js.map +1 -0
  31. package/lib/esm/AccessControlClient.d.ts +10 -0
  32. package/lib/esm/AccessControlClient.d.ts.map +1 -0
  33. package/lib/esm/AccessControlClient.js +11 -0
  34. package/lib/esm/AccessControlClient.js.map +1 -0
  35. package/lib/esm/access-control-client.d.ts +3 -0
  36. package/lib/esm/access-control-client.d.ts.map +1 -0
  37. package/lib/esm/access-control-client.js +7 -0
  38. package/lib/esm/access-control-client.js.map +1 -0
  39. package/lib/esm/accessControlTypes.d.ts +80 -0
  40. package/lib/esm/accessControlTypes.d.ts.map +1 -0
  41. package/lib/esm/accessControlTypes.js +9 -0
  42. package/lib/esm/accessControlTypes.js.map +1 -0
  43. package/lib/esm/subClients/BaseClient.d.ts +30 -0
  44. package/lib/esm/subClients/BaseClient.d.ts.map +1 -0
  45. package/lib/esm/subClients/BaseClient.js +74 -0
  46. package/lib/esm/subClients/BaseClient.js.map +1 -0
  47. package/lib/esm/subClients/MembersClient.d.ts +44 -0
  48. package/lib/esm/subClients/MembersClient.d.ts.map +1 -0
  49. package/lib/esm/subClients/MembersClient.js +62 -0
  50. package/lib/esm/subClients/MembersClient.js.map +1 -0
  51. package/lib/esm/subClients/PermissionsClient.d.ts +20 -0
  52. package/lib/esm/subClients/PermissionsClient.d.ts.map +1 -0
  53. package/lib/esm/subClients/PermissionsClient.js +21 -0
  54. package/lib/esm/subClients/PermissionsClient.js.map +1 -0
  55. package/lib/esm/subClients/RolesClient.d.ts +43 -0
  56. package/lib/esm/subClients/RolesClient.d.ts.map +1 -0
  57. package/lib/esm/subClients/RolesClient.js +53 -0
  58. package/lib/esm/subClients/RolesClient.js.map +1 -0
  59. package/package.json +69 -0
package/LICENSE.md ADDED
@@ -0,0 +1,9 @@
1
+ # MIT License
2
+
3
+ Copyright © 2022 Bentley Systems, Incorporated. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # Access Control Client Library
2
+
3
+ Copyright © Bentley Systems, Incorporated. All rights reserved. See [LICENSE.md](./LICENSE.md) for license terms and full copyright notice.
4
+
5
+ [iTwin.js](http://www.itwinjs.org) is an open source platform for creating, querying, modifying, and displaying Infrastructure Digital Twins. To learn more about the iTwin Platform and its APIs, visit the [iTwin developer portal](https://developer.bentley.com/).
6
+
7
+ If you have questions, or wish to contribute to iTwin.js, see our [Contributing guide](./CONTRIBUTING.md).
8
+
9
+ ## About this Repository
10
+
11
+ Contains the __@itwin/access-control-client__ package that wraps sending requests to the access control service. Visit the [iTwins API](https://developer.bentley.com/apis/access-control/) for more documentation on the iTwins service.
12
+
13
+ ## Contributing to this Repository
14
+
15
+ For information on how to contribute to this project, please read [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines, [GETTINGSTARTED.md](GETTINGSTARTED.md) for information on working with the documentation in this repository.
@@ -0,0 +1,10 @@
1
+ /** @packageDocumentation
2
+ * @module AccessControlClient
3
+ */
4
+ import type { IAccessControlClient, IMembersClient, IPermissionsClient, IRolesClient } from "./accessControlTypes";
5
+ export declare class AccessControlClient implements IAccessControlClient {
6
+ permissions: IPermissionsClient;
7
+ roles: IRolesClient;
8
+ members: IMembersClient;
9
+ }
10
+ //# sourceMappingURL=AccessControlClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessControlClient.d.ts","sourceRoot":"","sources":["../../src/AccessControlClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKnH,qBAAa,mBAAoB,YAAW,oBAAoB;IACvD,WAAW,EAAE,kBAAkB,CAA2B;IAC1D,KAAK,EAAE,YAAY,CAAqB;IACxC,OAAO,EAAE,cAAc,CAAuB;CACtD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessControlClient = void 0;
4
+ const MembersClient_1 = require("./subClients/MembersClient");
5
+ const PermissionsClient_1 = require("./subClients/PermissionsClient");
6
+ const RolesClient_1 = require("./subClients/RolesClient");
7
+ class AccessControlClient {
8
+ constructor() {
9
+ this.permissions = new PermissionsClient_1.PermissionsClient();
10
+ this.roles = new RolesClient_1.RolesClient();
11
+ this.members = new MembersClient_1.MembersClient();
12
+ }
13
+ }
14
+ exports.AccessControlClient = AccessControlClient;
15
+ //# sourceMappingURL=AccessControlClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessControlClient.js","sourceRoot":"","sources":["../../src/AccessControlClient.ts"],"names":[],"mappings":";;;AAQA,8DAA2D;AAC3D,sEAAmE;AACnE,0DAAuD;AAEvD,MAAa,mBAAmB;IAAhC;QACS,gBAAW,GAAuB,IAAI,qCAAiB,EAAE,CAAC;QAC1D,UAAK,GAAiB,IAAI,yBAAW,EAAE,CAAC;QACxC,YAAO,GAAmB,IAAI,6BAAa,EAAE,CAAC;IACvD,CAAC;CAAA;AAJD,kDAIC","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 { IAccessControlClient, IMembersClient, IPermissionsClient, IRolesClient } from \"./accessControlTypes\";\r\nimport { MembersClient } from \"./subClients/MembersClient\";\r\nimport { PermissionsClient } from \"./subClients/PermissionsClient\";\r\nimport { RolesClient } from \"./subClients/RolesClient\";\r\n\r\nexport class AccessControlClient implements IAccessControlClient {\r\n public permissions: IPermissionsClient = new PermissionsClient();\r\n public roles: IRolesClient = new RolesClient();\r\n public members: IMembersClient = new MembersClient();\r\n}\r\n"]}
@@ -0,0 +1,3 @@
1
+ export * from "./AccessControlClient";
2
+ export * from "./accessControlTypes";
3
+ //# sourceMappingURL=access-control-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-control-client.d.ts","sourceRoot":"","sources":["../../src/access-control-client.ts"],"names":[],"mappings":"AAIA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ /*---------------------------------------------------------------------------------------------
14
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
15
+ * See LICENSE.md in the project root for license terms and full copyright notice.
16
+ *--------------------------------------------------------------------------------------------*/
17
+ __exportStar(require("./AccessControlClient"), exports);
18
+ __exportStar(require("./accessControlTypes"), exports);
19
+ //# sourceMappingURL=access-control-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-control-client.js","sourceRoot":"","sources":["../../src/access-control-client.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,wDAAsC;AACtC,uDAAqC","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\nexport * from \"./AccessControlClient\";\r\nexport * from \"./accessControlTypes\";\r\n"]}
@@ -0,0 +1,80 @@
1
+ /** @packageDocumentation
2
+ * @module AccessControlClient
3
+ */
4
+ import type { AccessToken } from "@itwin/core-bentley";
5
+ export interface IAccessControlClient {
6
+ permissions: IPermissionsClient;
7
+ roles: IRolesClient;
8
+ members: IMembersClient;
9
+ }
10
+ export interface IPermissionsClient {
11
+ /** Retrieves the list of all available permissions **/
12
+ getPermissionsAsync(accessToken: AccessToken): Promise<AccessControlAPIResponse<Permission[]>>;
13
+ /** Retrieves a list of permissions the identity has for a specified iTwin */
14
+ getITwinPermissionsAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Permission[]>>;
15
+ }
16
+ export interface IMembersClient {
17
+ /** Retrieves a list of team members and their roles assigned to a specified iTwin. */
18
+ queryITwinMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<Member[]>>;
19
+ /** Retrieves a specific member for a specified iTwin. */
20
+ getITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<Member>>;
21
+ /** Add new iTwin members */
22
+ addITwinMembersAsync(accessToken: AccessToken, iTwinId: string, newMembers: NewMember[]): Promise<AccessControlAPIResponse<undefined>>;
23
+ /** Remove the specified iTwin member */
24
+ removeITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>;
25
+ /** Update iTwin team member roles */
26
+ updateITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<AccessControlAPIResponse<Member>>;
27
+ }
28
+ export interface IRolesClient {
29
+ /** Retrieves a list of roles the for a specified iTwin */
30
+ getITwinRolesAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Role[]>>;
31
+ /** Retrieves a role for a specified iTwin */
32
+ getITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<Role>>;
33
+ /** Creates a new iTwin Role */
34
+ createITwinRoleAsync(accessToken: AccessToken, iTwinId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
35
+ /** Removes an existing iTwin Role */
36
+ deleteITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<undefined>>;
37
+ /** Updates an existing iTwin Role */
38
+ updateITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
39
+ }
40
+ export interface AccessControlQueryArg {
41
+ top?: number;
42
+ skip?: number;
43
+ }
44
+ export interface AccessControlAPIResponse<T> {
45
+ data?: T;
46
+ status: number;
47
+ error?: Error;
48
+ }
49
+ export interface Error {
50
+ code: string;
51
+ message: string;
52
+ details?: ErrorDetail[];
53
+ target?: string;
54
+ }
55
+ export interface ErrorDetail {
56
+ code: string;
57
+ message: string;
58
+ target?: string;
59
+ }
60
+ export declare type Permission = string;
61
+ export interface Member {
62
+ id: string;
63
+ email: string;
64
+ givenName: string;
65
+ surname: string;
66
+ organization: string;
67
+ roles: Omit<Role, "permissions">[];
68
+ }
69
+ export interface NewMember {
70
+ email: string;
71
+ roleId: string;
72
+ }
73
+ export interface Role {
74
+ id: string;
75
+ displayName: string;
76
+ description: string;
77
+ permissions: Permission[];
78
+ }
79
+ export declare type NewRole = Omit<Role, "id">;
80
+ //# sourceMappingURL=accessControlTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessControlTypes.d.ts","sourceRoot":"","sources":["../../src/accessControlTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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
+ //# sourceMappingURL=accessControlTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessControlTypes.js","sourceRoot":"","sources":["../../src/accessControlTypes.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG","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\n\r\nexport interface IAccessControlClient {\r\n permissions: IPermissionsClient;\r\n roles: IRolesClient;\r\n members: IMembersClient;\r\n}\r\n\r\nexport interface IPermissionsClient {\r\n /** Retrieves the list of all available permissions **/\r\n getPermissionsAsync(\r\n accessToken: AccessToken,\r\n ): Promise<AccessControlAPIResponse<Permission[]>>;\r\n\r\n /** Retrieves a list of permissions the identity has for a specified iTwin */\r\n getITwinPermissionsAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string\r\n ): Promise<AccessControlAPIResponse<Permission[]>>;\r\n}\r\n\r\nexport interface IMembersClient{\r\n /** Retrieves a list of team members and their roles assigned to a specified iTwin. */\r\n queryITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n arg?: AccessControlQueryArg\r\n ): Promise<AccessControlAPIResponse<Member[]>>;\r\n\r\n /** Retrieves a specific member for a specified iTwin. */\r\n getITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<Member>>;\r\n\r\n /** Add new iTwin members */\r\n addITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n newMembers: NewMember[]\r\n ): Promise<AccessControlAPIResponse<undefined>>;\r\n\r\n /** Remove the specified iTwin member */\r\n removeITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<undefined>>;\r\n\r\n /** Update iTwin team member roles */\r\n updateITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string,\r\n roleIds: string[]\r\n ): Promise<AccessControlAPIResponse<Member>>;\r\n}\r\n\r\nexport interface IRolesClient {\r\n /** Retrieves a list of roles the for a specified iTwin */\r\n getITwinRolesAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n ): Promise<AccessControlAPIResponse<Role[]>>;\r\n\r\n /** Retrieves a role for a specified iTwin */\r\n getITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n ): Promise<AccessControlAPIResponse<Role>>;\r\n\r\n /** Creates a new iTwin Role */\r\n createITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n role: NewRole\r\n ): Promise<AccessControlAPIResponse<Role>>;\r\n\r\n /** Removes an existing iTwin Role */\r\n deleteITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n ): Promise<AccessControlAPIResponse<undefined>>;\r\n\r\n /** Updates an existing iTwin Role */\r\n updateITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n role: NewRole\r\n ): Promise<AccessControlAPIResponse<Role>>;\r\n}\r\n\r\nexport interface AccessControlQueryArg {\r\n top?: number;\r\n skip?: number;\r\n}\r\n\r\nexport interface AccessControlAPIResponse<T> {\r\n data?: T;\r\n status: number;\r\n error?: Error;\r\n}\r\n\r\nexport interface Error {\r\n code: string;\r\n message: string;\r\n details?: ErrorDetail[];\r\n target?: string;\r\n}\r\n\r\nexport interface ErrorDetail {\r\n code: string;\r\n message: string;\r\n target?: string;\r\n}\r\n\r\nexport type Permission = string;\r\n\r\nexport interface Member {\r\n id: string;\r\n email: string;\r\n givenName: string;\r\n surname: string;\r\n organization: string;\r\n roles: Omit<Role, \"permissions\">[];\r\n}\r\n\r\nexport interface NewMember {\r\n email: string;\r\n roleId: string;\r\n}\r\n\r\nexport interface Role {\r\n id: string;\r\n displayName: string;\r\n description: string;\r\n permissions: Permission[];\r\n}\r\n\r\nexport type NewRole = Omit<Role, \"id\">;\r\n"]}
@@ -0,0 +1,30 @@
1
+ /** @packageDocumentation
2
+ * @module AccessControlClient
3
+ */
4
+ import type { AccessToken } from "@itwin/core-bentley";
5
+ import type { Method } from "axios";
6
+ import type { AxiosRequestConfig } from "axios";
7
+ import type { AccessControlAPIResponse, AccessControlQueryArg } from "../accessControlTypes";
8
+ export declare class BaseClient {
9
+ protected _baseUrl: string;
10
+ constructor();
11
+ /**
12
+ * Sends a basic API request
13
+ * @param accessTokenString The client access token string
14
+ * @param method The method type of the request (ex. GET, POST, DELETE, etc)
15
+ * @param url The url of the request
16
+ */
17
+ protected sendGenericAPIRequest(accessToken: AccessToken, method: Method, url: string, data?: any, property?: string): Promise<AccessControlAPIResponse<any>>;
18
+ /**
19
+ * Build the request methods, headers, and other options
20
+ * @param accessTokenString The client access token string
21
+ */
22
+ protected getRequestOptions(accessTokenString: string, method: Method, url: string, data?: any): AxiosRequestConfig;
23
+ /**
24
+ * Build a query to be appended to a URL
25
+ * @param queryArg Object container queryable properties
26
+ * @returns query string with AccessControlQueryArg applied, which should be appended to a url
27
+ */
28
+ protected getQueryString(queryArg: AccessControlQueryArg): string;
29
+ }
30
+ //# sourceMappingURL=BaseClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAE5F,qBAAa,UAAU;IACrB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAkD;;IAW5E;;;;;QAKI;cACY,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAuBzC;;;QAGI;IACJ,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,kBAAkB;IAenH;;;;QAII;IACJ,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM;CAgBlE"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseClient = void 0;
4
+ const axios_1 = require("axios");
5
+ class BaseClient {
6
+ constructor() {
7
+ this._baseUrl = "https://api.bentley.com/accesscontrol/itwins";
8
+ const urlPrefix = process.env.IMJS_URL_PREFIX;
9
+ if (urlPrefix) {
10
+ const baseUrl = new URL(this._baseUrl);
11
+ baseUrl.hostname = urlPrefix + baseUrl.hostname;
12
+ this._baseUrl = baseUrl.href;
13
+ }
14
+ }
15
+ /**
16
+ * Sends a basic API request
17
+ * @param accessTokenString The client access token string
18
+ * @param method The method type of the request (ex. GET, POST, DELETE, etc)
19
+ * @param url The url of the request
20
+ */
21
+ async sendGenericAPIRequest(accessToken, method, url, data, property) {
22
+ const requestOptions = this.getRequestOptions(accessToken, method, url, data);
23
+ try {
24
+ const response = await (0, axios_1.default)(requestOptions);
25
+ return {
26
+ status: response.status,
27
+ data: response.data.error || response.data === "" ? undefined : property ? response.data[property] : response.data,
28
+ error: response.data.error,
29
+ };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ status: 500,
34
+ error: {
35
+ code: "InternalServerError",
36
+ message: "An internal exception happened while calling iTwins Service",
37
+ },
38
+ };
39
+ }
40
+ }
41
+ /**
42
+ * Build the request methods, headers, and other options
43
+ * @param accessTokenString The client access token string
44
+ */
45
+ getRequestOptions(accessTokenString, method, url, data) {
46
+ return {
47
+ method,
48
+ url,
49
+ data,
50
+ headers: {
51
+ "authorization": accessTokenString,
52
+ "content-type": "application/json",
53
+ },
54
+ validateStatus(status) {
55
+ return status < 500; // Resolve only if the status code is less than 500
56
+ },
57
+ };
58
+ }
59
+ /**
60
+ * Build a query to be appended to a URL
61
+ * @param queryArg Object container queryable properties
62
+ * @returns query string with AccessControlQueryArg applied, which should be appended to a url
63
+ */
64
+ getQueryString(queryArg) {
65
+ let queryString = "";
66
+ if (queryArg.top) {
67
+ queryString += `&$top=${queryArg.top}`;
68
+ }
69
+ if (queryArg.skip) {
70
+ queryString += `&$skip=${queryArg.skip}`;
71
+ }
72
+ // trim & from start of string
73
+ queryString.replace(/^&+/, "");
74
+ return queryString;
75
+ }
76
+ }
77
+ exports.BaseClient = BaseClient;
78
+ //# sourceMappingURL=BaseClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":";;;AAUA,iCAA0B;AAG1B,MAAa,UAAU;IAGrB;QAFU,aAAQ,GAAW,8CAA8C,CAAC;QAG1E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC9C,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;SAC9B;IACH,CAAC;IAED;;;;;QAKI;IACM,KAAK,CAAC,qBAAqB,CACnC,WAAwB,EACxB,MAAc,EACd,GAAW,EACX,IAAU,EACV,QAAiB;QAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9E,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC,cAAc,CAAC,CAAC;YAE7C,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;gBAClH,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;aAC3B,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EACJ,6DAA6D;iBACjE;aACF,CAAC;SACH;IACH,CAAC;IAED;;;QAGI;IACM,iBAAiB,CAAC,iBAAyB,EAAE,MAAc,EAAE,GAAW,EAAE,IAAU;QAC5F,OAAO;YACL,MAAM;YACN,GAAG;YACH,IAAI;YACJ,OAAO,EAAE;gBACP,eAAe,EAAE,iBAAiB;gBAClC,cAAc,EAAE,kBAAkB;aACnC;YACD,cAAc,CAAC,MAAM;gBACnB,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,mDAAmD;YAC1E,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;QAII;IACM,cAAc,CAAC,QAA+B;QACtD,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,QAAQ,CAAC,GAAG,EAAE;YAChB,WAAW,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,CAAC;SACxC;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,WAAW,IAAI,UAAU,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC1C;QAED,8BAA8B;QAC9B,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAvFD,gCAuFC","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 { Method } from \"axios\";\r\nimport type { AxiosRequestConfig } from \"axios\";\r\nimport axios from \"axios\";\r\nimport type { AccessControlAPIResponse, AccessControlQueryArg} from \"../accessControlTypes\";\r\n\r\nexport class BaseClient {\r\n protected _baseUrl: string = \"https://api.bentley.com/accesscontrol/itwins\";\r\n\r\n public constructor() {\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 * Sends a basic API request\r\n * @param accessTokenString The client access token string\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 ): Promise<AccessControlAPIResponse<any>> { // TODO: Change any response\r\n const requestOptions = this.getRequestOptions(accessToken, method, url, data);\r\n\r\n try {\r\n const response = await axios(requestOptions);\r\n\r\n return {\r\n status: response.status,\r\n data: response.data.error || response.data === \"\" ? undefined : property ? response.data[property] : response.data,\r\n error: response.data.error,\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 };\r\n }\r\n }\r\n\r\n /**\r\n * Build the request methods, headers, and other options\r\n * @param accessTokenString The client access token string\r\n */\r\n protected getRequestOptions(accessTokenString: string, method: Method, url: string, data?: any): AxiosRequestConfig {\r\n return {\r\n method,\r\n url,\r\n data,\r\n headers: {\r\n \"authorization\": accessTokenString,\r\n \"content-type\": \"application/json\",\r\n },\r\n validateStatus(status) {\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 queryString.replace(/^&+/, \"\");\r\n\r\n return queryString;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,44 @@
1
+ /** @packageDocumentation
2
+ * @module AccessControlClient
3
+ */
4
+ import type { AccessToken } from "@itwin/core-bentley";
5
+ import type { AccessControlAPIResponse, AccessControlQueryArg, IMembersClient, Member, NewMember } from "../accessControlTypes";
6
+ import { BaseClient } from "./BaseClient";
7
+ export declare class MembersClient extends BaseClient implements IMembersClient {
8
+ /** Retrieves a list of iTwin members and their roles assignments.
9
+ * @param accessToken The client access token string
10
+ * @param iTwinId The id of the iTwin
11
+ * @returns Array of members
12
+ */
13
+ queryITwinMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<Member[]>>;
14
+ /** Retrieves a specific member for a specified iTwin.
15
+ * @param accessToken The client access token string
16
+ * @param iTwinId The id of the iTwin
17
+ * @param memberId The id of the member
18
+ * @returns Member
19
+ */
20
+ getITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<Member>>;
21
+ /** Add new iTwin members
22
+ * @param accessToken The client access token string
23
+ * @param iTwinId The id of the iTwin
24
+ * @param newMembers The list of new members to be added along with their role
25
+ * @returns No Content
26
+ */
27
+ addITwinMembersAsync(accessToken: AccessToken, iTwinId: string, newMembers: NewMember[]): Promise<AccessControlAPIResponse<undefined>>;
28
+ /** Remove the specified member from the iTwin
29
+ * @param accessToken The client access token string
30
+ * @param iTwinId The id of the iTwin
31
+ * @param memberId The id of the member
32
+ * @returns No Content
33
+ */
34
+ removeITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>;
35
+ /** Update iTwin team member roles
36
+ * @param accessToken The client access token string
37
+ * @param iTwinId The id of the iTwin
38
+ * @param memberId The id of the member
39
+ * @param roleIds The ids of the roles to be assigned
40
+ * @returns Member
41
+ */
42
+ updateITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<AccessControlAPIResponse<Member>>;
43
+ }
44
+ //# sourceMappingURL=MembersClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MembersClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/MembersClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,aAAc,SAAQ,UAAW,YAAW,cAAc;IACrE;;;;QAII;IACS,sBAAsB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,qBAAqB,GAC1B,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC;IAM9C;;;;;QAKI;IACS,mBAAmB,CAC9B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAK5C;;;;;QAKI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAQ/C;;;;;QAKI;IACS,sBAAsB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAK/C;;;;;;QAMI;IACS,sBAAsB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;CAO7C"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MembersClient = void 0;
4
+ const BaseClient_1 = require("./BaseClient");
5
+ class MembersClient extends BaseClient_1.BaseClient {
6
+ /** Retrieves a list of iTwin members and their roles assignments.
7
+ * @param accessToken The client access token string
8
+ * @param iTwinId The id of the iTwin
9
+ * @returns Array of members
10
+ */
11
+ async queryITwinMembersAsync(accessToken, iTwinId, arg) {
12
+ let url = `${this._baseUrl}/${iTwinId}/members`;
13
+ if (arg)
14
+ url += `?${this.getQueryString(arg)}`;
15
+ return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "members"); // TODO: Consider how to handle paging
16
+ }
17
+ /** Retrieves a specific member for a specified iTwin.
18
+ * @param accessToken The client access token string
19
+ * @param iTwinId The id of the iTwin
20
+ * @param memberId The id of the member
21
+ * @returns Member
22
+ */
23
+ async getITwinMemberAsync(accessToken, iTwinId, memberId) {
24
+ const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;
25
+ return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "member");
26
+ }
27
+ /** Add new iTwin members
28
+ * @param accessToken The client access token string
29
+ * @param iTwinId The id of the iTwin
30
+ * @param newMembers The list of new members to be added along with their role
31
+ * @returns No Content
32
+ */
33
+ async addITwinMembersAsync(accessToken, iTwinId, newMembers) {
34
+ const url = `${this._baseUrl}/${iTwinId}/members`;
35
+ const body = {
36
+ members: newMembers,
37
+ };
38
+ return this.sendGenericAPIRequest(accessToken, "POST", url, body);
39
+ }
40
+ /** Remove the specified member from the iTwin
41
+ * @param accessToken The client access token string
42
+ * @param iTwinId The id of the iTwin
43
+ * @param memberId The id of the member
44
+ * @returns No Content
45
+ */
46
+ async removeITwinMemberAsync(accessToken, iTwinId, memberId) {
47
+ const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;
48
+ return this.sendGenericAPIRequest(accessToken, "DELETE", url);
49
+ }
50
+ /** Update iTwin team member roles
51
+ * @param accessToken The client access token string
52
+ * @param iTwinId The id of the iTwin
53
+ * @param memberId The id of the member
54
+ * @param roleIds The ids of the roles to be assigned
55
+ * @returns Member
56
+ */
57
+ async updateITwinMemberAsync(accessToken, iTwinId, memberId, roleIds) {
58
+ const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;
59
+ const body = {
60
+ roleIds,
61
+ };
62
+ return this.sendGenericAPIRequest(accessToken, "PATCH", url, body, "member");
63
+ }
64
+ }
65
+ exports.MembersClient = MembersClient;
66
+ //# sourceMappingURL=MembersClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MembersClient.js","sourceRoot":"","sources":["../../../src/subClients/MembersClient.ts"],"names":[],"mappings":";;;AASA,6CAA0C;AAE1C,MAAa,aAAc,SAAQ,uBAAU;IAC3C;;;;QAII;IACG,KAAK,CAAC,sBAAsB,CACjC,WAAwB,EACxB,OAAe,EACf,GAA2B;QAE3B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,CAAC;QAChD,IAAI,GAAG;YAAE,GAAG,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,sCAAsC;IAC1H,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,mBAAmB,CAC9B,WAAwB,EACxB,OAAe,EACf,QAAgB;QAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,oBAAoB,CAC/B,WAAwB,EACxB,OAAe,EACf,UAAuB;QAEvB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,CAAC;QAClD,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,UAAU;SACpB,CAAC;QACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,sBAAsB,CACjC,WAAwB,EACxB,OAAe,EACf,QAAgB;QAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;QAMI;IACG,KAAK,CAAC,sBAAsB,CACjC,WAAwB,EACxB,OAAe,EACf,QAAgB,EAChB,OAAiB;QAEjB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG;YACX,OAAO;SACR,CAAC;QACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;CACF;AAnFD,sCAmFC","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, IMembersClient, Member, NewMember } from \"../accessControlTypes\";\r\nimport { BaseClient } from \"./BaseClient\";\r\n\r\nexport class MembersClient extends BaseClient implements IMembersClient{\r\n /** Retrieves a list of iTwin members and their roles assignments.\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @returns Array of members\r\n */\r\n public async queryITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n arg?: AccessControlQueryArg\r\n ): Promise<AccessControlAPIResponse<Member[]>>{\r\n let url = `${this._baseUrl}/${iTwinId}/members`;\r\n if (arg) url += `?${this.getQueryString(arg)}`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"members\"); // TODO: Consider how to handle paging\r\n }\r\n\r\n /** Retrieves a specific member for a specified iTwin.\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param memberId The id of the member\r\n * @returns Member\r\n */\r\n public async getITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<Member>>{\r\n const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"member\");\r\n }\r\n\r\n /** Add new iTwin members\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param newMembers The list of new members to be added along with their role\r\n * @returns No Content\r\n */\r\n public async addITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n newMembers: NewMember[]\r\n ): Promise<AccessControlAPIResponse<undefined>>{\r\n const url = `${this._baseUrl}/${iTwinId}/members`;\r\n const body = {\r\n members: newMembers,\r\n };\r\n return this.sendGenericAPIRequest(accessToken, \"POST\", url, body);\r\n }\r\n\r\n /** Remove the specified member from the iTwin\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param memberId The id of the member\r\n * @returns No Content\r\n */\r\n public async removeITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<undefined>> {\r\n const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"DELETE\", url);\r\n }\r\n\r\n /** Update iTwin team member roles\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param memberId The id of the member\r\n * @param roleIds The ids of the roles to be assigned\r\n * @returns Member\r\n */\r\n public async updateITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string,\r\n roleIds: string[]\r\n ): Promise<AccessControlAPIResponse<Member>> {\r\n const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;\r\n const body = {\r\n roleIds,\r\n };\r\n return this.sendGenericAPIRequest(accessToken, \"PATCH\", url, body, \"member\");\r\n }\r\n}\r\n"]}
@@ -0,0 +1,20 @@
1
+ /** @packageDocumentation
2
+ * @module AccessControlClient
3
+ */
4
+ import type { AccessToken } from "@itwin/core-bentley";
5
+ import type { AccessControlAPIResponse, IPermissionsClient, Permission } from "../accessControlTypes";
6
+ import { BaseClient } from "./BaseClient";
7
+ export declare class PermissionsClient extends BaseClient implements IPermissionsClient {
8
+ /** Retrieves the list of all available permissions
9
+ * @param accessToken The client access token string
10
+ * @returns Array of permissions
11
+ */
12
+ getPermissionsAsync(accessToken: AccessToken): Promise<AccessControlAPIResponse<Permission[]>>;
13
+ /** Retrieves a list of permissions the identity has for a specified iTwin
14
+ * @param accessToken The client access token string
15
+ * @param iTwinId The id of the iTwin
16
+ * @returns Array of permissions
17
+ */
18
+ getITwinPermissionsAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Permission[]>>;
19
+ }
20
+ //# sourceMappingURL=PermissionsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/PermissionsClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,iBAAkB,SAAQ,UAAW,YAAW,kBAAkB;IAC7E;;;QAGI;IACS,mBAAmB,CAC9B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,CAAC;IAKlD;;;;QAII;IACS,wBAAwB,CACnC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,CAAC;CAInD"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionsClient = void 0;
4
+ const BaseClient_1 = require("./BaseClient");
5
+ class PermissionsClient extends BaseClient_1.BaseClient {
6
+ /** Retrieves the list of all available permissions
7
+ * @param accessToken The client access token string
8
+ * @returns Array of permissions
9
+ */
10
+ async getPermissionsAsync(accessToken) {
11
+ const url = `${this._baseUrl}/permissions`;
12
+ return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "permissions");
13
+ }
14
+ /** Retrieves a list of permissions the identity has for a specified iTwin
15
+ * @param accessToken The client access token string
16
+ * @param iTwinId The id of the iTwin
17
+ * @returns Array of permissions
18
+ */
19
+ async getITwinPermissionsAsync(accessToken, iTwinId) {
20
+ const url = `${this._baseUrl}/${iTwinId}/permissions`;
21
+ return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "permissions");
22
+ }
23
+ }
24
+ exports.PermissionsClient = PermissionsClient;
25
+ //# sourceMappingURL=PermissionsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsClient.js","sourceRoot":"","sources":["../../../src/subClients/PermissionsClient.ts"],"names":[],"mappings":";;;AASA,6CAA0C;AAE1C,MAAa,iBAAkB,SAAQ,uBAAU;IAC/C;;;QAGI;IACG,KAAK,CAAC,mBAAmB,CAC9B,WAAwB;QAExB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,cAAc,CAAC;QAC3C,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACvF,CAAC;IAED;;;;QAII;IACG,KAAK,CAAC,wBAAwB,CACnC,WAAwB,EACxB,OAAe;QAEf,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,cAAc,CAAC;QACtD,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACvF,CAAC;CACF;AAxBD,8CAwBC","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, IPermissionsClient, Permission } from \"../accessControlTypes\";\r\nimport { BaseClient } from \"./BaseClient\";\r\n\r\nexport class PermissionsClient extends BaseClient implements IPermissionsClient{\r\n /** Retrieves the list of all available permissions\r\n * @param accessToken The client access token string\r\n * @returns Array of permissions\r\n */\r\n public async getPermissionsAsync(\r\n accessToken: AccessToken,\r\n ): Promise<AccessControlAPIResponse<Permission[]>>{\r\n const url = `${this._baseUrl}/permissions`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"permissions\");\r\n }\r\n\r\n /** Retrieves a list of permissions the identity has for a specified iTwin\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @returns Array of permissions\r\n */\r\n public async getITwinPermissionsAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n ): Promise<AccessControlAPIResponse<Permission[]>>{\r\n const url = `${this._baseUrl}/${iTwinId}/permissions`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"permissions\");\r\n }\r\n}\r\n"]}
@@ -0,0 +1,43 @@
1
+ /** @packageDocumentation
2
+ * @module AccessControlClient
3
+ */
4
+ import type { AccessToken } from "@itwin/core-bentley";
5
+ import type { AccessControlAPIResponse, IRolesClient, NewRole, Role } from "../accessControlTypes";
6
+ import { BaseClient } from "./BaseClient";
7
+ export declare class RolesClient extends BaseClient implements IRolesClient {
8
+ /** Retrieves a list of available user roles that are defined for a specified iTwin
9
+ * @param accessToken The client access token string
10
+ * @param iTwinId The id of the iTwin
11
+ * @returns Roles
12
+ */
13
+ getITwinRolesAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Role[]>>;
14
+ /** Retrieves the specified role for the specified iTwin
15
+ * @param accessToken The client access token string
16
+ * @param iTwinId The id of the iTwin
17
+ * @returns Role
18
+ */
19
+ getITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<Role>>;
20
+ /** Creates a new iTwin Role
21
+ * @param accessToken The client access token string
22
+ * @param iTwinId The id of the iTwin
23
+ * @param role The role to be created
24
+ * @returns Role
25
+ */
26
+ createITwinRoleAsync(accessToken: AccessToken, iTwinId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
27
+ /** Delete the specified iTwin role
28
+ * @param accessToken The client access token string
29
+ * @param iTwinId The id of the iTwin
30
+ * @param roleId The id of the role to remove
31
+ * @returns No Content
32
+ */
33
+ deleteITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<undefined>>;
34
+ /** Update the specified iTwin role
35
+ * @param accessToken The client access token string
36
+ * @param iTwinId The id of the iTwin
37
+ * @param roleId The id of the role to update
38
+ * @param role The updated role
39
+ * @returns Role
40
+ */
41
+ updateITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
42
+ }
43
+ //# sourceMappingURL=RolesClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolesClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/RolesClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,WAAY,SAAQ,UAAW,YAAW,YAAY;IACjE;;;;QAII;IACS,kBAAkB,CAC7B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC;IAK5C;;;;QAII;IACS,iBAAiB,CAC5B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAK1C;;;;;QAKI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAK1C;;;;;QAKI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAK/C;;;;;;QAMI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;CAI3C"}