@camunda/ccma-api 0.1.0 → 0.4.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 (91) hide show
  1. package/dist/index.d.ts +31 -7
  2. package/dist/index.js +56 -2
  3. package/dist/index.js.map +2 -2
  4. package/dist/services/accounts/admin-tools.service.d.ts +27 -0
  5. package/dist/services/accounts/admin-tools.service.js +70 -0
  6. package/dist/services/accounts/admin-tools.service.js.map +7 -0
  7. package/dist/services/accounts/connections.service.d.ts +85 -0
  8. package/dist/services/accounts/connections.service.js +150 -0
  9. package/dist/services/accounts/connections.service.js.map +2 -2
  10. package/dist/services/accounts/early-access-features.service.d.ts +59 -0
  11. package/dist/services/accounts/early-access-features.service.js +142 -0
  12. package/dist/services/accounts/early-access-features.service.js.map +2 -2
  13. package/dist/services/accounts/invites.service.d.ts +28 -0
  14. package/dist/services/accounts/invites.service.js +53 -0
  15. package/dist/services/accounts/invites.service.js.map +7 -0
  16. package/dist/services/accounts/orgs.service.d.ts +42 -0
  17. package/dist/services/accounts/orgs.service.js +123 -0
  18. package/dist/services/accounts/orgs.service.js.map +2 -2
  19. package/dist/services/accounts/orgs.v2.service.d.ts +6 -0
  20. package/dist/services/accounts/orgs.v2.service.js +34 -0
  21. package/dist/services/accounts/orgs.v2.service.js.map +2 -2
  22. package/dist/services/accounts/pdf-watermark.service.d.ts +93 -0
  23. package/dist/services/accounts/pdf-watermark.service.js +147 -0
  24. package/dist/services/accounts/pdf-watermark.service.js.map +7 -0
  25. package/dist/services/accounts/release-train.service.d.ts +25 -0
  26. package/dist/services/accounts/release-train.service.js +46 -0
  27. package/dist/services/accounts/release-train.service.js.map +7 -0
  28. package/dist/services/accounts/salesplan.service.d.ts +45 -0
  29. package/dist/services/accounts/salesplan.service.js +185 -0
  30. package/dist/services/accounts/salesplan.service.js.map +2 -2
  31. package/dist/services/accounts/token-issuer.service.d.ts +31 -0
  32. package/dist/services/accounts/token-issuer.service.js +63 -0
  33. package/dist/services/accounts/token-issuer.service.js.map +7 -0
  34. package/dist/services/accounts/users.service.d.ts +59 -0
  35. package/dist/services/accounts/users.service.js +296 -4
  36. package/dist/services/accounts/users.service.js.map +2 -2
  37. package/dist/services/console/console.admin.service.d.ts +21 -1
  38. package/dist/services/console/console.admin.service.js +75 -0
  39. package/dist/services/console/console.admin.service.js.map +2 -2
  40. package/dist/services/console/console.channel.service.d.ts +49 -0
  41. package/dist/services/console/console.channel.service.js +123 -0
  42. package/dist/services/console/console.channel.service.js.map +7 -0
  43. package/dist/services/console/console.cluster.service.d.ts +23 -11
  44. package/dist/services/console/console.cluster.service.js +36 -1
  45. package/dist/services/console/console.cluster.service.js.map +2 -2
  46. package/dist/services/console/console.cluster.v2.service.d.ts +18 -1
  47. package/dist/services/console/console.cluster.v2.service.js +95 -0
  48. package/dist/services/console/console.cluster.v2.service.js.map +2 -2
  49. package/dist/services/console/console.clusterplan.service.d.ts +21 -0
  50. package/dist/services/console/console.clusterplan.service.js +92 -0
  51. package/dist/services/console/console.clusterplan.service.js.map +2 -2
  52. package/dist/services/console/console.clusterplantype.service.d.ts +54 -0
  53. package/dist/services/console/console.clusterplantype.service.js +152 -0
  54. package/dist/services/console/console.clusterplantype.service.js.map +7 -0
  55. package/dist/services/console/console.k8scontext.service.d.ts +10 -0
  56. package/dist/services/console/console.k8scontext.service.js +41 -0
  57. package/dist/services/console/console.k8scontext.service.js.map +7 -0
  58. package/dist/services/console/console.storybook-config.service.d.ts +10 -0
  59. package/dist/services/console/console.storybook-config.service.js +40 -0
  60. package/dist/services/console/console.storybook-config.service.js.map +7 -0
  61. package/dist/services/console/generation.service.d.ts +45 -0
  62. package/dist/services/console/generation.service.js +143 -0
  63. package/dist/services/console/generation.service.js.map +2 -2
  64. package/dist/services/external/external.accounts.service.d.ts +27 -0
  65. package/dist/services/external/external.accounts.service.js +80 -0
  66. package/dist/services/external/external.accounts.service.js.map +7 -0
  67. package/dist/services/external/external.console.service.d.ts +37 -0
  68. package/dist/services/external/external.console.service.js +81 -0
  69. package/dist/services/external/external.console.service.js.map +7 -0
  70. package/dist/services/external/external.notifications.service.d.ts +78 -0
  71. package/dist/services/external/external.notifications.service.js +220 -0
  72. package/dist/services/external/external.notifications.service.js.map +7 -0
  73. package/dist/services/external/external.services.spec.d.ts +1 -0
  74. package/dist/services/notifications/notifications.service.d.ts +45 -1
  75. package/dist/services/notifications/notifications.service.js +168 -1
  76. package/dist/services/notifications/notifications.service.js.map +2 -2
  77. package/dist/types/general.types.d.ts +9 -1
  78. package/dist/utils/api.d.ts +14 -1
  79. package/dist/utils/api.js +71 -6
  80. package/dist/utils/api.js.map +2 -2
  81. package/dist/utils/api.request-headers.spec.d.ts +1 -0
  82. package/dist/utils/api.transient-retry.spec.d.ts +1 -0
  83. package/dist/utils/sse.d.ts +51 -0
  84. package/dist/utils/sse.js +254 -0
  85. package/dist/utils/sse.js.map +7 -0
  86. package/dist/utils/sse.spec.d.ts +1 -0
  87. package/dist/utils/traceparent.d.ts +30 -0
  88. package/dist/utils/traceparent.js +46 -0
  89. package/dist/utils/traceparent.js.map +7 -0
  90. package/dist/utils/traceparent.spec.d.ts +1 -0
  91. package/package.json +2 -2
