@scalekit-sdk/node 2.2.0-beta.1 → 2.2.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 (209) hide show
  1. package/.nvmrc +1 -1
  2. package/README.md +5 -5
  3. package/buf.gen.yaml +1 -5
  4. package/lib/auth.d.ts +9 -6
  5. package/lib/auth.js +4 -20
  6. package/lib/auth.js.map +1 -1
  7. package/lib/connect.d.ts +3 -3
  8. package/lib/connect.js +1 -2
  9. package/lib/connect.js.map +1 -1
  10. package/lib/connection.d.ts +2 -2
  11. package/lib/connection.js +4 -4
  12. package/lib/connection.js.map +1 -1
  13. package/lib/core.js +2 -2
  14. package/lib/core.js.map +1 -1
  15. package/lib/directory.d.ts +2 -2
  16. package/lib/directory.js +7 -7
  17. package/lib/directory.js.map +1 -1
  18. package/lib/domain.d.ts +6 -5
  19. package/lib/domain.js +4 -5
  20. package/lib/domain.js.map +1 -1
  21. package/lib/errors/base-exception.d.ts +1 -1
  22. package/lib/errors/base-exception.js +1 -1
  23. package/lib/errors/base-exception.js.map +1 -1
  24. package/lib/organization.d.ts +10 -9
  25. package/lib/organization.js +11 -9
  26. package/lib/organization.js.map +1 -1
  27. package/lib/passwordless.d.ts +2 -2
  28. package/lib/passwordless.js +8 -7
  29. package/lib/passwordless.js.map +1 -1
  30. package/lib/permission.d.ts +6 -5
  31. package/lib/permission.js +10 -11
  32. package/lib/permission.js.map +1 -1
  33. package/lib/pkg/grpc/buf/validate/validate_pb.d.ts +7 -0
  34. package/lib/pkg/grpc/buf/validate/validate_pb.js +25 -0
  35. package/lib/pkg/grpc/buf/validate/validate_pb.js.map +1 -0
  36. package/lib/pkg/grpc/google/api/annotations_pb.d.ts +7 -0
  37. package/lib/pkg/grpc/google/api/annotations_pb.js +25 -0
  38. package/lib/pkg/grpc/google/api/annotations_pb.js.map +1 -0
  39. package/lib/pkg/grpc/google/api/field_behavior_pb.d.ts +7 -0
  40. package/lib/pkg/grpc/google/api/field_behavior_pb.js +25 -0
  41. package/lib/pkg/grpc/google/api/field_behavior_pb.js.map +1 -0
  42. package/lib/pkg/grpc/google/api/visibility_pb.d.ts +7 -0
  43. package/lib/pkg/grpc/google/api/visibility_pb.js +25 -0
  44. package/lib/pkg/grpc/google/api/visibility_pb.js.map +1 -0
  45. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.d.ts +7 -0
  46. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js +25 -0
  47. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js.map +1 -0
  48. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.d.ts +48 -42
  49. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +27 -263
  50. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
  51. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +371 -325
  52. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +132 -835
  53. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
  54. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.d.ts +113 -87
  55. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js +45 -201
  56. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js.map +1 -1
  57. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.d.ts +262 -265
  58. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js +92 -938
  59. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js.map +1 -1
  60. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.d.ts +162 -157
  61. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js +42 -313
  62. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js.map +1 -1
  63. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.d.ts +1488 -1459
  64. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js +353 -2362
  65. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js.map +1 -1
  66. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.d.ts +520 -483
  67. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js +224 -1555
  68. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js.map +1 -1
  69. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.d.ts +219 -191
  70. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js +96 -553
  71. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js.map +1 -1
  72. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +76 -102
  73. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js +37 -393
  74. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
  75. package/lib/pkg/grpc/scalekit/v1/options/options_pb.d.ts +36 -26
  76. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js +20 -69
  77. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js.map +1 -1
  78. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.d.ts +447 -400
  79. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js +163 -1238
  80. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js.map +1 -1
  81. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.d.ts +622 -556
  82. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js +201 -1718
  83. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
  84. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.d.ts +135 -132
  85. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +55 -518
  86. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js.map +1 -1
  87. package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +445 -413
  88. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +142 -1490
  89. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
  90. package/lib/role.d.ts +8 -7
  91. package/lib/role.js +14 -14
  92. package/lib/role.js.map +1 -1
  93. package/lib/scalekit.d.ts +0 -4
  94. package/lib/scalekit.js +0 -4
  95. package/lib/scalekit.js.map +1 -1
  96. package/lib/session.js +15 -24
  97. package/lib/session.js.map +1 -1
  98. package/lib/user.d.ts +6 -5
  99. package/lib/user.js +17 -20
  100. package/lib/user.js.map +1 -1
  101. package/lib/webauthn.js +6 -5
  102. package/lib/webauthn.js.map +1 -1
  103. package/package.json +6 -10
  104. package/reference.md +0 -671
  105. package/src/auth.ts +17 -17
  106. package/src/connect.ts +4 -5
  107. package/src/connection.ts +5 -5
  108. package/src/core.ts +2 -2
  109. package/src/directory.ts +8 -8
  110. package/src/domain.ts +9 -8
  111. package/src/errors/base-exception.ts +3 -2
  112. package/src/organization.ts +18 -15
  113. package/src/passwordless.ts +12 -11
  114. package/src/permission.ts +15 -15
  115. package/src/pkg/grpc/buf/validate/validate_pb.ts +28 -0
  116. package/src/pkg/grpc/google/api/annotations_pb.ts +28 -0
  117. package/src/pkg/grpc/google/api/field_behavior_pb.ts +28 -0
  118. package/src/pkg/grpc/google/api/visibility_pb.ts +28 -0
  119. package/src/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.ts +28 -0
  120. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +97 -182
  121. package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +473 -850
  122. package/src/pkg/grpc/scalekit/v1/auth/passwordless_pb.ts +153 -225
  123. package/src/pkg/grpc/scalekit/v1/auth/webauthn_pb.ts +361 -830
  124. package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +237 -358
  125. package/src/pkg/grpc/scalekit/v1/connections/connections_pb.ts +1625 -2826
  126. package/src/pkg/grpc/scalekit/v1/directories/directories_pb.ts +687 -1413
  127. package/src/pkg/grpc/scalekit/v1/domains/domains_pb.ts +286 -542
  128. package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +115 -328
  129. package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +50 -80
  130. package/src/pkg/grpc/scalekit/v1/organizations/organizations_pb.ts +558 -1183
  131. package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +765 -1669
  132. package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +195 -447
  133. package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +592 -1339
  134. package/src/role.ts +21 -19
  135. package/src/scalekit.ts +0 -9
  136. package/src/session.ts +20 -34
  137. package/src/user.ts +30 -26
  138. package/src/webauthn.ts +10 -9
  139. package/tests/utils/test-data.ts +17 -8
  140. package/lib/connected-accounts.d.ts +0 -119
  141. package/lib/connected-accounts.js +0 -241
  142. package/lib/connected-accounts.js.map +0 -1
  143. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.d.ts +0 -19
  144. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js +0 -27
  145. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js.map +0 -1
  146. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.d.ts +0 -118
  147. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js +0 -126
  148. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js.map +0 -1
  149. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.d.ts +0 -37
  150. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js +0 -45
  151. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js.map +0 -1
  152. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.d.ts +0 -82
  153. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js +0 -90
  154. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js.map +0 -1
  155. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.d.ts +0 -87
  156. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js +0 -95
  157. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js.map +0 -1
  158. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +0 -718
  159. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +0 -893
  160. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +0 -1
  161. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.d.ts +0 -172
  162. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js +0 -180
  163. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js.map +0 -1
  164. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.d.ts +0 -154
  165. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js +0 -162
  166. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js.map +0 -1
  167. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.d.ts +0 -73
  168. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js +0 -81
  169. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js.map +0 -1
  170. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.d.ts +0 -171
  171. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js +0 -179
  172. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js.map +0 -1
  173. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.d.ts +0 -250
  174. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js +0 -258
  175. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js.map +0 -1
  176. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.d.ts +0 -46
  177. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js +0 -54
  178. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js.map +0 -1
  179. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.d.ts +0 -75
  180. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js +0 -83
  181. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js.map +0 -1
  182. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +0 -431
  183. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +0 -627
  184. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +0 -1
  185. package/lib/pkg/grpc/scalekit/v1/users/users_connect.d.ts +0 -173
  186. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js +0 -181
  187. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js.map +0 -1
  188. package/lib/tools.d.ts +0 -75
  189. package/lib/tools.js +0 -127
  190. package/lib/tools.js.map +0 -1
  191. package/src/connected-accounts.ts +0 -358
  192. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.ts +0 -26
  193. package/src/pkg/grpc/scalekit/v1/auth/auth_connect.ts +0 -125
  194. package/src/pkg/grpc/scalekit/v1/auth/passwordless_connect.ts +0 -44
  195. package/src/pkg/grpc/scalekit/v1/auth/webauthn_connect.ts +0 -89
  196. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.ts +0 -94
  197. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.ts +0 -1294
  198. package/src/pkg/grpc/scalekit/v1/connections/connections_connect.ts +0 -179
  199. package/src/pkg/grpc/scalekit/v1/directories/directories_connect.ts +0 -161
  200. package/src/pkg/grpc/scalekit/v1/domains/domains_connect.ts +0 -80
  201. package/src/pkg/grpc/scalekit/v1/organizations/organizations_connect.ts +0 -178
  202. package/src/pkg/grpc/scalekit/v1/roles/roles_connect.ts +0 -257
  203. package/src/pkg/grpc/scalekit/v1/sessions/sessions_connect.ts +0 -53
  204. package/src/pkg/grpc/scalekit/v1/tools/tools_connect.ts +0 -82
  205. package/src/pkg/grpc/scalekit/v1/tools/tools_pb.ts +0 -847
  206. package/src/pkg/grpc/scalekit/v1/users/users_connect.ts +0 -180
  207. package/src/tools.ts +0 -166
  208. package/tests/connected-accounts.test.ts +0 -472
  209. package/tests/tools.test.ts +0 -239
