@camunda/ccma-api 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +95 -0
- package/dist/index.js +151 -0
- package/dist/index.js.map +7 -0
- package/dist/services/accounts/accounts.data-export.service.d.ts +13 -0
- package/dist/services/accounts/accounts.data-export.service.js +41 -0
- package/dist/services/accounts/accounts.data-export.service.js.map +7 -0
- package/dist/services/accounts/accounts.valuemetrics.service.d.ts +8 -0
- package/dist/services/accounts/accounts.valuemetrics.service.js +1 -0
- package/dist/services/accounts/accounts.valuemetrics.service.js.map +7 -0
- package/dist/services/accounts/bot.service.d.ts +21 -0
- package/dist/services/accounts/bot.service.js +74 -0
- package/dist/services/accounts/bot.service.js.map +7 -0
- package/dist/services/accounts/challenge.service.d.ts +296 -0
- package/dist/services/accounts/challenge.service.js +475 -0
- package/dist/services/accounts/challenge.service.js.map +7 -0
- package/dist/services/accounts/connections.service.d.ts +27 -0
- package/dist/services/accounts/connections.service.js +41 -0
- package/dist/services/accounts/connections.service.js.map +7 -0
- package/dist/services/accounts/dashboards.service.d.ts +8 -0
- package/dist/services/accounts/dashboards.service.js +42 -0
- package/dist/services/accounts/dashboards.service.js.map +7 -0
- package/dist/services/accounts/early-access-features.service.d.ts +34 -0
- package/dist/services/accounts/early-access-features.service.js +67 -0
- package/dist/services/accounts/early-access-features.service.js.map +7 -0
- package/dist/services/accounts/genericCache.service.d.ts +13 -0
- package/dist/services/accounts/genericCache.service.js +80 -0
- package/dist/services/accounts/genericCache.service.js.map +7 -0
- package/dist/services/accounts/hdp.service.d.ts +52 -0
- package/dist/services/accounts/hdp.service.js +180 -0
- package/dist/services/accounts/hdp.service.js.map +7 -0
- package/dist/services/accounts/offboarding.service.d.ts +18 -0
- package/dist/services/accounts/offboarding.service.js +48 -0
- package/dist/services/accounts/offboarding.service.js.map +7 -0
- package/dist/services/accounts/organization-members.service.d.ts +68 -0
- package/dist/services/accounts/organization-members.service.js +216 -0
- package/dist/services/accounts/organization-members.service.js.map +7 -0
- package/dist/services/accounts/orgs.service.d.ts +282 -0
- package/dist/services/accounts/orgs.service.js +1012 -0
- package/dist/services/accounts/orgs.service.js.map +7 -0
- package/dist/services/accounts/salesplan.service.d.ts +7 -0
- package/dist/services/accounts/salesplan.service.js +40 -0
- package/dist/services/accounts/salesplan.service.js.map +7 -0
- package/dist/services/accounts/spam-detection.service.d.ts +8 -0
- package/dist/services/accounts/spam-detection.service.js +72 -0
- package/dist/services/accounts/spam-detection.service.js.map +7 -0
- package/dist/services/accounts/stats.service.d.ts +7 -0
- package/dist/services/accounts/stats.service.js +40 -0
- package/dist/services/accounts/stats.service.js.map +7 -0
- package/dist/services/accounts/usage-alerts.service.d.ts +34 -0
- package/dist/services/accounts/usage-alerts.service.js +112 -0
- package/dist/services/accounts/usage-alerts.service.js.map +7 -0
- package/dist/services/accounts/users.service.d.ts +101 -0
- package/dist/services/accounts/users.service.js +444 -0
- package/dist/services/accounts/users.service.js.map +7 -0
- package/dist/services/alerts/alerts.service.d.ts +59 -0
- package/dist/services/alerts/alerts.service.js +234 -0
- package/dist/services/alerts/alerts.service.js.map +7 -0
- package/dist/services/analytic-bridge/analytic-bridge.service.d.ts +23 -0
- package/dist/services/analytic-bridge/analytic-bridge.service.js +86 -0
- package/dist/services/analytic-bridge/analytic-bridge.service.js.map +7 -0
- package/dist/services/audit-logger/audit-logger.service.d.ts +27 -0
- package/dist/services/audit-logger/audit-logger.service.js +108 -0
- package/dist/services/audit-logger/audit-logger.service.js.map +7 -0
- package/dist/services/auth0/auth0.service.d.ts +15 -0
- package/dist/services/auth0/auth0.service.js +40 -0
- package/dist/services/auth0/auth0.service.js.map +7 -0
- package/dist/services/comm-bridge/comm-bridge.service.d.ts +33 -0
- package/dist/services/comm-bridge/comm-bridge.service.js +40 -0
- package/dist/services/comm-bridge/comm-bridge.service.js.map +7 -0
- package/dist/services/console/console.admin.service.d.ts +329 -0
- package/dist/services/console/console.admin.service.js +1527 -0
- package/dist/services/console/console.admin.service.js.map +7 -0
- package/dist/services/console/console.alerts.service.d.ts +69 -0
- package/dist/services/console/console.alerts.service.js +160 -0
- package/dist/services/console/console.alerts.service.js.map +7 -0
- package/dist/services/console/console.api-clients.service.d.ts +48 -0
- package/dist/services/console/console.api-clients.service.js +123 -0
- package/dist/services/console/console.api-clients.service.js.map +7 -0
- package/dist/services/console/console.backup-schedule.service.d.ts +21 -0
- package/dist/services/console/console.backup-schedule.service.js +67 -0
- package/dist/services/console/console.backup-schedule.service.js.map +7 -0
- package/dist/services/console/console.byok-scripts.service.d.ts +12 -0
- package/dist/services/console/console.byok-scripts.service.js +92 -0
- package/dist/services/console/console.byok-scripts.service.js.map +7 -0
- package/dist/services/console/console.byom-monitoring.service.d.ts +58 -0
- package/dist/services/console/console.byom-monitoring.service.js +177 -0
- package/dist/services/console/console.byom-monitoring.service.js.map +7 -0
- package/dist/services/console/console.cluster-clients.service.d.ts +55 -0
- package/dist/services/console/console.cluster-clients.service.js +123 -0
- package/dist/services/console/console.cluster-clients.service.js.map +7 -0
- package/dist/services/console/console.cluster-parameters.service.d.ts +64 -0
- package/dist/services/console/console.cluster-parameters.service.js +39 -0
- package/dist/services/console/console.cluster-parameters.service.js.map +7 -0
- package/dist/services/console/console.cluster.service.d.ts +114 -0
- package/dist/services/console/console.cluster.service.js +271 -0
- package/dist/services/console/console.cluster.service.js.map +7 -0
- package/dist/services/console/console.clusterBulkOperation.service.d.ts +20 -0
- package/dist/services/console/console.clusterBulkOperation.service.js +199 -0
- package/dist/services/console/console.clusterBulkOperation.service.js.map +7 -0
- package/dist/services/console/console.clusterplan.modification.service.d.ts +33 -0
- package/dist/services/console/console.clusterplan.modification.service.js +231 -0
- package/dist/services/console/console.clusterplan.modification.service.js.map +7 -0
- package/dist/services/console/console.clusterplan.service.d.ts +21 -0
- package/dist/services/console/console.clusterplan.service.js +64 -0
- package/dist/services/console/console.clusterplan.service.js.map +7 -0
- package/dist/services/console/console.connector-secrets.service.d.ts +30 -0
- package/dist/services/console/console.connector-secrets.service.js +125 -0
- package/dist/services/console/console.connector-secrets.service.js.map +7 -0
- package/dist/services/console/console.custommetrics.service.d.ts +10 -0
- package/dist/services/console/console.custommetrics.service.js +43 -0
- package/dist/services/console/console.custommetrics.service.js.map +7 -0
- package/dist/services/console/console.hotbackups.service.d.ts +34 -0
- package/dist/services/console/console.hotbackups.service.js +120 -0
- package/dist/services/console/console.hotbackups.service.js.map +7 -0
- package/dist/services/console/console.ip-whitelist.service.d.ts +15 -0
- package/dist/services/console/console.ip-whitelist.service.js +36 -0
- package/dist/services/console/console.ip-whitelist.service.js.map +7 -0
- package/dist/services/console/console.jobs.saas.service.d.ts +70 -0
- package/dist/services/console/console.jobs.saas.service.js +139 -0
- package/dist/services/console/console.jobs.saas.service.js.map +7 -0
- package/dist/services/console/console.m2m.service.d.ts +23 -0
- package/dist/services/console/console.m2m.service.js +94 -0
- package/dist/services/console/console.m2m.service.js.map +7 -0
- package/dist/services/console/console.secure-connectivity.service.d.ts +41 -0
- package/dist/services/console/console.secure-connectivity.service.js +129 -0
- package/dist/services/console/console.secure-connectivity.service.js.map +7 -0
- package/dist/services/console/console.valuemetrics.service.d.ts +17 -0
- package/dist/services/console/console.valuemetrics.service.js +110 -0
- package/dist/services/console/console.valuemetrics.service.js.map +7 -0
- package/dist/services/console/generation.service.d.ts +30 -0
- package/dist/services/console/generation.service.js +166 -0
- package/dist/services/console/generation.service.js.map +7 -0
- package/dist/services/github/github.service.d.ts +73 -0
- package/dist/services/github/github.service.js +272 -0
- package/dist/services/github/github.service.js.map +7 -0
- package/dist/services/hibob/hibob.service.d.ts +74 -0
- package/dist/services/hibob/hibob.service.js +125 -0
- package/dist/services/hibob/hibob.service.js.map +7 -0
- package/dist/services/hubspot/hubspot.service.d.ts +50 -0
- package/dist/services/hubspot/hubspot.service.js +119 -0
- package/dist/services/hubspot/hubspot.service.js.map +7 -0
- package/dist/services/litellm/litellm.service.d.ts +290 -0
- package/dist/services/litellm/litellm.service.js +392 -0
- package/dist/services/litellm/litellm.service.js.map +7 -0
- package/dist/services/login/login.service.d.ts +15 -0
- package/dist/services/login/login.service.js +66 -0
- package/dist/services/login/login.service.js.map +7 -0
- package/dist/services/mixpanel/mixpanel.service.d.ts +16 -0
- package/dist/services/mixpanel/mixpanel.service.js +86 -0
- package/dist/services/mixpanel/mixpanel.service.js.map +7 -0
- package/dist/services/notifications/notifications.service.d.ts +7 -0
- package/dist/services/notifications/notifications.service.js +38 -0
- package/dist/services/notifications/notifications.service.js.map +7 -0
- package/dist/services/slack/slack-blockkit.service.d.ts +28 -0
- package/dist/services/slack/slack-blockkit.service.js +45 -0
- package/dist/services/slack/slack-blockkit.service.js.map +7 -0
- package/dist/services/slack/slack.service.d.ts +31 -0
- package/dist/services/slack/slack.service.js +118 -0
- package/dist/services/slack/slack.service.js.map +7 -0
- package/dist/services/telemetry/telemetry.service.d.ts +16 -0
- package/dist/services/telemetry/telemetry.service.js +85 -0
- package/dist/services/telemetry/telemetry.service.js.map +7 -0
- package/dist/services/token-issuer/token-issuer.jwks.service.d.ts +13 -0
- package/dist/services/token-issuer/token-issuer.jwks.service.js +76 -0
- package/dist/services/token-issuer/token-issuer.jwks.service.js.map +7 -0
- package/dist/services/wordpress/wordpress.service.d.ts +15 -0
- package/dist/services/wordpress/wordpress.service.js +111 -0
- package/dist/services/wordpress/wordpress.service.js.map +7 -0
- package/dist/types/general.types.d.ts +61 -0
- package/dist/types/general.types.js +1 -0
- package/dist/types/general.types.js.map +7 -0
- package/dist/utils/api.d.ts +31 -0
- package/dist/utils/api.js +400 -0
- package/dist/utils/api.js.map +7 -0
- package/dist/utils/cache.d.ts +7 -0
- package/dist/utils/cache.js +25 -0
- package/dist/utils/cache.js.map +7 -0
- package/dist/utils/ccma-metrics.d.ts +18 -0
- package/dist/utils/ccma-metrics.js +37 -0
- package/dist/utils/ccma-metrics.js.map +7 -0
- package/dist/utils/environments.d.ts +11 -0
- package/dist/utils/environments.js +148 -0
- package/dist/utils/environments.js.map +7 -0
- package/dist/utils/errors.d.ts +5 -0
- package/dist/utils/errors.js +11 -0
- package/dist/utils/errors.js.map +7 -0
- package/dist/utils/frontendCache.d.ts +26 -0
- package/dist/utils/frontendCache.js +121 -0
- package/dist/utils/frontendCache.js.map +7 -0
- package/dist/utils/token-issuer.utils.d.ts +8 -0
- package/dist/utils/token-issuer.utils.js +19 -0
- package/dist/utils/token-issuer.utils.js.map +7 -0
- package/package.json +2 -6
|
@@ -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
|
+
}
|