@@ -0,0 +1,31 @@
1
+ import type { RequestBaseParams } from '../../types/general.types.js';
2
+ export interface InvalidateTokenParams extends RequestBaseParams {
3
+ body: {
4
+ client_id: string;
5
+ client_secret: string;
6
+ audience: string;
7
+ clusterId?: string;
8
+ orgId?: string;
9
+ };
10
+ }
11
+ export interface InvalidateTokenByClientParams extends RequestBaseParams {
12
+ body: {
13
+ client_id: string;
14
+ audience: string;
15
+ clusterId?: string;
16
+ orgId?: string;
17
+ };
18
+ }
19
+ /**
20
+ * Token Issuer admin actions (god-gated), served by the public login host
21
+ * (`login` base — same URL accounts reaches via `VITE_TOKEN_ISSUER`).
22
+ */
23
+ export declare class TokenIssuerService {
24
+ private static post;
25
+ /** Invalidate a single token (requires the client secret). */
26
+ static invalidateToken(params: InvalidateTokenParams): Promise<void>;
27
+ /** Invalidate every token of a client (no secret needed). */
28
+ static invalidateTokenByClient(params: InvalidateTokenByClientParams): Promise<void>;
29
+ /** Invalidate all currently-invalid tokens (cleanup sweep). */
30
+ static invalidateInvalidTokens(params: RequestBaseParams): Promise<void>;
31
+ }
@@ -0,0 +1,63 @@
1
+ import { request } from "../../utils/api.js";
2
+ import { HttpError } from "../../utils/errors.js";
3
+ class TokenIssuerService {
4
+ static async post(name, url, params, body) {
5
+ const serviceContext = {
6
+ method: {
7
+ name,
8
+ url,
9
+ normalizedUrl: url,
10
+ type: "post"
11
+ },
12
+ source: params.config.metrics?.source || "unset",
13
+ target: { name: "login", type: "internal" }
14
+ };
15
+ const response = await request({
16
+ config: params.config,
17
+ base: { id: "login" },
18
+ url,
19
+ method: "post",
20
+ metricsDetails: serviceContext,
21
+ body,
22
+ responseType: "none"
23
+ });
24
+ if (!response.ok) {
25
+ throw new HttpError(
26
+ `${name}: ${response.status} ${response.statusText}`,
27
+ response.status,
28
+ response.statusText
29
+ );
30
+ }
31
+ }
32
+ /** Invalidate a single token (requires the client secret). */
33
+ static async invalidateToken(params) {
34
+ await TokenIssuerService.post(
35
+ "TokenIssuerService.invalidateToken",
36
+ "invalidate",
37
+ params,
38
+ params.body
39
+ );
40
+ }
41
+ /** Invalidate every token of a client (no secret needed). */
42
+ static async invalidateTokenByClient(params) {
43
+ await TokenIssuerService.post(
44
+ "TokenIssuerService.invalidateTokenByClient",
45
+ "invalidate/by-client",
46
+ params,
47
+ params.body
48
+ );
49
+ }
50
+ /** Invalidate all currently-invalid tokens (cleanup sweep). */
51
+ static async invalidateInvalidTokens(params) {
52
+ await TokenIssuerService.post(
53
+ "TokenIssuerService.invalidateInvalidTokens",
54
+ "invalidate/invalid",
55
+ params,
56
+ {}
57
+ );
58
+ }
59
+ }
60
+ export {
61
+ TokenIssuerService
62
+ };
63
+ //# sourceMappingURL=token-issuer.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/accounts/token-issuer.service.ts"],
4
+ "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\nexport interface InvalidateTokenParams extends RequestBaseParams {\n body: {\n client_id: string\n client_secret: string\n audience: string\n clusterId?: string\n orgId?: string\n }\n}\n\nexport interface InvalidateTokenByClientParams extends RequestBaseParams {\n body: {\n client_id: string\n audience: string\n clusterId?: string\n orgId?: string\n }\n}\n\n/**\n * Token Issuer admin actions (god-gated), served by the public login host\n * (`login` base \u2014 same URL accounts reaches via `VITE_TOKEN_ISSUER`).\n */\nexport class TokenIssuerService {\n private static async post(\n name: string,\n url: string,\n params: RequestBaseParams,\n body: object,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name,\n url,\n normalizedUrl: url,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'login', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'login' },\n url,\n method: 'post',\n metricsDetails: serviceContext,\n body,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /** Invalidate a single token (requires the client secret). */\n public static async invalidateToken(\n params: InvalidateTokenParams,\n ): Promise<void> {\n await TokenIssuerService.post(\n 'TokenIssuerService.invalidateToken',\n 'invalidate',\n params,\n params.body,\n )\n }\n\n /** Invalidate every token of a client (no secret needed). */\n public static async invalidateTokenByClient(\n params: InvalidateTokenByClientParams,\n ): Promise<void> {\n await TokenIssuerService.post(\n 'TokenIssuerService.invalidateTokenByClient',\n 'invalidate/by-client',\n params,\n params.body,\n )\n }\n\n /** Invalidate all currently-invalid tokens (cleanup sweep). */\n public static async invalidateInvalidTokens(\n params: RequestBaseParams,\n ): Promise<void> {\n await TokenIssuerService.post(\n 'TokenIssuerService.invalidateInvalidTokens',\n 'invalidate/invalid',\n params,\n {},\n )\n }\n}\n"],
5
+ "mappings": "AAUA,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAyBnB,MAAM,mBAAmB;AAAA,EAC9B,aAAqB,KACnB,MACA,KACA,QACA,MACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IAC5C;AACA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,QAAQ;AAAA,MACpB;AAAA,MACA,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QAClD,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,aAAoB,gBAClB,QACe;AACf,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGA,aAAoB,wBAClB,QACe;AACf,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGA,aAAoB,wBAClB,QACe;AACf,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -55,6 +55,30 @@ export interface UpdateUserRoleRequest extends RequestBaseParams {
55
55
  'x-camunda-email'?: string;
