@camunda/ccma-api 0.0.2 → 0.0.3

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 (193) hide show
  1. package/dist/index.d.ts +95 -0
  2. package/dist/index.js +151 -0
  3. package/dist/index.js.map +7 -0
  4. package/dist/services/accounts/accounts.data-export.service.d.ts +13 -0
  5. package/dist/services/accounts/accounts.data-export.service.js +41 -0
  6. package/dist/services/accounts/accounts.data-export.service.js.map +7 -0
  7. package/dist/services/accounts/accounts.valuemetrics.service.d.ts +8 -0
  8. package/dist/services/accounts/accounts.valuemetrics.service.js +1 -0
  9. package/dist/services/accounts/accounts.valuemetrics.service.js.map +7 -0
  10. package/dist/services/accounts/bot.service.d.ts +21 -0
  11. package/dist/services/accounts/bot.service.js +74 -0
  12. package/dist/services/accounts/bot.service.js.map +7 -0
  13. package/dist/services/accounts/challenge.service.d.ts +296 -0
  14. package/dist/services/accounts/challenge.service.js +475 -0
  15. package/dist/services/accounts/challenge.service.js.map +7 -0
  16. package/dist/services/accounts/connections.service.d.ts +27 -0
  17. package/dist/services/accounts/connections.service.js +41 -0
  18. package/dist/services/accounts/connections.service.js.map +7 -0
  19. package/dist/services/accounts/dashboards.service.d.ts +8 -0
  20. package/dist/services/accounts/dashboards.service.js +42 -0
  21. package/dist/services/accounts/dashboards.service.js.map +7 -0
  22. package/dist/services/accounts/early-access-features.service.d.ts +34 -0
  23. package/dist/services/accounts/early-access-features.service.js +67 -0
  24. package/dist/services/accounts/early-access-features.service.js.map +7 -0
  25. package/dist/services/accounts/genericCache.service.d.ts +13 -0
  26. package/dist/services/accounts/genericCache.service.js +80 -0
  27. package/dist/services/accounts/genericCache.service.js.map +7 -0
  28. package/dist/services/accounts/hdp.service.d.ts +52 -0
  29. package/dist/services/accounts/hdp.service.js +180 -0
  30. package/dist/services/accounts/hdp.service.js.map +7 -0
  31. package/dist/services/accounts/offboarding.service.d.ts +18 -0
  32. package/dist/services/accounts/offboarding.service.js +48 -0
  33. package/dist/services/accounts/offboarding.service.js.map +7 -0
  34. package/dist/services/accounts/organization-members.service.d.ts +68 -0
  35. package/dist/services/accounts/organization-members.service.js +216 -0
  36. package/dist/services/accounts/organization-members.service.js.map +7 -0
  37. package/dist/services/accounts/orgs.service.d.ts +273 -0
  38. package/dist/services/accounts/orgs.service.js +978 -0
  39. package/dist/services/accounts/orgs.service.js.map +7 -0
  40. package/dist/services/accounts/salesplan.service.d.ts +7 -0
  41. package/dist/services/accounts/salesplan.service.js +40 -0
  42. package/dist/services/accounts/salesplan.service.js.map +7 -0
  43. package/dist/services/accounts/spam-detection.service.d.ts +8 -0
  44. package/dist/services/accounts/spam-detection.service.js +72 -0
  45. package/dist/services/accounts/spam-detection.service.js.map +7 -0
  46. package/dist/services/accounts/stats.service.d.ts +7 -0
  47. package/dist/services/accounts/stats.service.js +40 -0
  48. package/dist/services/accounts/stats.service.js.map +7 -0
  49. package/dist/services/accounts/usage-alerts.service.d.ts +34 -0
  50. package/dist/services/accounts/usage-alerts.service.js +112 -0
  51. package/dist/services/accounts/usage-alerts.service.js.map +7 -0
  52. package/dist/services/accounts/users.service.d.ts +101 -0
  53. package/dist/services/accounts/users.service.js +444 -0
  54. package/dist/services/accounts/users.service.js.map +7 -0
  55. package/dist/services/alerts/alerts.service.d.ts +59 -0
  56. package/dist/services/alerts/alerts.service.js +234 -0
  57. package/dist/services/alerts/alerts.service.js.map +7 -0
  58. package/dist/services/analytic-bridge/analytic-bridge.service.d.ts +23 -0
  59. package/dist/services/analytic-bridge/analytic-bridge.service.js +86 -0
  60. package/dist/services/analytic-bridge/analytic-bridge.service.js.map +7 -0
  61. package/dist/services/audit-logger/audit-logger.service.d.ts +27 -0
  62. package/dist/services/audit-logger/audit-logger.service.js +108 -0
  63. package/dist/services/audit-logger/audit-logger.service.js.map +7 -0
  64. package/dist/services/auth0/auth0.service.d.ts +15 -0
  65. package/dist/services/auth0/auth0.service.js +40 -0
  66. package/dist/services/auth0/auth0.service.js.map +7 -0
  67. package/dist/services/comm-bridge/comm-bridge.service.d.ts +33 -0
  68. package/dist/services/comm-bridge/comm-bridge.service.js +40 -0
  69. package/dist/services/comm-bridge/comm-bridge.service.js.map +7 -0
  70. package/dist/services/console/console.admin.service.d.ts +328 -0
  71. package/dist/services/console/console.admin.service.js +1526 -0
  72. package/dist/services/console/console.admin.service.js.map +7 -0
  73. package/dist/services/console/console.alerts.service.d.ts +69 -0
  74. package/dist/services/console/console.alerts.service.js +160 -0
  75. package/dist/services/console/console.alerts.service.js.map +7 -0
  76. package/dist/services/console/console.api-clients.service.d.ts +48 -0
  77. package/dist/services/console/console.api-clients.service.js +123 -0
  78. package/dist/services/console/console.api-clients.service.js.map +7 -0
  79. package/dist/services/console/console.backup-schedule.service.d.ts +21 -0
  80. package/dist/services/console/console.backup-schedule.service.js +67 -0
  81. package/dist/services/console/console.backup-schedule.service.js.map +7 -0
  82. package/dist/services/console/console.byok-scripts.service.d.ts +12 -0
  83. package/dist/services/console/console.byok-scripts.service.js +92 -0
  84. package/dist/services/console/console.byok-scripts.service.js.map +7 -0
  85. package/dist/services/console/console.byom-monitoring.service.d.ts +58 -0
  86. package/dist/services/console/console.byom-monitoring.service.js +177 -0
  87. package/dist/services/console/console.byom-monitoring.service.js.map +7 -0
  88. package/dist/services/console/console.cluster-clients.service.d.ts +55 -0
  89. package/dist/services/console/console.cluster-clients.service.js +123 -0
  90. package/dist/services/console/console.cluster-clients.service.js.map +7 -0
  91. package/dist/services/console/console.cluster-parameters.service.d.ts +64 -0
  92. package/dist/services/console/console.cluster-parameters.service.js +39 -0
  93. package/dist/services/console/console.cluster-parameters.service.js.map +7 -0
  94. package/dist/services/console/console.cluster.service.d.ts +114 -0
  95. package/dist/services/console/console.cluster.service.js +271 -0
  96. package/dist/services/console/console.cluster.service.js.map +7 -0
  97. package/dist/services/console/console.clusterBulkOperation.service.d.ts +20 -0
  98. package/dist/services/console/console.clusterBulkOperation.service.js +199 -0
  99. package/dist/services/console/console.clusterBulkOperation.service.js.map +7 -0
  100. package/dist/services/console/console.clusterplan.modification.service.d.ts +33 -0
  101. package/dist/services/console/console.clusterplan.modification.service.js +231 -0
  102. package/dist/services/console/console.clusterplan.modification.service.js.map +7 -0
  103. package/dist/services/console/console.clusterplan.service.d.ts +21 -0
  104. package/dist/services/console/console.clusterplan.service.js +64 -0
  105. package/dist/services/console/console.clusterplan.service.js.map +7 -0
  106. package/dist/services/console/console.connector-secrets.service.d.ts +30 -0
  107. package/dist/services/console/console.connector-secrets.service.js +125 -0
  108. package/dist/services/console/console.connector-secrets.service.js.map +7 -0
  109. package/dist/services/console/console.custommetrics.service.d.ts +10 -0
  110. package/dist/services/console/console.custommetrics.service.js +43 -0
  111. package/dist/services/console/console.custommetrics.service.js.map +7 -0
  112. package/dist/services/console/console.hotbackups.service.d.ts +34 -0
  113. package/dist/services/console/console.hotbackups.service.js +120 -0
  114. package/dist/services/console/console.hotbackups.service.js.map +7 -0
  115. package/dist/services/console/console.ip-whitelist.service.d.ts +15 -0
  116. package/dist/services/console/console.ip-whitelist.service.js +36 -0
  117. package/dist/services/console/console.ip-whitelist.service.js.map +7 -0
  118. package/dist/services/console/console.jobs.saas.service.d.ts +70 -0
  119. package/dist/services/console/console.jobs.saas.service.js +139 -0
  120. package/dist/services/console/console.jobs.saas.service.js.map +7 -0
  121. package/dist/services/console/console.m2m.service.d.ts +23 -0
  122. package/dist/services/console/console.m2m.service.js +94 -0
  123. package/dist/services/console/console.m2m.service.js.map +7 -0
  124. package/dist/services/console/console.secure-connectivity.service.d.ts +41 -0
  125. package/dist/services/console/console.secure-connectivity.service.js +129 -0
  126. package/dist/services/console/console.secure-connectivity.service.js.map +7 -0
  127. package/dist/services/console/console.valuemetrics.service.d.ts +17 -0
  128. package/dist/services/console/console.valuemetrics.service.js +110 -0
  129. package/dist/services/console/console.valuemetrics.service.js.map +7 -0
  130. package/dist/services/console/generation.service.d.ts +29 -0
  131. package/dist/services/console/generation.service.js +166 -0
  132. package/dist/services/console/generation.service.js.map +7 -0
  133. package/dist/services/github/github.service.d.ts +73 -0
  134. package/dist/services/github/github.service.js +272 -0
  135. package/dist/services/github/github.service.js.map +7 -0
  136. package/dist/services/hibob/hibob.service.d.ts +74 -0
  137. package/dist/services/hibob/hibob.service.js +125 -0
  138. package/dist/services/hibob/hibob.service.js.map +7 -0
  139. package/dist/services/hubspot/hubspot.service.d.ts +50 -0
  140. package/dist/services/hubspot/hubspot.service.js +119 -0
  141. package/dist/services/hubspot/hubspot.service.js.map +7 -0
  142. package/dist/services/litellm/litellm.service.d.ts +290 -0
  143. package/dist/services/litellm/litellm.service.js +392 -0
  144. package/dist/services/litellm/litellm.service.js.map +7 -0
  145. package/dist/services/login/login.service.d.ts +15 -0
  146. package/dist/services/login/login.service.js +66 -0
  147. package/dist/services/login/login.service.js.map +7 -0
  148. package/dist/services/mixpanel/mixpanel.service.d.ts +16 -0
  149. package/dist/services/mixpanel/mixpanel.service.js +86 -0
  150. package/dist/services/mixpanel/mixpanel.service.js.map +7 -0
  151. package/dist/services/notifications/notifications.service.d.ts +7 -0
  152. package/dist/services/notifications/notifications.service.js +38 -0
  153. package/dist/services/notifications/notifications.service.js.map +7 -0
  154. package/dist/services/slack/slack-blockkit.service.d.ts +28 -0
  155. package/dist/services/slack/slack-blockkit.service.js +45 -0
  156. package/dist/services/slack/slack-blockkit.service.js.map +7 -0
  157. package/dist/services/slack/slack.service.d.ts +31 -0
  158. package/dist/services/slack/slack.service.js +118 -0
  159. package/dist/services/slack/slack.service.js.map +7 -0
  160. package/dist/services/telemetry/telemetry.service.d.ts +16 -0
  161. package/dist/services/telemetry/telemetry.service.js +85 -0
  162. package/dist/services/telemetry/telemetry.service.js.map +7 -0
  163. package/dist/services/token-issuer/token-issuer.jwks.service.d.ts +13 -0
  164. package/dist/services/token-issuer/token-issuer.jwks.service.js +76 -0
  165. package/dist/services/token-issuer/token-issuer.jwks.service.js.map +7 -0
  166. package/dist/services/wordpress/wordpress.service.d.ts +15 -0
  167. package/dist/services/wordpress/wordpress.service.js +111 -0
  168. package/dist/services/wordpress/wordpress.service.js.map +7 -0
  169. package/dist/types/general.types.d.ts +61 -0
  170. package/dist/types/general.types.js +1 -0
  171. package/dist/types/general.types.js.map +7 -0
  172. package/dist/utils/api.d.ts +31 -0
  173. package/dist/utils/api.js +400 -0
  174. package/dist/utils/api.js.map +7 -0
  175. package/dist/utils/cache.d.ts +7 -0
  176. package/dist/utils/cache.js +25 -0
  177. package/dist/utils/cache.js.map +7 -0
  178. package/dist/utils/ccma-metrics.d.ts +18 -0
  179. package/dist/utils/ccma-metrics.js +37 -0
  180. package/dist/utils/ccma-metrics.js.map +7 -0
  181. package/dist/utils/environments.d.ts +11 -0
  182. package/dist/utils/environments.js +148 -0
  183. package/dist/utils/environments.js.map +7 -0
  184. package/dist/utils/errors.d.ts +5 -0
  185. package/dist/utils/errors.js +11 -0
  186. package/dist/utils/errors.js.map +7 -0
  187. package/dist/utils/frontendCache.d.ts +26 -0
  188. package/dist/utils/frontendCache.js +121 -0
  189. package/dist/utils/frontendCache.js.map +7 -0
  190. package/dist/utils/token-issuer.utils.d.ts +8 -0
  191. package/dist/utils/token-issuer.utils.js +19 -0
  192. package/dist/utils/token-issuer.utils.js.map +7 -0
  193. package/package.json +2 -2