package/src/role.ts CHANGED
@@ -1,8 +1,10 @@
1
- import { Empty, PartialMessage } from "@bufbuild/protobuf";
2
- import { PromiseClient } from "@connectrpc/connect";
1
+ import type { MessageShape } from "@bufbuild/protobuf";
2
+ import { create } from "@bufbuild/protobuf";
3
+ import { EmptySchema } from "@bufbuild/protobuf/wkt";
4
+ import type { Client } from "@connectrpc/connect";
3
5
  import GrpcConnect from "./connect";
4
6
  import CoreClient from "./core";
5
- import { RolesService } from "./pkg/grpc/scalekit/v1/roles/roles_connect";
7
+ import { RolesService } from "./pkg/grpc/scalekit/v1/roles/roles_pb";
6
8
  import {
7
9
  CreateRoleRequest,
8
10
  CreateRoleResponse,
@@ -22,6 +24,8 @@ import {
22
24
  ListOrganizationRolesRequest,
23
25
  ListOrganizationRolesResponse,
24
26
  DeleteOrganizationRoleRequest,
27
+ DeleteRoleRequestSchema,
28
+ DeleteOrganizationRoleRequestSchema,
25
29
  GetRoleUsersCountRequest,
26
30
  GetRoleUsersCountResponse,
27
31
  GetOrganizationRoleUsersCountRequest,
@@ -52,7 +56,7 @@ import {
52
56
  * @see {@link https://docs.scalekit.com/apis/#tag/roles | Role API Documentation}
53
57
  */
54
58
  export default class RoleClient {
55
- private client: PromiseClient<typeof RolesService>;
59
+ private client: Client<typeof RolesService>;
56
60
 
57
61
  constructor(
58
62
  private readonly grpcConnect: GrpcConnect,
@@ -174,7 +178,7 @@ export default class RoleClient {
174
178
  * @param {string} roleName - Role to delete
175
179
  * @param {string} [reassignRoleName] - Target role for user migration
176
180
  *
177
- * @returns {Promise<Empty>} Empty response on success
181
+ * @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on success
178
182
  *
179
183
  * @example
180
184
  * await scalekitClient.role.deleteRole('old_role', 'new_role');
@@ -184,11 +188,11 @@ export default class RoleClient {
184
188
  async deleteRole(
185
189
  roleName: string,
186
190
  reassignRoleName?: string
187
- ): Promise<Empty> {
188
- const request: PartialMessage<DeleteRoleRequest> = { roleName };
189
- if (reassignRoleName) {
190
- request.reassignRoleName = reassignRoleName;
191
- }
191
+ ): Promise<MessageShape<typeof EmptySchema>> {
192
+ const request = create(DeleteRoleRequestSchema, {
193
+ roleName,
194
+ reassignRoleName,
195
+ });
192
196
 
193
197
  return this.coreClient.connectExec(this.client.deleteRole, request);
194
198
  }
@@ -345,7 +349,7 @@ export default class RoleClient {
345
349
  * @param {string} roleName - Role to delete
346
350
  * @param {string} [reassignRoleName] - Target role for user migration
347
351
  *
348
- * @returns {Promise<Empty>} Empty response on success
352
+ * @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on success
349
353
  *
350
354
  * @example
351
355
  * await scalekitClient.role.deleteOrganizationRole(
@@ -360,14 +364,12 @@ export default class RoleClient {
360
364
  orgId: string,
361
365
  roleName: string,
362
366
  reassignRoleName?: string
363
- ): Promise<Empty> {
364
- const request: PartialMessage<DeleteOrganizationRoleRequest> = {
367
+ ): Promise<MessageShape<typeof EmptySchema>> {
368
+ const request = create(DeleteOrganizationRoleRequestSchema, {
365
369
  orgId,
366
370
  roleName,
367
- };
368
- if (reassignRoleName) {
369
- request.reassignRoleName = reassignRoleName;
370
- }
371
+ reassignRoleName,
372
+ });
371
373
 
372
374
  return this.coreClient.connectExec(
373
375
  this.client.deleteOrganizationRole,
@@ -442,7 +444,7 @@ export default class RoleClient {
442
444
  * @param {string} orgId - Organization identifier
443
445
  * @param {string} roleName - Role to remove inheritance from
444
446
  *
445
- * @returns {Promise<Empty>} Empty response on success
447
+ * @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on success
446
448
  *
447
449
  * @example
448
450
  * await scalekitClient.role.deleteOrganizationRoleBase('org_123456', 'custom_role');
@@ -452,7 +454,7 @@ export default class RoleClient {
452
454
  async deleteOrganizationRoleBase(
453
455
  orgId: string,
454
456
  roleName: string
455
- ): Promise<Empty> {
457
+ ): Promise<MessageShape<typeof EmptySchema>> {
456
458
  return this.coreClient.connectExec(this.client.deleteOrganizationRoleBase, {
457
459
  orgId,
458
460
  roleName,
package/src/scalekit.ts CHANGED
@@ -5,8 +5,6 @@ import GrpcConnect from './connect';
5
5
  import ConnectionClient from './connection';
6
6
  import { IdTokenClaimToUserMap } from './constants/user';
7
7
  import CoreClient from './core';
8
- import ToolsClient from './tools';
9
- import ConnectedAccountsClient from './connected-accounts';
10
8
  import DirectoryClient from './directory';
11
9
  import DomainClient from './domain';
12
10
  import AuthClient from './auth';
@@ -62,8 +60,6 @@ export default class ScalekitClient {
62
60
  readonly organization: OrganizationClient;
63
61
  readonly connection: ConnectionClient;
64
62
  readonly domain: DomainClient;
65
- readonly tools: ToolsClient;
66
- readonly connectedAccounts: ConnectedAccountsClient;
67
63
  readonly directory: DirectoryClient;
68
64
  readonly passwordless: PasswordlessClient;
69
65
  readonly user: UserClient;
@@ -92,11 +88,6 @@ export default class ScalekitClient {
92
88
  );
93
89
  this.connection = new ConnectionClient(this.grpcConnect, this.coreClient);
94
90
  this.domain = new DomainClient(this.grpcConnect, this.coreClient);
95
- this.tools = new ToolsClient(this.grpcConnect, this.coreClient);
96
- this.connectedAccounts = new ConnectedAccountsClient(
97
- this.grpcConnect,
98
- this.coreClient
99
- );
100
91
  this.directory = new DirectoryClient(this.grpcConnect, this.coreClient);
101
92
  this.passwordless = new PasswordlessClient(
102
93
  this.grpcConnect,
package/src/session.ts CHANGED
@@ -1,23 +1,24 @@
1
- import { PartialMessage } from "@bufbuild/protobuf";
2
- import { PromiseClient } from "@connectrpc/connect";
1
+ import { create } from "@bufbuild/protobuf";
2
+ import { timestampFromDate } from "@bufbuild/protobuf/wkt";
3
+ import type { Client } from "@connectrpc/connect";
3
4
  import GrpcConnect from "./connect";
4
5
  import CoreClient from "./core";
5
- import { SessionService } from "./pkg/grpc/scalekit/v1/sessions/sessions_connect";
6
6
  import {
7
+ SessionService,
7
8
  SessionDetailsRequest,
8
9
  SessionDetails,
9
10
  UserSessionDetailsRequest,
10
11
  UserSessionDetails,
11
- UserSessionFilter,
12
+ UserSessionDetailsRequestSchema,
13
+ UserSessionFilterSchema,
12
14
  RevokeSessionRequest,
13
15
  RevokeSessionResponse,
14
16
  RevokeAllUserSessionsRequest,
15
17
  RevokeAllUserSessionsResponse,
16
18
  } from "./pkg/grpc/scalekit/v1/sessions/sessions_pb";
17
- import { Timestamp } from "@bufbuild/protobuf";
18
19
 
19
20
  export default class SessionClient {
20
- private client: PromiseClient<typeof SessionService>;
21
+ private client: Client<typeof SessionService>;
21
22
 
22
23
  constructor(
23
24
  private readonly grpcConnect: GrpcConnect,
@@ -145,35 +146,20 @@ export default class SessionClient {
145
146
  };
146
147
  }
147
148
  ): Promise<UserSessionDetails> {
148
- const request: PartialMessage<UserSessionDetailsRequest> = {
149
- userId,
150
- };
151
-
152
- if (options?.pageSize !== undefined) {
153
- request.pageSize = options.pageSize;
154
- }
155
-
156
- if (options?.pageToken) {
157
- request.pageToken = options.pageToken;
158
- }
159
-
160
- if (options?.filter) {
161
- const filter = new UserSessionFilter();
149
+ const filter = options?.filter
150
+ ? create(UserSessionFilterSchema, {
151
+ status: options.filter.status,
152
+ startTime: options.filter.startTime ? timestampFromDate(options.filter.startTime) : undefined,
153
+ endTime: options.filter.endTime ? timestampFromDate(options.filter.endTime) : undefined,
154
+ })
155
+ : undefined;
162
156
 
163
- if (options.filter.status) {
164
- filter.status = options.filter.status;
165
- }
166
-
167
- if (options.filter.startTime) {
168
- filter.startTime = Timestamp.fromDate(options.filter.startTime);
169
- }
170
-
171
- if (options.filter.endTime) {
172
- filter.endTime = Timestamp.fromDate(options.filter.endTime);
173
- }
174
-
175
- request.filter = filter;
176
- }
157
+ const request = create(UserSessionDetailsRequestSchema, {
158
+ userId,
159
+ pageSize: options?.pageSize,
160
+ pageToken: options?.pageToken,
161
+ filter,
162
+ });
177
163
 
178
164
  return this.coreClient.connectExec(this.client.getUserSessions, request);
179
165
  }
package/src/user.ts CHANGED
@@ -11,11 +11,13 @@
11
11
  *
12
12
  * @see {@link https://docs.scalekit.com/apis/#tag/users | User API Documentation}
13
13
  */
14
- import { Empty, PartialMessage } from "@bufbuild/protobuf";
15
- import { PromiseClient } from "@connectrpc/connect";
14
+ import type { MessageShape } from "@bufbuild/protobuf";
15
+ import { create } from "@bufbuild/protobuf";
16
+ import { EmptySchema } from "@bufbuild/protobuf/wkt";
17
+ import type { Client } from "@connectrpc/connect";
16
18
  import GrpcConnect from "./connect";
17
19
  import CoreClient from "./core";
18
- import { UserService } from "./pkg/grpc/scalekit/v1/users/users_connect";
20
+ import { UserService } from "./pkg/grpc/scalekit/v1/users/users_pb";
19
21
  import {
20
22
  CreateUserAndMembershipRequest,
21
23
  CreateUserAndMembershipResponse,
@@ -30,8 +32,13 @@ import {
30
32
  UpdateUser,
31
33
  CreateUser,
32
34
  CreateUserProfile,
35
+ CreateUserSchema,
36
+ CreateUserProfileSchema,
37
+ UpdateUserSchema,
38
+ CreateUserAndMembershipRequestSchema,
33
39
  CreateMembershipRequest,
34
40
  CreateMembershipResponse,
41
+ CreateMembershipRequestSchema,
35
42
  DeleteMembershipRequest,
36
43
  UpdateMembershipRequest,
37
44
  UpdateMembershipResponse,
@@ -39,8 +46,11 @@ import {
39
46
  ListOrganizationUsersResponse,
40
47
  CreateMembership,
41
48
  UpdateMembership,
49
+ CreateMembershipSchema,
50
+ UpdateMembershipSchema,
42
51
  ResendInviteRequest,
43
52
  ResendInviteResponse,
53
+ ResendInviteRequestSchema,
44
54
  } from "./pkg/grpc/scalekit/v1/users/users_pb";
45
55
  import {
46
56
  CreateUserRequest,
@@ -48,7 +58,7 @@ import {
48
58
  } from "./types/user";
49
59
 
50
60
  export default class UserClient {
51
- private client: PromiseClient<typeof UserService>;
61
+ private client: Client<typeof UserService>;
52
62
 
53
63
  constructor(
54
64
  private readonly grpcConnect: GrpcConnect,
@@ -125,10 +135,10 @@ export default class UserClient {
125
135
  throw new Error("email is required");
126
136
  }
127
137
 
128
- const user = new CreateUser({
138
+ const user = create(CreateUserSchema, {
129
139
  email: options.email,
130
140
  userProfile: options.userProfile
131
- ? new CreateUserProfile({
141
+ ? create(CreateUserProfileSchema, {
132
142
  firstName: options.userProfile.firstName,
133
143
  lastName: options.userProfile.lastName,
134
144
  })
@@ -136,14 +146,11 @@ export default class UserClient {
136
146
  metadata: options.metadata,
137
147
  });
138
148
 
139
- const request: PartialMessage<CreateUserAndMembershipRequest> = {
149
+ const request = create(CreateUserAndMembershipRequestSchema, {
140
150
  organizationId,
141
151
  user,
142
- };
143
-
144
- if (options.sendInvitationEmail !== undefined) {
145
- request.sendInvitationEmail = options.sendInvitationEmail;
146
- }
152
+ sendInvitationEmail: options.sendInvitationEmail,
153
+ });
147
154
 
148
155
  const response = await this.coreClient.connectExec(
149
156
  this.client.createUserAndMembership,
@@ -382,7 +389,7 @@ export default class UserClient {
382
389
  userId: string,
383
390
  options: UpdateUserRequestType
384
391
  ): Promise<UpdateUserResponse> {
385
- const updateUser = new UpdateUser({
392
+ const updateUser = create(UpdateUserSchema, {
386
393
  userProfile: options.userProfile
387
394
  ? {
388
395
  firstName: options.userProfile.firstName,
@@ -411,7 +418,7 @@ export default class UserClient {
411
418
  *
412
419
  * @param {string} userId - The Scalekit user identifier to delete (format: "usr_...")
413
420
  *
414
- * @returns {Promise<Empty>} Empty response on successful deletion
421
+ * @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on successful deletion
415
422
  *
416
423
  * @throws {Error} If the user is not found or deletion fails
417
424
  *
@@ -441,7 +448,7 @@ export default class UserClient {
441
448
  * @see {@link deleteMembership} - Remove user from a specific organization only
442
449
  * @see {@link getUser} - Check if user exists before deletion
443
450
  */
444
- async deleteUser(userId: string): Promise<Empty> {
451
+ async deleteUser(userId: string): Promise<MessageShape<typeof EmptySchema>> {
445
452
  return this.coreClient.connectExec(this.client.deleteUser, {
446
453
  identities: {
447
454
  case: "id",
@@ -525,23 +532,20 @@ export default class UserClient {
525
532
  sendInvitationEmail?: boolean;
526
533
  } = {}
527
534
  ): Promise<CreateMembershipResponse> {
528
- const membership = new CreateMembership({
535
+ const membership = create(CreateMembershipSchema, {
529
536
  roles: options.roles?.map((role) => ({ name: role })) || [],
530
537
  metadata: options.metadata || {},
531
538
  });
532
539
 
533
- const request: PartialMessage<CreateMembershipRequest> = {
540
+ const request = create(CreateMembershipRequestSchema, {
534
541
  organizationId,
535
542
  identities: {
536
543
  case: "id",
537
544
  value: userId,
538
545
  },
539
546
  membership,
540
- };
541
-
542
- if (options.sendInvitationEmail !== undefined) {
543
- request.sendInvitationEmail = options.sendInvitationEmail;
544
- }
547
+ sendInvitationEmail: options.sendInvitationEmail,
548
+ });
545
549
 
546
550
  return this.coreClient.connectExec(this.client.createMembership, request);
547
551
  }
@@ -557,7 +561,7 @@ export default class UserClient {
557
561
  * @param {string} organizationId - The organization ID to remove the user from (format: "org_...")
558
562
  * @param {string} userId - The user ID to remove (format: "usr_...")
559
563
  *
560
- * @returns {Promise<Empty>} Empty response on successful removal
564
+ * @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on successful removal
561
565
  *
562
566
  * @throws {Error} If the user or organization is not found
563
567
  * @throws {Error} If the membership doesn't exist
@@ -591,7 +595,7 @@ export default class UserClient {
591
595
  async deleteMembership(
592
596
  organizationId: string,
593
597
  userId: string
594
- ): Promise<Empty> {
598
+ ): Promise<MessageShape<typeof EmptySchema>> {
595
599
  return this.coreClient.connectExec(this.client.deleteMembership, {
596
600
  organizationId,
597
601
  identities: {
@@ -682,7 +686,7 @@ export default class UserClient {
682
686
  metadata?: Record<string, string>;
683
687
  } = {}
684
688
  ): Promise<UpdateMembershipResponse> {
685
- const membership = new UpdateMembership({
689
+ const membership = create(UpdateMembershipSchema, {
686
690
  roles: options.roles?.map((role) => ({ name: role })) || [],
687
691
  metadata: options.metadata || {},
688
692
  });
@@ -815,7 +819,7 @@ export default class UserClient {
815
819
  throw new Error("userId is required");
816
820
  }
817
821
 
818
- const request = new ResendInviteRequest({
822
+ const request = create(ResendInviteRequestSchema, {
819
823
  organizationId,
820
824
  id: userId,
821
825
  });
package/src/webauthn.ts CHANGED
@@ -1,18 +1,19 @@
1
- import { PromiseClient } from '@connectrpc/connect';
1
+ import { create } from '@bufbuild/protobuf';
2
+ import type { Client } from '@connectrpc/connect';
2
3
  import GrpcConnect from './connect';
3
4
  import CoreClient from './core';
4
- import { WebAuthnService } from './pkg/grpc/scalekit/v1/auth/webauthn_connect';
5
+ import { WebAuthnService } from './pkg/grpc/scalekit/v1/auth/webauthn_pb';
5
6
  import {
6
- ListCredentialsRequest,
7
+ ListCredentialsRequestSchema,
8
+ UpdateCredentialRequestSchema,
9
+ DeleteCredentialRequestSchema,
7
10
  ListCredentialsResponse,
8
- UpdateCredentialRequest,
9
11
  UpdateCredentialResponse,
10
- DeleteCredentialRequest,
11
12
  DeleteCredentialResponse
12
13
  } from './pkg/grpc/scalekit/v1/auth/webauthn_pb';
13
14
 
14
15
  export default class WebAuthnClient {
15
- private client: PromiseClient<typeof WebAuthnService>;
16
+ private client: Client<typeof WebAuthnService>;
16
17
 
17
18
  constructor(
18
19
  private readonly grpcConnect: GrpcConnect,
@@ -33,7 +34,7 @@ export default class WebAuthnClient {
33
34
  throw new Error('userId must be a non-empty string');
34
35
  }
35
36
 
36
- const request = new ListCredentialsRequest({
37
+ const request = create(ListCredentialsRequestSchema, {
37
38
  userId
38
39
  });
39
40
 
@@ -62,7 +63,7 @@ export default class WebAuthnClient {
62
63
  throw new Error('displayName must be a non-empty string');
63
64
  }
64
65
 
65
- const request = new UpdateCredentialRequest({
66
+ const request = create(UpdateCredentialRequestSchema, {
66
67
  credentialId,
67
68
  displayName
68
69
  });
@@ -85,7 +86,7 @@ export default class WebAuthnClient {
85
86
  throw new Error('credentialId must be a non-empty string');
86
87
  }
87
88
 
88
- const request = new DeleteCredentialRequest({
89
+ const request = create(DeleteCredentialRequestSchema, {
89
90
  credentialId
90
91
  });
91
92
 
@@ -1,8 +1,17 @@
1
+ import { create } from '@bufbuild/protobuf';
1
2
  import { CreateUserRequest, UpdateUserRequest } from '../../src/types/user';
2
3
  import { TemplateType } from '../../src/pkg/grpc/scalekit/v1/auth/passwordless_pb';
3
4
  import { DomainType } from '../../src/pkg/grpc/scalekit/v1/domains/domains_pb';
4
- import { CreateRole, UpdateRole, CreateOrganizationRole } from '../../src/pkg/grpc/scalekit/v1/roles/roles_pb';
5
- import { CreatePermission } from '../../src/pkg/grpc/scalekit/v1/roles/roles_pb';
5
+ import {
6
+ CreateRole,
7
+ UpdateRole,
8
+ CreateOrganizationRole,
9
+ CreatePermission,
10
+ CreateRoleSchema,
11
+ UpdateRoleSchema,
12
+ CreateOrganizationRoleSchema,
13
+ CreatePermissionSchema,
14
+ } from '../../src/pkg/grpc/scalekit/v1/roles/roles_pb';
6
15
 
7
16
  /**
8
17
  * Test data generation utilities to reduce redundancy across test files
@@ -200,7 +209,7 @@ export class TestDataGenerator {
200
209
  static generateRoleData(overrides: Partial<CreateRole> = {}): CreateRole {
201
210
  const uniqueId = this.generateUniqueId();
202
211
 
203
- return new CreateRole({
212
+ return create(CreateRoleSchema, {
204
213
  name: `test_role_${uniqueId}`,
205
214
  displayName: `Test Role ${uniqueId}`,
206
215
  description: `Test role description ${uniqueId}`,
@@ -214,12 +223,12 @@ export class TestDataGenerator {
214
223
  */
215
224
  static generateRoleUpdateData(overrides: Partial<UpdateRole> = {}): UpdateRole {
216
225
  const uniqueId = this.generateUniqueId();
217
-
218
- return new UpdateRole({
226
+ const init = {
219
227
  displayName: `Updated Role ${uniqueId}`,
220
228
  description: `Updated role description ${uniqueId}`,
221
229
  ...overrides
222
- });
230
+ };
231
+ return create(UpdateRoleSchema, init as Parameters<typeof create>[1]);
223
232
  }
224
233
 
225
234
  /**
@@ -228,7 +237,7 @@ export class TestDataGenerator {
228
237
  static generateOrganizationRoleData(overrides: Partial<CreateOrganizationRole> = {}): CreateOrganizationRole {
229
238
  const uniqueId = this.generateUniqueId();
230
239
 
231
- return new CreateOrganizationRole({
240
+ return create(CreateOrganizationRoleSchema, {
232
241
  name: `test_org_role_${uniqueId}`,
233
242
  displayName: `Test Organization Role ${uniqueId}`,
234
243
  description: `Test organization role description ${uniqueId}`,
@@ -243,7 +252,7 @@ export class TestDataGenerator {
243
252
  static generatePermissionData(overrides: Partial<CreatePermission> = {}): CreatePermission {
244
253
  const uniqueId = this.generateUniqueId();
245
254
 
246
- return new CreatePermission({
255
+ return create(CreatePermissionSchema, {
247
256
  name: `test_permission_${uniqueId}`,
248
257
  description: `Test permission description ${uniqueId}`,
249
258
  ...overrides
@@ -1,119 +0,0 @@
1
- import { PartialMessage } from "@bufbuild/protobuf";
2
- import GrpcConnect from "./connect";
3
- import CoreClient from "./core";
4
- import { AuthorizationDetails, CreateConnectedAccount, CreateConnectedAccountResponse, DeleteConnectedAccountResponse, GetConnectedAccountByIdentifierResponse, GetMagicLinkForConnectedAccountResponse, ListConnectedAccountsResponse, UpdateConnectedAccount, UpdateConnectedAccountResponse } from "./pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb";
5
- /**
6
- * Client for managing connected accounts for third-party integrations.
7
- *
8
- * This mirrors the Python SDK `ConnectedAccountsClient` and exposes a typed,
9
- * ergonomic API around the `ConnectedAccountService` to:
10
- * - list connected accounts
11
- * - create/update/delete connected accounts
12
- * - generate magic links for authorization
13
- * - fetch full authentication details for a connected account
14
- */
15
- export default class ConnectedAccountsClient {
16
- private readonly grpcConnect;
17
- private readonly coreClient;
18
- private client;
19
- constructor(grpcConnect: GrpcConnect, coreClient: CoreClient);
20
- /**
21
- * Lists connected accounts with optional filters and pagination.
22
- *
23
- * @param options Optional filtering and pagination parameters
24
- */
25
- listConnectedAccounts(options?: {
26
- organizationId?: string;
27
- userId?: string;
28
- connector?: string;
29
- identifier?: string;
30
- provider?: string;
31
- pageSize?: number;
32
- pageToken?: string;
33
- query?: string;
34
- }): Promise<ListConnectedAccountsResponse>;
35
- /**
36
- * Creates a new connected account.
37
- *
38
- * @param params Connected account creation parameters
39
- */
40
- createConnectedAccount(params: {
41
- connector: string;
42
- identifier: string;
43
- connectedAccount: CreateConnectedAccount;
44
- organizationId?: string;
45
- userId?: string;
46
- }): Promise<CreateConnectedAccountResponse>;
47
- /**
48
- * Gets an existing connected account by connector and identifier, or creates one if none exists.
49
- * Mirrors the Python SDK `get_or_create_connected_account`. When creating, the backend may require
50
- * valid authorization details; if omitted, a minimal payload is sent and the server may return
51
- * a validation error.
52
- *
53
- * @param params Get-or-create parameters
54
- * @param params.connector Connector identifier (required)
55
- * @param params.identifier Connected account identifier (required)
56
- * @param params.authorizationDetails Optional auth details for the create path (OAuth token or static auth)
57
- * @param params.organizationId Optional organization ID
58
- * @param params.userId Optional user ID
59
- * @param params.apiConfig Optional API config for the create path
60
- */
61
- getOrCreateConnectedAccount(params: {
62
- connector: string;
63
- identifier: string;
64
- authorizationDetails?: PartialMessage<AuthorizationDetails>;
65
- organizationId?: string;
66
- userId?: string;
67
- apiConfig?: Record<string, unknown>;
68
- }): Promise<CreateConnectedAccountResponse>;
69
- /**
70
- * Updates an existing connected account.
71
- *
72
- * You can target the account either by `connectedAccountId` or by the combination
73
- * of `organizationId`/`userId`, `connector`, and `identifier`.
74
- */
75
- updateConnectedAccount(params: {
76
- connector: string;
77
- identifier: string;
78
- connectedAccount: UpdateConnectedAccount;
79
- organizationId?: string;
80
- userId?: string;
81
- connectedAccountId?: string;
82
- }): Promise<UpdateConnectedAccountResponse>;
83
- /**
84
- * Deletes a connected account and revokes its credentials.
85
- *
86
- * You can target the account either by `connectedAccountId` or by the combination
87
- * of `organizationId`/`userId`, `connector`, and `identifier`.
88
- */
89
- deleteConnectedAccount(params: {
90
- connector: string;
91
- identifier: string;
92
- organizationId?: string;
93
- userId?: string;
94
- connectedAccountId?: string;
95
- }): Promise<DeleteConnectedAccountResponse>;
96
- /**
97
- * Generates a time-limited magic link for connecting or re-authorizing a third-party account.
98
- */
99
- getMagicLinkForConnectedAccount(params: {
100
- connector: string;
101
- identifier: string;
102
- organizationId?: string;
103
- userId?: string;
104
- connectedAccountId?: string;
105
- }): Promise<GetMagicLinkForConnectedAccountResponse>;
106
- /**
107
- * Retrieves complete authentication details for a connected account.
108
- *
109
- * This method returns sensitive credential information, so ensure you protect access
110
- * to this in your application.
111
- */
112
- getConnectedAccountByIdentifier(params: {
113
- connector: string;
114
- identifier: string;
115
- organizationId?: string;
116
- userId?: string;
117
- connectedAccountId?: string;
118
- }): Promise<GetConnectedAccountByIdentifierResponse>;
119
- }