56
56
  };
57
57
  }
58
+ export interface ChangeUserEmailRequest extends RequestBaseParams {
59
+ params: {
60
+ userId: string;
61
+ email: string;
62
+ };
63
+ }
64
+ export interface ChangeUserNameRequest extends RequestBaseParams {
65
+ params: {
66
+ userId: string;
67
+ firstname: string;
68
+ lastname: string;
69
+ };
70
+ }
71
+ export interface UserIdRequest extends RequestBaseParams {
72
+ params: {
73
+ userId: string;
74
+ };
75
+ }
76
+ export interface SetDefaultOrgRequest extends RequestBaseParams {
77
+ params: {
78
+ userId: string;
79
+ orgId: string;
80
+ };
81
+ }
58
82
  export declare class UsersService {
59
83
  static search(params: SearchParams): Promise<User[]>;
60
84
  static simpleSearch(params: SimpleSearchParams): Promise<{
@@ -63,8 +87,43 @@ export declare class UsersService {
63
87
  static getUserInfo(params: {
64
88
  userId: string;
65
89
  basic?: boolean;
90
+ roles?: boolean;
66
91
  } & RequestBaseParams): Promise<User | undefined>;
67
92
  static addUserToOrganization(params: AddUserToOrganizationRequest): Promise<void>;
93
+ static changeEmail(params: ChangeUserEmailRequest): Promise<void>;
94
+ static changeName(params: ChangeUserNameRequest): Promise<void>;
95
+ /** Admin-activate a user without an email token (POST api/admin/activate). */
96
+ static activateWithoutToken(params: UserIdRequest): Promise<void>;
97
+ /** Refresh the verification token and resend the welcome mail. */
98
+ static resendWelcomeMail(params: UserIdRequest): Promise<void>;
99
+ static deleteUser(params: UserIdRequest): Promise<void>;
100
+ /**
101
+ * Auth0 brute-force blocks for a user (`GET api/users/:userId/blocks`). The
102
+ * entries are Auth0's block records (identifier/IP), returned opaque for the
103
+ * caller to render.
104
+ */
105
+ static getBlocks(params: UserIdRequest): Promise<unknown[]>;
106
+ /** Clear a user's Auth0 blocks (`DELETE api/users/:userId/blocks`). */
107
+ static clearBlocks(params: UserIdRequest): Promise<void>;
108
+ /** Replace a user's Auth0 `app_metadata` (god-gated raw JSON edit). */
109
+ static updateAppMetadata(params: {
110
+ params: {
111
+ userId: string;
112
+ };
113
+ body: {
114
+ appMetadata: object;
115
+ };
116
+ } & RequestBaseParams): Promise<void>;
117
+ /** Replace a user's Auth0 `user_metadata` (god-gated raw JSON edit). */
118
+ static updateUserMetadata(params: {
119
+ params: {
120
+ userId: string;
121
+ };
122
+ body: {
123
+ userMetadata: object;
124
+ };
125
+ } & RequestBaseParams): Promise<void>;
126
+ static setDefaultOrg(params: SetDefaultOrgRequest): Promise<void>;
68
127
  static removeUserFromOrganization(params: RemoveUserFromOrganizationRequest): Promise<void>;
69
128
  /**
70
129
  * Update a user's role by adding or removing a single role.
@@ -113,19 +113,21 @@ class UsersService {
113
113
  return response.body;
114
114
  }
115
115
  static async getUserInfo(params) {
116
- const cacheKey = params.basic === true ? `basic-${params.userId}` : params.userId;
116
+ const cacheKey = `${params.basic === true ? "basic-" : ""}${params.roles === true ? "roles-" : ""}${params.userId}`;
117
117
  if (!params.cacheControl?.ignoreCache) {
118
118
  const inCache = userCache.get(cacheKey);
119
119
  if (inCache) {
120
120
  return inCache;
121
121
  }
122
122
  }
123
- let queryParams = "";
123
+ const searchParams = new URLSearchParams();
124
124
  if (params.basic === true) {
125
- const searchParams = new URLSearchParams();
126
125
  searchParams.append("basic", "true");
127
- queryParams = `?${searchParams.toString()}`;
128
126
  }
127
+ if (params.roles === true) {
128
+ searchParams.append("roles", "true");
129
+ }
130
+ const queryParams = searchParams.toString() ? `?${searchParams.toString()}` : "";
129
131
  const serviceContext = {
130
132
  method: {
131
133
  name: `UsersService.getUserInfo`,
@@ -191,6 +193,296 @@ class UsersService {
191
193
  );
192
194
  }
193
195
  }
196
+ static async changeEmail(params) {
197
+ const serviceContext = {
198
+ method: {
199
+ name: "UsersService.changeEmail",
200
+ url: `api/users/${encodeURIComponent(params.params.userId)}/email`,
201
+ normalizedUrl: "api/users/:userId/email",
202
+ type: "put"
203
+ },
204
+ source: params.config.metrics?.source || "unset",
205
+ target: { name: "accounts", type: "internal" }
206
+ };
207
+ const response = await request({
208
+ config: params.config,
209
+ base: { id: "accounts" },
210
+ url: serviceContext.method.url,
211
+ method: serviceContext.method.type,
212
+ metricsDetails: serviceContext,
213
+ body: { email: params.params.email },
214
+ responseType: "none"
215
+ });
216
+ if (!response.ok) {
217
+ throw new HttpError(
218
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
219
+ response.status,
220
+ response.statusText
221
+ );
222
+ }
223
+ }
224
+ static async changeName(params) {
225
+ const serviceContext = {
226
+ method: {
227
+ name: "UsersService.changeName",
228
+ url: `api/users/${encodeURIComponent(params.params.userId)}/name`,
229
+ normalizedUrl: "api/users/:userId/name",
230
+ type: "put"
231
+ },
232
+ source: params.config.metrics?.source || "unset",
233
+ target: { name: "accounts", type: "internal" }
234
+ };
235
+ const response = await request({
236
+ config: params.config,
237
+ base: { id: "accounts" },
238
+ url: serviceContext.method.url,
239
+ method: serviceContext.method.type,
240
+ metricsDetails: serviceContext,
241
+ body: {
242
+ firstname: params.params.firstname,
243
+ lastname: params.params.lastname
244
+ },
245
+ responseType: "none"
246
+ });
247
+ if (!response.ok) {
248
+ throw new HttpError(
249
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
250
+ response.status,
251
+ response.statusText
252
+ );
253
+ }
254
+ }
255
+ /** Admin-activate a user without an email token (POST api/admin/activate). */
256
+ static async activateWithoutToken(params) {
257
+ const serviceContext = {
258
+ method: {
259
+ name: "UsersService.activateWithoutToken",
260
+ url: "api/admin/activate",
261
+ normalizedUrl: "api/admin/activate",
262
+ type: "post"
263
+ },
264
+ source: params.config.metrics?.source || "unset",
265
+ target: { name: "accounts", type: "internal" }
266
+ };
267
+ const response = await request({
268
+ config: params.config,
269
+ base: { id: "accounts" },
270
+ url: serviceContext.method.url,
271
+ method: serviceContext.method.type,
272
+ metricsDetails: serviceContext,
273
+ body: { userId: params.params.userId },
274
+ responseType: "none"
275
+ });
276
+ if (!response.ok) {
277
+ throw new HttpError(
278
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
279
+ response.status,
280
+ response.statusText
281
+ );
282
+ }
283
+ }
284
+ /** Refresh the verification token and resend the welcome mail. */
285
+ static async resendWelcomeMail(params) {
286
+ const serviceContext = {
287
+ method: {
288
+ name: "UsersService.resendWelcomeMail",
289
+ url: "api/admin/resend-welcome-mail",
290
+ normalizedUrl: "api/admin/resend-welcome-mail",
291
+ type: "post"
292
+ },
293
+ source: params.config.metrics?.source || "unset",
294
+ target: { name: "accounts", type: "internal" }
295
+ };
296
+ const response = await request({
297
+ config: params.config,
298
+ base: { id: "accounts" },
299
+ url: serviceContext.method.url,
300
+ method: serviceContext.method.type,
301
+ metricsDetails: serviceContext,
302
+ body: { userId: params.params.userId },
303
+ responseType: "none"
304
+ });
305
+ if (!response.ok) {
306
+ throw new HttpError(
307
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
308
+ response.status,
309
+ response.statusText
310
+ );
311
+ }
312
+ }
313
+ static async deleteUser(params) {
314
+ const serviceContext = {
315
+ method: {
316
+ name: "UsersService.deleteUser",
317
+ url: `api/users/${encodeURIComponent(params.params.userId)}`,
318
+ normalizedUrl: "api/users/:userId",
319
+ type: "delete"
320
+ },
321
+ source: params.config.metrics?.source || "unset",
322
+ target: { name: "accounts", type: "internal" }
323
+ };
324
+ const response = await request({
325
+ config: params.config,
326
+ base: { id: "accounts" },
327
+ url: serviceContext.method.url,
328
+ method: serviceContext.method.type,
329
+ metricsDetails: serviceContext,
330
+ responseType: "none"
331
+ });
332
+ if (!response.ok) {
333
+ throw new HttpError(
334
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
335
+ response.status,
336
+ response.statusText
337
+ );
338
+ }
339
+ }
340
+ /**
341
+ * Auth0 brute-force blocks for a user (`GET api/users/:userId/blocks`). The
342
+ * entries are Auth0's block records (identifier/IP), returned opaque for the
343
+ * caller to render.
344
+ */
345
+ static async getBlocks(params) {
346
+ const serviceContext = {
347
+ method: {
348
+ name: "UsersService.getBlocks",
349
+ url: `api/users/${encodeURIComponent(params.params.userId)}/blocks`,
350
+ normalizedUrl: "api/users/:userId/blocks",
351
+ type: "get"
352
+ },
353
+ source: params.config.metrics?.source || "unset",
354
+ target: { name: "accounts", type: "internal" }
355
+ };
356
+ const response = await request({
357
+ ...params,
358
+ base: { id: "accounts" },
359
+ url: serviceContext.method.url,
360
+ method: serviceContext.method.type,
361
+ metricsDetails: serviceContext,
362
+ responseType: "json"
363
+ });
364
+ if (!response.ok) {
365
+ throw new HttpError(
366
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
367
+ response.status,
368
+ response.statusText
369
+ );
370
+ }
371
+ return response.body ?? [];
372
+ }
373
+ /** Clear a user's Auth0 blocks (`DELETE api/users/:userId/blocks`). */
374
+ static async clearBlocks(params) {
375
+ const serviceContext = {
376
+ method: {
377
+ name: "UsersService.clearBlocks",
378
+ url: `api/users/${encodeURIComponent(params.params.userId)}/blocks`,
379
+ normalizedUrl: "api/users/:userId/blocks",
380
+ type: "delete"
381
+ },
382
+ source: params.config.metrics?.source || "unset",
383
+ target: { name: "accounts", type: "internal" }
384
+ };
385
+ const response = await request({
386
+ config: params.config,
387
+ base: { id: "accounts" },
388
+ url: serviceContext.method.url,
389
+ method: serviceContext.method.type,
390
+ metricsDetails: serviceContext,
391
+ responseType: "none"
392
+ });
393
+ if (!response.ok) {
394
+ throw new HttpError(
395
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
396
+ response.status,
397
+ response.statusText
398
+ );
399
+ }
400
+ }
401
+ /** Replace a user's Auth0 `app_metadata` (god-gated raw JSON edit). */
402
+ static async updateAppMetadata(params) {
403
+ const serviceContext = {
404
+ method: {
405
+ name: "UsersService.updateAppMetadata",
406
+ url: `api/users/${encodeURIComponent(params.params.userId)}/appmetadata`,
407
+ normalizedUrl: "api/users/:userId/appmetadata",
408
+ type: "put"
409
+ },
410
+ source: params.config.metrics?.source || "unset",
411
+ target: { name: "accounts", type: "internal" }
412
+ };
413
+ const response = await request({
414
+ config: params.config,
415
+ base: { id: "accounts" },
416
+ url: serviceContext.method.url,
417
+ method: serviceContext.method.type,
418
+ metricsDetails: serviceContext,
419
+ body: params.body,
420
+ responseType: "none"
421
+ });
422
+ if (!response.ok) {
423
+ throw new HttpError(
424
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
425
+ response.status,
426
+ response.statusText
427
+ );
428
+ }
429
+ }
430
+ /** Replace a user's Auth0 `user_metadata` (god-gated raw JSON edit). */
431
+ static async updateUserMetadata(params) {
432
+ const serviceContext = {
433
+ method: {
434
+ name: "UsersService.updateUserMetadata",
435
+ url: `api/users/${encodeURIComponent(params.params.userId)}/usermetadata`,
436
+ normalizedUrl: "api/users/:userId/usermetadata",
437
+ type: "put"
438
+ },
439
+ source: params.config.metrics?.source || "unset",
440
+ target: { name: "accounts", type: "internal" }
441
+ };
442
+ const response = await request({
443
+ config: params.config,
444
+ base: { id: "accounts" },
445
+ url: serviceContext.method.url,
446
+ method: serviceContext.method.type,
447
+ metricsDetails: serviceContext,
448
+ body: params.body,
449
+ responseType: "none"
450
+ });
451
+ if (!response.ok) {
452
+ throw new HttpError(
453
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
454
+ response.status,
455
+ response.statusText
456
+ );
457
+ }
458
+ }
459
+ static async setDefaultOrg(params) {
460
+ const serviceContext = {
461
+ method: {
462
+ name: "UsersService.setDefaultOrg",
463
+ url: `api/users/${encodeURIComponent(params.params.userId)}/organizations/${encodeURIComponent(params.params.orgId)}/default`,
464
+ normalizedUrl: "api/users/:userId/organizations/:orgId/default",
465
+ type: "patch"
466
+ },
467
+ source: params.config.metrics?.source || "unset",
468
+ target: { name: "accounts", type: "internal" }
469
+ };
470
+ const response = await request({
471
+ config: params.config,
472
+ base: { id: "accounts" },
473
+ url: serviceContext.method.url,
474
+ method: serviceContext.method.type,
475
+ metricsDetails: serviceContext,
476
+ responseType: "none"
477
+ });
478
+ if (!response.ok) {
479
+ throw new HttpError(
480
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
481
+ response.status,
482
+ response.statusText
483
+ );
484
+ }
485
+ }
194
486
  static async removeUserFromOrganization(params) {
195
487
  const serviceContext = {
196
488
  method: {