@@ -0,0 +1,392 @@
1
+ import { request } from "../../utils/api.js";
2
+ import { HttpError } from "../../utils/errors.js";
3
+ class LiteLLMService {
4
+ /**
5
+ * Create a new team in LiteLLM
6
+ * POST /team/new
7
+ */
8
+ static async createTeam(params) {
9
+ const serviceContext = {
10
+ method: {
11
+ name: "LiteLLMService.createTeam",
12
+ url: `${params.options.litellmApiBaseUrl}/team/new`,
13
+ normalizedUrl: "/team/new",
14
+ type: "post"
15
+ },
16
+ source: params.config.metrics?.source || "unset",
17
+ target: {
18
+ name: "litellm",
19
+ type: "external"
20
+ }
21
+ };
22
+ const body = {
23
+ team_alias: params.options.team_alias,
24
+ ...params.options.max_budget !== void 0 && {
25
+ max_budget: params.options.max_budget
26
+ },
27
+ ...params.options.budget_duration && {
28
+ budget_duration: params.options.budget_duration
29
+ }
30
+ };
31
+ const response = await request({
32
+ config: params.config,
33
+ url: serviceContext.method.url,
34
+ method: serviceContext.method.type,
35
+ metricsDetails: serviceContext,
36
+ type: "json",
37
+ headers: {
38
+ Authorization: `Bearer ${params.options.apiToken}`
39
+ },
40
+ body
41
+ });
42
+ if (!response.ok) {
43
+ throw new HttpError(
44
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
45
+ response.status,
46
+ response.statusText
47
+ );
48
+ }
49
+ return response.body;
50
+ }
51
+ /**
52
+ * Update a team's budget in LiteLLM
53
+ * POST /team/update
54
+ */
55
+ static async updateTeamBudget(params) {
56
+ const serviceContext = {
57
+ method: {
58
+ name: "LiteLLMService.updateTeamBudget",
59
+ url: `${params.options.litellmApiBaseUrl}/team/update`,
60
+ normalizedUrl: "/team/update",
61
+ type: "post"
62
+ },
63
+ source: params.config.metrics?.source || "unset",
64
+ target: {
65
+ name: "litellm",
66
+ type: "external"
67
+ }
68
+ };
69
+ const body = {
70
+ team_id: params.options.team_id,
71
+ max_budget: params.options.max_budget
72
+ };
73
+ const response = await request({
74
+ config: params.config,
75
+ url: serviceContext.method.url,
76
+ method: serviceContext.method.type,
77
+ metricsDetails: serviceContext,
78
+ type: "json",
79
+ headers: {
80
+ Authorization: `Bearer ${params.options.apiToken}`
81
+ },
82
+ body
83
+ });
84
+ if (!response.ok) {
85
+ throw new HttpError(
86
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
87
+ response.status,
88
+ response.statusText
89
+ );
90
+ }
91
+ return response.body;
92
+ }
93
+ /**
94
+ * Update a key's budget in LiteLLM
95
+ * POST /key/update
96
+ */
97
+ static async updateKeyBudget(params) {
98
+ const serviceContext = {
99
+ method: {
100
+ name: "LiteLLMService.updateKeyBudget",
101
+ url: `${params.options.litellmApiBaseUrl}/key/update`,
102
+ normalizedUrl: "/key/update",
103
+ type: "post"
104
+ },
105
+ source: params.config.metrics?.source || "unset",
106
+ target: {
107
+ name: "litellm",
108
+ type: "external"
109
+ }
110
+ };
111
+ const body = {
112
+ key: params.options.key,
113
+ max_budget: params.options.max_budget
114
+ };
115
+ const response = await request({
116
+ config: params.config,
117
+ url: serviceContext.method.url,
118
+ method: serviceContext.method.type,
119
+ metricsDetails: serviceContext,
120
+ type: "json",
121
+ headers: {
122
+ Authorization: `Bearer ${params.options.apiToken}`
123
+ },
124
+ body
125
+ });
126
+ if (!response.ok) {
127
+ throw new HttpError(
128
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
129
+ response.status,
130
+ response.statusText
131
+ );
132
+ }
133
+ return response.body;
134
+ }
135
+ /**
136
+ * Generate a key for a team
137
+ * POST /key/generate
138
+ */
139
+ static async generateKey(params) {
140
+ const serviceContext = {
141
+ method: {
142
+ name: "LiteLLMService.generateKey",
143
+ url: `${params.options.litellmApiBaseUrl}/key/generate`,
144
+ normalizedUrl: "/key/generate",
145
+ type: "post"
146
+ },
147
+ source: params.config.metrics?.source || "unset",
148
+ target: {
149
+ name: "litellm",
150
+ type: "external"
151
+ }
152
+ };
153
+ const body = {
154
+ team_id: params.options.team_id,
155
+ key_type: "llm_api",
156
+ allowed_routes: ["/chat/completions"],
157
+ ...params.options.models && { models: params.options.models },
158
+ ...params.options.key_alias && { key_alias: params.options.key_alias },
159
+ ...params.options.duration && { duration: params.options.duration },
160
+ ...params.options.metadata && { metadata: params.options.metadata },
161
+ ...params.options.max_budget !== void 0 && {
162
+ max_budget: params.options.max_budget
163
+ },
164
+ ...params.options.budget_duration && {
165
+ budget_duration: params.options.budget_duration
166
+ }
167
+ };
168
+ const response = await request({
169
+ config: params.config,
170
+ url: serviceContext.method.url,
171
+ method: serviceContext.method.type,
172
+ metricsDetails: serviceContext,
173
+ type: "json",
174
+ headers: {
175
+ Authorization: `Bearer ${params.options.apiToken}`
176
+ },
177
+ body
178
+ });
179
+ if (!response.ok) {
180
+ throw new HttpError(
181
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
182
+ response.status,
183
+ response.statusText
184
+ );
185
+ }
186
+ return response.body;
187
+ }
188
+ /**
189
+ * Block a key to quickly disable it
190
+ * POST /key/block
191
+ */
192
+ static async blockKey(params) {
193
+ const serviceContext = {
194
+ method: {
195
+ name: "LiteLLMService.blockKey",
196
+ url: `${params.options.litellmApiBaseUrl}/key/block`,
197
+ normalizedUrl: "/key/block",
198
+ type: "post"
199
+ },
200
+ source: params.config.metrics?.source || "unset",
201
+ target: {
202
+ name: "litellm",
203
+ type: "external"
204
+ }
205
+ };
206
+ const body = {
207
+ key: params.options.key
208
+ };
209
+ const response = await request({
210
+ config: params.config,
211
+ url: serviceContext.method.url,
212
+ method: serviceContext.method.type,
213
+ metricsDetails: serviceContext,
214
+ type: "json",
215
+ headers: {
216
+ Authorization: `Bearer ${params.options.apiToken}`
217
+ },
218
+ body
219
+ });
220
+ if (!response.ok) {
221
+ throw new HttpError(
222
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
223
+ response.status,
224
+ response.statusText
225
+ );
226
+ }
227
+ return response.body;
228
+ }
229
+ /**
230
+ * Unblock a key to re-enable it
231
+ * POST /key/unblock
232
+ */
233
+ static async unblockKey(params) {
234
+ const serviceContext = {
235
+ method: {
236
+ name: "LiteLLMService.unblockKey",
237
+ url: `${params.options.litellmApiBaseUrl}/key/unblock`,
238
+ normalizedUrl: "/key/unblock",
239
+ type: "post"
240
+ },
241
+ source: params.config.metrics?.source || "unset",
242
+ target: {
243
+ name: "litellm",
244
+ type: "external"
245
+ }
246
+ };
247
+ const body = {
248
+ key: params.options.key
249
+ };
250
+ const response = await request({
251
+ config: params.config,
252
+ url: serviceContext.method.url,
253
+ method: serviceContext.method.type,
254
+ metricsDetails: serviceContext,
255
+ type: "json",
256
+ headers: {
257
+ Authorization: `Bearer ${params.options.apiToken}`
258
+ },
259
+ body
260
+ });
261
+ if (!response.ok) {
262
+ throw new HttpError(
263
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
264
+ response.status,
265
+ response.statusText
266
+ );
267
+ }
268
+ return response.body;
269
+ }
270
+ /**
271
+ * Get information about a key including usage and spend
272
+ * GET /key/info
273
+ */
274
+ static async getKeyInfo(params) {
275
+ const serviceContext = {
276
+ method: {
277
+ name: "LiteLLMService.getKeyInfo",
278
+ url: `${params.options.litellmApiBaseUrl}/key/info?key=${encodeURIComponent(params.options.key)}`,
279
+ normalizedUrl: "/key/info",
280
+ type: "get"
281
+ },
282
+ source: params.config.metrics?.source || "unset",
283
+ target: {
284
+ name: "litellm",
285
+ type: "external"
286
+ }
287
+ };
288
+ const response = await request({
289
+ config: params.config,
290
+ url: serviceContext.method.url,
291
+ method: serviceContext.method.type,
292
+ metricsDetails: serviceContext,
293
+ headers: {
294
+ Authorization: `Bearer ${params.options.apiToken}`
295
+ }
296
+ });
297
+ if (!response.ok) {
298
+ throw new HttpError(
299
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
300
+ response.status,
301
+ response.statusText
302
+ );
303
+ }
304
+ return response.body;
305
+ }
306
+ /**
307
+ * Delete a key
308
+ * POST /key/delete
309
+ */
310
+ static async deleteKey(params) {
311
+ const serviceContext = {
312
+ method: {
313
+ name: "LiteLLMService.deleteKey",
314
+ url: `${params.options.litellmApiBaseUrl}/key/delete`,
315
+ normalizedUrl: "/key/delete",
316
+ type: "post"
317
+ },
318
+ source: params.config.metrics?.source || "unset",
319
+ target: {
320
+ name: "litellm",
321
+ type: "external"
322
+ }
323
+ };
324
+ const body = {
325
+ keys: [params.options.key]
326
+ };
327
+ const response = await request({
328
+ config: params.config,
329
+ url: serviceContext.method.url,
330
+ method: serviceContext.method.type,
331
+ metricsDetails: serviceContext,
332
+ type: "json",
333
+ headers: {
334
+ Authorization: `Bearer ${params.options.apiToken}`
335
+ },
336
+ body
337
+ });
338
+ if (!response.ok) {
339
+ throw new HttpError(
340
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
341
+ response.status,
342
+ response.statusText
343
+ );
344
+ }
345
+ return response.body;
346
+ }
347
+ /**
348
+ * Delete a team
349
+ * POST /team/delete
350
+ */
351
+ static async deleteTeam(params) {
352
+ const serviceContext = {
353
+ method: {
354
+ name: "LiteLLMService.deleteTeam",
355
+ url: `${params.options.litellmApiBaseUrl}/team/delete`,
356
+ normalizedUrl: "/team/delete",
357
+ type: "post"
358
+ },
359
+ source: params.config.metrics?.source || "unset",
360
+ target: {
361
+ name: "litellm",
362
+ type: "external"
363
+ }
364
+ };
365
+ const body = {
366
+ team_ids: [params.options.team_id]
367
+ };
368
+ const response = await request({
369
+ config: params.config,
370
+ url: serviceContext.method.url,
371
+ method: serviceContext.method.type,
372
+ metricsDetails: serviceContext,
373
+ type: "json",
374
+ headers: {
375
+ Authorization: `Bearer ${params.options.apiToken}`
376
+ },
377
+ body
378
+ });
379
+ if (!response.ok) {
380
+ throw new HttpError(
381
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
382
+ response.status,
383
+ response.statusText
384
+ );
385
+ }
386
+ return response.body;
387
+ }
388
+ }
389
+ export {
390
+ LiteLLMService
391
+ };
392
+ //# sourceMappingURL=litellm.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/litellm/litellm.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\n/**\n * Request to create a new team in LiteLLM\n * POST /team/new\n */\nexport interface CreateTeamRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team alias/name */\n team_alias: string\n /** Maximum budget for the team */\n max_budget?: number\n /** Budget duration (e.g., '30d', '1mo') */\n budget_duration?: string\n }\n}\n\n/**\n * Response from creating a new team\n */\nexport interface CreateTeamResponse {\n team_id: string\n team_alias: string\n max_budget?: number\n budget_duration?: string\n created_at?: string\n [key: string]: any\n}\n\n/**\n * Request to update a team's budget in LiteLLM\n * POST /team/update\n */\nexport interface UpdateTeamBudgetRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team ID to update */\n team_id: string\n /** New maximum budget for the team */\n max_budget: number\n }\n}\n\n/**\n * Response from updating a team's budget\n */\nexport interface UpdateTeamBudgetResponse {\n team_id: string\n team_alias?: string\n max_budget: number\n budget_duration?: string\n [key: string]: any\n}\n\n/**\n * Request to update a key's budget in LiteLLM\n * POST /key/update\n */\nexport interface UpdateKeyBudgetRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to update */\n key: string\n /** New maximum budget for the key */\n max_budget: number\n }\n}\n\n/**\n * Response from updating a key's budget\n */\nexport interface UpdateKeyBudgetResponse {\n key: string\n max_budget: number\n [key: string]: any\n}\n\n/**\n * Request to delete a team\n * POST /team/delete\n */\nexport interface DeleteTeamRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team ID to delete */\n team_id: string\n }\n}\n\n/**\n * Response from deleting a team\n */\nexport interface DeleteTeamResponse {\n deleted_teams: string[]\n [key: string]: any\n}\n\n/**\n * Request to generate a key for a team\n * POST /key/generate\n */\nexport interface GenerateKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team ID to generate key for */\n team_id: string\n /** Models the key can access */\n models?: string[]\n /** Optional key alias */\n key_alias?: string\n /** Duration for the key */\n duration?: string\n /** Additional metadata */\n metadata?: Record<string, any>\n /** Maximum budget for this key */\n max_budget?: number\n /** Budget duration */\n budget_duration?: string\n }\n}\n\n/**\n * Response from generating a key\n */\nexport interface GenerateKeyResponse {\n key: string\n key_name?: string\n expires?: string\n team_id: string\n metadata?: Record<string, any>\n [key: string]: any\n}\n\n/**\n * Request to block a key\n * POST /key/block\n */\nexport interface BlockKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to block */\n key: string\n }\n}\n\n/**\n * Response from blocking a key\n */\nexport interface BlockKeyResponse {\n status: string\n message?: string\n [key: string]: any\n}\n\n/**\n * Request to unblock a key\n * POST /key/unblock\n */\nexport interface UnblockKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to unblock */\n key: string\n }\n}\n\n/**\n * Response from unblocking a key\n */\nexport interface UnblockKeyResponse {\n status: string\n message?: string\n [key: string]: any\n}\n\n/**\n * Request to get key info\n * GET /key/info\n */\nexport interface GetKeyInfoRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to get info for */\n key: string\n }\n}\n\n/**\n * Request to delete a key\n * POST /key/delete\n */\nexport interface DeleteKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to delete */\n key: string\n }\n}\n\n/**\n * Response from deleting a key\n */\nexport interface DeleteKeyResponse {\n deleted_keys: string[]\n [key: string]: any\n}\n\n/**\n * Response from getting key info including usage and spend\n */\nexport interface GetKeyInfoResponse {\n info: {\n key: string\n team_id: string\n spend?: number\n usage?: {\n total_tokens?: number\n prompt_tokens?: number\n completion_tokens?: number\n }\n max_budget?: number\n budget_duration?: string\n blocked?: boolean\n created_at?: string\n expires_at?: string\n metadata?: Record<string, any>\n [key: string]: any\n }\n}\n\n/**\n * Service for interacting with LiteLLM API\n * API Documentation: https://camunda.litellm-sandbox.ai\n */\nexport class LiteLLMService {\n /**\n * Create a new team in LiteLLM\n * POST /team/new\n */\n public static async createTeam(\n params: CreateTeamRequest,\n ): Promise<CreateTeamResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.createTeam',\n url: `${params.options.litellmApiBaseUrl}/team/new`,\n normalizedUrl: '/team/new',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_alias: params.options.team_alias,\n ...(params.options.max_budget !== undefined && {\n max_budget: params.options.max_budget,\n }),\n ...(params.options.budget_duration && {\n budget_duration: params.options.budget_duration,\n }),\n }\n\n const response = await request<CreateTeamResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Update a team's budget in LiteLLM\n * POST /team/update\n */\n public static async updateTeamBudget(\n params: UpdateTeamBudgetRequest,\n ): Promise<UpdateTeamBudgetResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.updateTeamBudget',\n url: `${params.options.litellmApiBaseUrl}/team/update`,\n normalizedUrl: '/team/update',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_id: params.options.team_id,\n max_budget: params.options.max_budget,\n }\n\n const response = await request<UpdateTeamBudgetResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Update a key's budget in LiteLLM\n * POST /key/update\n */\n public static async updateKeyBudget(\n params: UpdateKeyBudgetRequest,\n ): Promise<UpdateKeyBudgetResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.updateKeyBudget',\n url: `${params.options.litellmApiBaseUrl}/key/update`,\n normalizedUrl: '/key/update',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n key: params.options.key,\n max_budget: params.options.max_budget,\n }\n\n const response = await request<UpdateKeyBudgetResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Generate a key for a team\n * POST /key/generate\n */\n public static async generateKey(\n params: GenerateKeyRequest,\n ): Promise<GenerateKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.generateKey',\n url: `${params.options.litellmApiBaseUrl}/key/generate`,\n normalizedUrl: '/key/generate',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_id: params.options.team_id,\n key_type: 'llm_api',\n allowed_routes: ['/chat/completions'],\n ...(params.options.models && { models: params.options.models }),\n ...(params.options.key_alias && { key_alias: params.options.key_alias }),\n ...(params.options.duration && { duration: params.options.duration }),\n ...(params.options.metadata && { metadata: params.options.metadata }),\n ...(params.options.max_budget !== undefined && {\n max_budget: params.options.max_budget,\n }),\n ...(params.options.budget_duration && {\n budget_duration: params.options.budget_duration,\n }),\n }\n\n const response = await request<GenerateKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Block a key to quickly disable it\n * POST /key/block\n */\n public static async blockKey(\n params: BlockKeyRequest,\n ): Promise<BlockKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.blockKey',\n url: `${params.options.litellmApiBaseUrl}/key/block`,\n normalizedUrl: '/key/block',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n key: params.options.key,\n }\n\n const response = await request<BlockKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Unblock a key to re-enable it\n * POST /key/unblock\n */\n public static async unblockKey(\n params: UnblockKeyRequest,\n ): Promise<UnblockKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.unblockKey',\n url: `${params.options.litellmApiBaseUrl}/key/unblock`,\n normalizedUrl: '/key/unblock',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n key: params.options.key,\n }\n\n const response = await request<UnblockKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Get information about a key including usage and spend\n * GET /key/info\n */\n public static async getKeyInfo(\n params: GetKeyInfoRequest,\n ): Promise<GetKeyInfoResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.getKeyInfo',\n url: `${params.options.litellmApiBaseUrl}/key/info?key=${encodeURIComponent(params.options.key)}`,\n normalizedUrl: '/key/info',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const response = await request<GetKeyInfoResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Delete a key\n * POST /key/delete\n */\n public static async deleteKey(\n params: DeleteKeyRequest,\n ): Promise<DeleteKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.deleteKey',\n url: `${params.options.litellmApiBaseUrl}/key/delete`,\n normalizedUrl: '/key/delete',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n keys: [params.options.key],\n }\n\n const response = await request<DeleteKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n /**\n * Delete a team\n * POST /team/delete\n */\n public static async deleteTeam(\n params: DeleteTeamRequest,\n ): Promise<DeleteTeamResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.deleteTeam',\n url: `${params.options.litellmApiBaseUrl}/team/delete`,\n normalizedUrl: '/team/delete',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_ids: [params.options.team_id],\n }\n\n const response = await request<DeleteTeamResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,15 @@
1
+ import type { RequestBaseParams } from '../../types/general.types.js';
2
+ import { type ServiceAudience } from '../../utils/environments.js';
3
+ export interface LoginPayload extends RequestBaseParams {
4
+ params: {
5
+ audienceId: ServiceAudience;
6
+ clientId: string;
7
+ clientSecret: string;
8
+ };
9
+ }
10
+ export declare class LoginService {
11
+ private readonly payload;
12
+ private cachedToken;
13
+ constructor(payload: LoginPayload);
14
+ getToken(): Promise<string>;
15
+ }
@@ -0,0 +1,66 @@
1
+ import { request } from "../../utils/api.js";
2
+ import { getEnvParam } from "../../utils/environments.js";
3
+ import { HttpError } from "../../utils/errors.js";
4
+ import { TokenIssuerUtils } from "../../utils/token-issuer.utils.js";
5
+ class LoginService {
6
+ constructor(payload) {
7
+ this.payload = payload;
8
+ }
9
+ async getToken() {
10
+ if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {
11
+ return this.cachedToken.accessToken;
12
+ }
13
+ const params = this.payload.params;
14
+ const audience = getEnvParam(params.audienceId, this.payload.config);
15
+ const serviceContext = {
16
+ method: {
17
+ name: `LoginService.getToken`,
18
+ url: "oauth/token",
19
+ normalizedUrl: "oauth/token",
20
+ type: "post"
21
+ },
22
+ source: this.payload.config.metrics?.source || "unset",
23
+ target: {
24
+ name: "token-issuer",
25
+ type: "internal"
26
+ }
27
+ };
28
+ const response = await request({
29
+ config: this.payload.config,
30
+ base: {
31
+ id: TokenIssuerUtils.getBaseId({
32
+ params: this.payload,
33
+ serviceContext
34
+ })
35
+ },
36
+ url: serviceContext.method.url,
37
+ method: serviceContext.method.type,
38
+ metricsDetails: serviceContext,
39
+ body: {
40
+ audience,
41
+ grant_type: "client_credentials",
42
+ client_id: params.clientId,
43
+ client_secret: params.clientSecret
44
+ }
45
+ });
46
+ if (!response.ok) {
47
+ throw new HttpError(
48
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
49
+ response.status,
50
+ response.statusText
51
+ );
52
+ }
53
+ this.cachedToken = {
54
+ tokenType: response.body.token_type,
55
+ accessToken: response.body.access_token,
56
+ fetchedAt: Date.now(),
57
+ expiresIn: response.body.expires_in,
58
+ expiresAt: Date.now() + response.body.expires_in * 1e3 * 0.95
59
+ };
60
+ return this.cachedToken.accessToken;
61
+ }
62
+ }
63
+ export {
64
+ LoginService
65
+ };
66
+ //# sourceMappingURL=login.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/login/login.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 { getEnvParam, type ServiceAudience } from '../../utils/environments.js'\nimport { HttpError } from '../../utils/errors.js'\nimport { TokenIssuerUtils } from '../../utils/token-issuer.utils.js'\n\nexport interface LoginPayload extends RequestBaseParams {\n params: {\n audienceId: ServiceAudience\n clientId: string\n clientSecret: string\n }\n}\n\ninterface CachedToken {\n tokenType: string\n accessToken: string\n fetchedAt: number\n expiresIn: number\n expiresAt: number\n}\n\nexport class LoginService {\n private cachedToken: CachedToken | undefined\n\n constructor(private readonly payload: LoginPayload) {}\n\n public async getToken(): Promise<string> {\n if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {\n return this.cachedToken.accessToken\n }\n\n const params = this.payload.params\n\n const audience = getEnvParam(params.audienceId, this.payload.config)\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `LoginService.getToken`,\n url: 'oauth/token',\n normalizedUrl: 'oauth/token',\n type: 'post',\n },\n source: this.payload.config.metrics?.source || 'unset',\n target: {\n name: 'token-issuer',\n type: 'internal',\n },\n }\n\n const response = await request<any>({\n config: this.payload.config,\n base: {\n id: TokenIssuerUtils.getBaseId({\n params: this.payload,\n serviceContext,\n }),\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n audience,\n grant_type: 'client_credentials',\n client_id: params.clientId,\n client_secret: params.clientSecret,\n },\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n this.cachedToken = {\n tokenType: response.body.token_type,\n accessToken: response.body.access_token,\n fetchedAt: Date.now(),\n expiresIn: response.body.expires_in,\n expiresAt: Date.now() + response.body.expires_in * 1000 * 0.95,\n }\n return this.cachedToken.accessToken\n }\n}\n"],
5
+ "mappings": "AAUA,SAAS,eAAe;AACxB,SAAS,mBAAyC;AAClD,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AAkB1B,MAAM,aAAa;AAAA,EAGxB,YAA6B,SAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErD,MAAa,WAA4B;AACvC,QAAI,KAAK,eAAe,KAAK,YAAY,YAAY,KAAK,IAAI,GAAG;AAC/D,aAAO,KAAK,YAAY;AAAA,IAC1B;AAEA,UAAM,SAAS,KAAK,QAAQ;AAE5B,UAAM,WAAW,YAAY,OAAO,YAAY,KAAK,QAAQ,MAAM;AAEnE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,KAAK,QAAQ,OAAO,SAAS,UAAU;AAAA,MAC/C,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAa;AAAA,MAClC,QAAQ,KAAK,QAAQ;AAAA,MACrB,MAAM;AAAA,QACJ,IAAI,iBAAiB,UAAU;AAAA,UAC7B,QAAQ,KAAK;AAAA,UACb;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ;AAAA,QACA,YAAY;AAAA,QACZ,WAAW,OAAO;AAAA,QAClB,eAAe,OAAO;AAAA,MACxB;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,SAAK,cAAc;AAAA,MACjB,WAAW,SAAS,KAAK;AAAA,MACzB,aAAa,SAAS,KAAK;AAAA,MAC3B,WAAW,KAAK,IAAI;AAAA,MACpB,WAAW,SAAS,KAAK;AAAA,MACzB,WAAW,KAAK,IAAI,IAAI,SAAS,KAAK,aAAa,MAAO;AAAA,IAC5D;AACA,WAAO,KAAK,YAAY;AAAA,EAC1B;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ import type { RequestBaseParams } from '../../types/general.types.js';
2
+ export interface MixpanelSetGroupPropertiesOnceRequest extends RequestBaseParams {
3
+ options: {
4
+ token: string;
5
+ groupKey: string;
6
+ properties: {
7
+ [key: string]: string;
8
+ };
9
+ groupId?: string;
10
+ groupType: 'group-set-once' | 'group-set';
11
+ retries?: number;
12
+ };
13
+ }
14
+ export declare class MixpanelService {
15
+ static setGroupPropertiesOnce(params: MixpanelSetGroupPropertiesOnceRequest): Promise<void>;
16
+ }
@@ -0,0 +1,86 @@
1
+ import { log, request } from "../../utils/api.js";
2
+ import { HttpError } from "../../utils/errors.js";
3
+ class MixpanelService {
4
+ static async setGroupPropertiesOnce(params) {
5
+ const serviceContext = {
6
+ method: {
7
+ name: `MixpanelService.setGroupPropertiesOnce`,
8
+ url: `groups#${params.options.groupType}`,
9
+ normalizedUrl: `groups#${params.options.groupType}`,
10
+ type: "post"
11
+ },
12
+ source: params.config.metrics?.source || "unset",
13
+ target: {
14
+ name: "mixpanel",
15
+ type: "external"
16
+ }
17
+ };
18
+ const setPropertyName = params.options.groupType === "group-set-once" ? "set_once" : "set";
19
+ const body = {
20
+ $token: params.options.token,
21
+ $group_key: params.options.groupKey,
22
+ $group_id: params.options.groupId
23
+ };
24
+ body[`$${setPropertyName}`] = params.options.properties;
25
+ const headers = {
26
+ Accept: "text/plain",
27
+ "Content-Type": "content-type: application/json"
28
+ };
29
+ const requestConfig = {
30
+ config: params.config,
31
+ base: {
32
+ id: "mixpanel"
33
+ },
34
+ url: serviceContext.method.url,
35
+ method: serviceContext.method.type,
36
+ metricsDetails: serviceContext,
37
+ type: "none",
38
+ responseType: "none",
39
+ body,
40
+ headers
41
+ };
42
+ if (params.config.stage === "dev") {
43
+ log(requestConfig, "debug", `Mixpanel setGroupPropertiesOnce`, {
44
+ requestConfig
45
+ });
46
+ }
47
+ if (!params.options.groupId || Object.keys(params.options.properties).length === 0) {
48
+ log(requestConfig, "debug", "No group id or properties to set");
49
+ return;
50
+ }
51
+ const response = await request(requestConfig);
52
+ if (!response.ok) {
53
+ const MAX_RETRIES = 5;
54
+ let retries = params.options.retries || 0;
55
+ if (retries > 0) {
56
+ if (retries > MAX_RETRIES) {
57
+ retries = MAX_RETRIES;
58
+ }
59
+ const retryWaitingTime = (MAX_RETRIES - retries + 1) * 500;
60
+ log(
61
+ requestConfig,
62
+ "debug",
63
+ `Mixpanel setGroupProperties error, retrying. Retries left: ${retries}`
64
+ );
65
+ await new Promise((resolve) => {
66
+ setTimeout(() => {
67
+ resolve();
68
+ }, retryWaitingTime);
69
+ });
70
+ await MixpanelService.setGroupPropertiesOnce({
71
+ ...params,
72
+ options: { ...params.options, retries: retries - 1 }
73
+ });
74
+ }
75
+ throw new HttpError(
76
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
77
+ response.status,
78
+ response.statusText
79
+ );
80
+ }
81
+ }
82
+ }
83
+ export {
84
+ MixpanelService
85
+ };
86
+ //# sourceMappingURL=mixpanel.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/mixpanel/mixpanel.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 { log, type RequestPayload, request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\nexport interface MixpanelSetGroupPropertiesOnceRequest\n extends RequestBaseParams {\n options: {\n token: string\n groupKey: string\n properties: { [key: string]: string }\n groupId?: string\n groupType: 'group-set-once' | 'group-set'\n retries?: number\n }\n}\n\nexport class MixpanelService {\n public static async setGroupPropertiesOnce(\n params: MixpanelSetGroupPropertiesOnceRequest,\n ) {\n // 2021-09-16: mixpanel node lib doesn't support group handling\n // using http api instead: https://developer.mixpanel.com/reference/group-profiles\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `MixpanelService.setGroupPropertiesOnce`,\n url: `groups#${params.options.groupType}`,\n normalizedUrl: `groups#${params.options.groupType}`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'mixpanel',\n type: 'external',\n },\n }\n\n const setPropertyName =\n params.options.groupType === 'group-set-once' ? 'set_once' : 'set'\n\n const body: any = {\n $token: params.options.token,\n $group_key: params.options.groupKey,\n $group_id: params.options.groupId,\n }\n body[`$${setPropertyName}`] = params.options.properties\n\n const headers = {\n Accept: 'text/plain',\n 'Content-Type': 'content-type: application/json',\n }\n\n const requestConfig: RequestPayload = {\n config: params.config,\n base: {\n id: 'mixpanel',\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'none',\n responseType: 'none',\n body,\n headers,\n }\n\n if (params.config.stage === 'dev') {\n log(requestConfig, 'debug', `Mixpanel setGroupPropertiesOnce`, {\n requestConfig,\n })\n }\n\n if (\n !params.options.groupId ||\n Object.keys(params.options.properties).length === 0\n ) {\n log(requestConfig, 'debug', 'No group id or properties to set')\n return\n }\n\n const response = await request(requestConfig)\n if (!response.ok) {\n const MAX_RETRIES = 5\n let retries = params.options.retries || 0\n if (retries > 0) {\n if (retries > MAX_RETRIES) {\n retries = MAX_RETRIES\n }\n const retryWaitingTime = (MAX_RETRIES - retries + 1) * 500\n log(\n requestConfig,\n 'debug',\n `Mixpanel setGroupProperties error, retrying. Retries left: ${retries}`,\n )\n await new Promise<void>((resolve) => {\n setTimeout(() => {\n resolve()\n }, retryWaitingTime)\n })\n await MixpanelService.setGroupPropertiesOnce({\n ...params,\n options: { ...params.options, retries: retries - 1 },\n })\n }\n\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n}\n"],
5
+ "mappings": "AAUA,SAAS,KAA0B,eAAe;AAClD,SAAS,iBAAiB;AAcnB,MAAM,gBAAgB;AAAA,EAC3B,aAAoB,uBAClB,QACA;AAGA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,UAAU,OAAO,QAAQ,SAAS;AAAA,QACvC,eAAe,UAAU,OAAO,QAAQ,SAAS;AAAA,QACjD,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,kBACJ,OAAO,QAAQ,cAAc,mBAAmB,aAAa;AAE/D,UAAM,OAAY;AAAA,MAChB,QAAQ,OAAO,QAAQ;AAAA,MACvB,YAAY,OAAO,QAAQ;AAAA,MAC3B,WAAW,OAAO,QAAQ;AAAA,IAC5B;AACA,SAAK,IAAI,eAAe,EAAE,IAAI,OAAO,QAAQ;AAE7C,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB;AAEA,UAAM,gBAAgC;AAAA,MACpC,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAEA,QAAI,OAAO,OAAO,UAAU,OAAO;AACjC,UAAI,eAAe,SAAS,mCAAmC;AAAA,QAC7D;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QACE,CAAC,OAAO,QAAQ,WAChB,OAAO,KAAK,OAAO,QAAQ,UAAU,EAAE,WAAW,GAClD;AACA,UAAI,eAAe,SAAS,kCAAkC;AAC9D;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAQ,aAAa;AAC5C,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,cAAc;AACpB,UAAI,UAAU,OAAO,QAAQ,WAAW;AACxC,UAAI,UAAU,GAAG;AACf,YAAI,UAAU,aAAa;AACzB,oBAAU;AAAA,QACZ;AACA,cAAM,oBAAoB,cAAc,UAAU,KAAK;AACvD;AAAA,UACE;AAAA,UACA;AAAA,UACA,8DAA8D,OAAO;AAAA,QACvE;AACA,cAAM,IAAI,QAAc,CAAC,YAAY;AACnC,qBAAW,MAAM;AACf,oBAAQ;AAAA,UACV,GAAG,gBAAgB;AAAA,QACrB,CAAC;AACD,cAAM,gBAAgB,uBAAuB;AAAA,UAC3C,GAAG;AAAA,UACH,SAAS,EAAE,GAAG,OAAO,SAAS,SAAS,UAAU,EAAE;AAAA,QACrD,CAAC;AAAA,MACH;AAEA,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }