@daocloud-proto/hydra 0.18.0-dev-3 → 0.18.0-dev-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.
@@ -9,6 +9,15 @@ import * as fm from "../../../fetch.pb"
9
9
  import * as GoogleProtobufTimestamp from "../../../google/protobuf/timestamp.pb"
10
10
  import * as HydraAdmin_apiModelV1alpha1Model from "../../model/v1alpha1/model.pb"
11
11
 
12
+ type Absent<T, K extends keyof T> = { [k in Exclude<keyof T, K>]?: undefined };
13
+ type OneOf<T> =
14
+ | { [k in keyof T]?: undefined }
15
+ | (
16
+ keyof T extends infer K ?
17
+ (K extends string & keyof T ? { [k in K]: T[K] } & Absent<T, K>
18
+ : never)
19
+ : never);
20
+
12
21
  export enum MAASWorkspaceVisibilityScope {
13
22
  MAAS_WORKSPACE_VISIBILITY_SCOPE_UNSPECIFIED = "MAAS_WORKSPACE_VISIBILITY_SCOPE_UNSPECIFIED",
14
23
  MAAS_WORKSPACE_VISIBILITY_SCOPE_ALL = "MAAS_WORKSPACE_VISIBILITY_SCOPE_ALL",
@@ -40,6 +49,62 @@ export enum MAASBackendStatus {
40
49
  MAAS_BACKEND_STATUS_FAILED = "MAAS_BACKEND_STATUS_FAILED",
41
50
  }
42
51
 
52
+ export enum RateLimitMatchStrategy {
53
+ RATE_LIMIT_MATCH_STRATEGY_UNSPECIFIED = "RATE_LIMIT_MATCH_STRATEGY_UNSPECIFIED",
54
+ RATE_LIMIT_MATCH_STRATEGY_ANY = "RATE_LIMIT_MATCH_STRATEGY_ANY",
55
+ RATE_LIMIT_MATCH_STRATEGY_ALL = "RATE_LIMIT_MATCH_STRATEGY_ALL",
56
+ }
57
+
58
+ export enum RateLimitType {
59
+ RATE_LIMIT_TYPE_UNSPECIFIED = "RATE_LIMIT_TYPE_UNSPECIFIED",
60
+ RATE_LIMIT_TYPE_REQUEST = "RATE_LIMIT_TYPE_REQUEST",
61
+ RATE_LIMIT_TYPE_TOKEN = "RATE_LIMIT_TYPE_TOKEN",
62
+ RATE_LIMIT_TYPE_IMAGE = "RATE_LIMIT_TYPE_IMAGE",
63
+ RATE_LIMIT_TYPE_AUDIO = "RATE_LIMIT_TYPE_AUDIO",
64
+ RATE_LIMIT_TYPE_VIDEO = "RATE_LIMIT_TYPE_VIDEO",
65
+ RATE_LIMIT_TYPE_EXEMPTION = "RATE_LIMIT_TYPE_EXEMPTION",
66
+ }
67
+
68
+ export enum RateLimitDimension {
69
+ RATE_LIMIT_DIMENSION_UNSPECIFIED = "RATE_LIMIT_DIMENSION_UNSPECIFIED",
70
+ RATE_LIMIT_DIMENSION_WORKSPACE = "RATE_LIMIT_DIMENSION_WORKSPACE",
71
+ RATE_LIMIT_DIMENSION_USER = "RATE_LIMIT_DIMENSION_USER",
72
+ RATE_LIMIT_DIMENSION_API_KEY = "RATE_LIMIT_DIMENSION_API_KEY",
73
+ RATE_LIMIT_DIMENSION_ACCOUNT = "RATE_LIMIT_DIMENSION_ACCOUNT",
74
+ RATE_LIMIT_DIMENSION_SUB_ACCOUNT = "RATE_LIMIT_DIMENSION_SUB_ACCOUNT",
75
+ }
76
+
77
+ export enum RateLimitWindow {
78
+ RATE_LIMIT_WINDOW_UNSPECIFIED = "RATE_LIMIT_WINDOW_UNSPECIFIED",
79
+ RATE_LIMIT_WINDOW_SECOND = "RATE_LIMIT_WINDOW_SECOND",
80
+ RATE_LIMIT_WINDOW_MINUTE = "RATE_LIMIT_WINDOW_MINUTE",
81
+ RATE_LIMIT_WINDOW_HOUR = "RATE_LIMIT_WINDOW_HOUR",
82
+ RATE_LIMIT_WINDOW_DAY = "RATE_LIMIT_WINDOW_DAY",
83
+ }
84
+
85
+ export enum TokenRateLimitMode {
86
+ TOKEN_RATE_LIMIT_MODE_UNSPECIFIED = "TOKEN_RATE_LIMIT_MODE_UNSPECIFIED",
87
+ TOKEN_RATE_LIMIT_MODE_TOTAL = "TOKEN_RATE_LIMIT_MODE_TOTAL",
88
+ TOKEN_RATE_LIMIT_MODE_INPUT_OUTPUT = "TOKEN_RATE_LIMIT_MODE_INPUT_OUTPUT",
89
+ }
90
+
91
+ export enum ImageRateLimitMetric {
92
+ IMAGE_RATE_LIMIT_METRIC_UNSPECIFIED = "IMAGE_RATE_LIMIT_METRIC_UNSPECIFIED",
93
+ IMAGE_RATE_LIMIT_METRIC_OUTPUT_IMAGES = "IMAGE_RATE_LIMIT_METRIC_OUTPUT_IMAGES",
94
+ }
95
+
96
+ export enum AudioRateLimitMetric {
97
+ AUDIO_RATE_LIMIT_METRIC_UNSPECIFIED = "AUDIO_RATE_LIMIT_METRIC_UNSPECIFIED",
98
+ AUDIO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS = "AUDIO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS",
99
+ AUDIO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS = "AUDIO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS",
100
+ }
101
+
102
+ export enum VideoRateLimitMetric {
103
+ VIDEO_RATE_LIMIT_METRIC_UNSPECIFIED = "VIDEO_RATE_LIMIT_METRIC_UNSPECIFIED",
104
+ VIDEO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS = "VIDEO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS",
105
+ VIDEO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS = "VIDEO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS",
106
+ }
107
+
43
108
  export enum MAASModelGatewayStatus {
44
109
  GATEWAY_STATUS_UNSPECIFIED = "GATEWAY_STATUS_UNSPECIFIED",
45
110
  GATEWAY_STATUS_HEALTHY = "GATEWAY_STATUS_HEALTHY",
@@ -159,6 +224,135 @@ export type GetMAASModelRequest = {
159
224
  modelId?: string
160
225
  }
161
226
 
227
+ export type ModelRateLimitPolicy = {
228
+ name?: string
229
+ enabled?: boolean
230
+ modelName?: string[]
231
+ paths?: string[]
232
+ matchStrategy?: RateLimitMatchStrategy
233
+ rules?: ModelRateLimitPolicyRule[]
234
+ creationTimestamp?: GoogleProtobufTimestamp.Timestamp
235
+ updateTimestamp?: GoogleProtobufTimestamp.Timestamp
236
+ generation?: string
237
+ }
238
+
239
+ export type RateLimitTarget = {
240
+ selectors?: RateLimitSelector[]
241
+ dimension?: RateLimitDimension
242
+ values?: string[]
243
+ }
244
+
245
+ export type RateLimitSelector = {
246
+ dimension?: RateLimitDimension
247
+ values?: string[]
248
+ }
249
+
250
+ export type RequestRateLimit = {
251
+ limit?: string
252
+ window?: RateLimitWindow
253
+ }
254
+
255
+
256
+ type BaseTokenRateLimit = {
257
+ mode?: TokenRateLimitMode
258
+ window?: RateLimitWindow
259
+ }
260
+
261
+ export type TokenRateLimit = BaseTokenRateLimit
262
+ & OneOf<{ totalLimit: string }>
263
+ & OneOf<{ inputLimit: string }>
264
+ & OneOf<{ outputLimit: string }>
265
+
266
+ export type ImageRateLimit = {
267
+ metric?: ImageRateLimitMetric
268
+ limit?: string
269
+ window?: RateLimitWindow
270
+ }
271
+
272
+ export type AudioRateLimit = {
273
+ metric?: AudioRateLimitMetric
274
+ limit?: string
275
+ window?: RateLimitWindow
276
+ }
277
+
278
+ export type VideoRateLimit = {
279
+ metric?: VideoRateLimitMetric
280
+ limit?: string
281
+ window?: RateLimitWindow
282
+ }
283
+
284
+ export type RateLimitExemption = {
285
+ }
286
+
287
+ export type ModelRateLimitPolicyRule = {
288
+ id?: string
289
+ type?: RateLimitType
290
+ target?: RateLimitTarget
291
+ independentQuota?: boolean
292
+ resolvedReplaces?: string[]
293
+ request?: RequestRateLimit
294
+ token?: TokenRateLimit
295
+ image?: ImageRateLimit
296
+ audio?: AudioRateLimit
297
+ video?: VideoRateLimit
298
+ exemption?: RateLimitExemption
299
+ }
300
+
301
+ export type ModelRateLimitPolicyRuleCount = {
302
+ type?: RateLimitType
303
+ count?: number
304
+ }
305
+
306
+ export type ModelRateLimitPolicyListItem = {
307
+ name?: string
308
+ modelName?: string[]
309
+ paths?: string[]
310
+ matchStrategy?: RateLimitMatchStrategy
311
+ ruleCounts?: ModelRateLimitPolicyRuleCount[]
312
+ enabled?: boolean
313
+ updateTimestamp?: GoogleProtobufTimestamp.Timestamp
314
+ }
315
+
316
+ export type CreateModelRateLimitPolicyRequest = {
317
+ name?: string
318
+ enabled?: boolean
319
+ modelName?: string[]
320
+ paths?: string[]
321
+ matchStrategy?: RateLimitMatchStrategy
322
+ rules?: ModelRateLimitPolicyRule[]
323
+ }
324
+
325
+ export type GetModelRateLimitPolicyRequest = {
326
+ name?: string
327
+ }
328
+
329
+ export type ListModelRateLimitPoliciesRequest = {
330
+ page?: HydraCommonCommon.Pagination
331
+ }
332
+
333
+ export type ListModelRateLimitPoliciesResponse = {
334
+ items?: ModelRateLimitPolicyListItem[]
335
+ page?: HydraCommonCommon.Pagination
336
+ }
337
+
338
+ export type UpdateModelRateLimitPolicyRequest = {
339
+ name?: string
340
+ enabled?: boolean
341
+ modelName?: string[]
342
+ paths?: string[]
343
+ matchStrategy?: RateLimitMatchStrategy
344
+ rules?: ModelRateLimitPolicyRule[]
345
+ }
346
+
347
+ export type UpdateModelRateLimitPolicyStatusRequest = {
348
+ name?: string
349
+ enable?: boolean
350
+ }
351
+
352
+ export type DeleteModelRateLimitPolicyRequest = {
353
+ name?: string
354
+ }
355
+
162
356
  export class MAASService {
163
357
  static GetMAASModel(req: GetMAASModelRequest, initReq?: fm.InitReq): Promise<MAASModel> {
164
358
  return fm.fetchReq<GetMAASModelRequest, MAASModel>(`/apis/admin.hydra.io/v1alpha1/maas-models/${req["modelId"]}?${fm.renderURLSearchParams(req, ["modelId"])}`, {...initReq, method: "GET"})
@@ -175,4 +369,22 @@ export class MAASService {
175
369
  static UpdateMAASModelStatus(req: UpdateMAASModelStatusRequest, initReq?: fm.InitReq): Promise<MAASModel> {
176
370
  return fm.fetchReq<UpdateMAASModelStatusRequest, MAASModel>(`/apis/admin.hydra.io/v1alpha1/maas-models/${req["modelId"]}/status`, {...initReq, method: "PUT", body: JSON.stringify(req, fm.replacer)})
177
371
  }
372
+ static CreateModelRateLimitPolicy(req: CreateModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
373
+ return fm.fetchReq<CreateModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
374
+ }
375
+ static GetModelRateLimitPolicy(req: GetModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
376
+ return fm.fetchReq<GetModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}?${fm.renderURLSearchParams(req, ["name"])}`, {...initReq, method: "GET"})
377
+ }
378
+ static ListModelRateLimitPolicies(req: ListModelRateLimitPoliciesRequest, initReq?: fm.InitReq): Promise<ListModelRateLimitPoliciesResponse> {
379
+ return fm.fetchReq<ListModelRateLimitPoliciesRequest, ListModelRateLimitPoliciesResponse>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
380
+ }
381
+ static UpdateModelRateLimitPolicy(req: UpdateModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
382
+ return fm.fetchReq<UpdateModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}`, {...initReq, method: "PUT", body: JSON.stringify(req, fm.replacer)})
383
+ }
384
+ static UpdateModelRateLimitPolicyStatus(req: UpdateModelRateLimitPolicyStatusRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
385
+ return fm.fetchReq<UpdateModelRateLimitPolicyStatusRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}/status`, {...initReq, method: "PUT", body: JSON.stringify(req, fm.replacer)})
386
+ }
387
+ static DeleteModelRateLimitPolicy(req: DeleteModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
388
+ return fm.fetchReq<DeleteModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}`, {...initReq, method: "DELETE"})
389
+ }
178
390
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daocloud-proto/hydra",
3
- "version": "v0.18.0-dev-3",
3
+ "version": "v0.18.0-dev-4",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "ISC"