@logto/cloud 0.2.5-c2fffa4 → 0.2.5-c450763

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 (2) hide show
  1. package/lib/routes/index.d.ts +841 -123
  2. package/package.json +11 -10
@@ -3,21 +3,27 @@
3
3
  import { Json, JsonObject, RequestContext } from '@withtyped/server';
4
4
  import { InferModelType } from '@withtyped/server/model';
5
5
 
6
- export type WithAuthContext<Context = RequestContext> = Context & {
7
- auth: {
8
- /** The ID of the authenticated subject (`sub`). */
9
- id: string;
10
- /** The scopes that the subject has (`scope`). */
11
- scopes: string[];
12
- };
13
- };
14
- declare enum VerificationCodeType {
15
- SignIn = "SignIn",
16
- Register = "Register",
17
- ForgotPassword = "ForgotPassword",
18
- Generic = "Generic",
19
- /** @deprecated Use `Generic` type template for sending test sms/email use case */
20
- Test = "Test"
6
+ declare const availableReportableUsageKeys: readonly [
7
+ "tokenLimit",
8
+ "machineToMachineLimit",
9
+ "resourcesLimit",
10
+ "enterpriseSsoLimit",
11
+ "hooksLimit",
12
+ "tenantMembersLimit",
13
+ "mfaEnabled",
14
+ "organizationsEnabled",
15
+ "organizationsLimit",
16
+ "securityFeaturesEnabled",
17
+ "userRolesLimit",
18
+ "machineToMachineRolesLimit",
19
+ "thirdPartyApplicationsLimit",
20
+ "samlApplicationsLimit"
21
+ ];
22
+ export type ReportableUsageKey = (typeof availableReportableUsageKeys)[number];
23
+ export type RealtimeReportableUsageKey = Exclude<ReportableUsageKey, "tokenLimit">;
24
+ declare enum LogtoSkuType {
25
+ Basic = "Basic",
26
+ AddOn = "AddOn"
21
27
  }
22
28
  declare enum TemplateType {
23
29
  /** The template for sending verification code when user is signing in. */
@@ -29,7 +35,15 @@ declare enum TemplateType {
29
35
  /** The template for sending organization invitation. */
30
36
  OrganizationInvitation = "OrganizationInvitation",
31
37
  /** The template for generic usage. */
32
- Generic = "Generic"
38
+ Generic = "Generic",
39
+ /** The template for validating user permission for sensitive operations. */
40
+ UserPermissionValidation = "UserPermissionValidation",
41
+ /** The template for binding a new identifier to an existing account. */
42
+ BindNewIdentifier = "BindNewIdentifier",
43
+ /** The template for sending MFA verification code. */
44
+ MfaVerification = "MfaVerification",
45
+ /** The template for binding MFA verification. */
46
+ BindMfa = "BindMfa"
33
47
  }
34
48
  declare enum OrganizationInvitationStatus {
35
49
  Pending = "Pending",
@@ -37,7 +51,17 @@ declare enum OrganizationInvitationStatus {
37
51
  Expired = "Expired",
38
52
  Revoked = "Revoked"
39
53
  }
40
- declare enum LogtoJwtTokenPath {
54
+ /** The scopes (permissions) defined by the organization template. */
55
+ export type OrganizationScope = {
56
+ tenantId: string;
57
+ /** The globally unique identifier of the organization scope. */
58
+ id: string;
59
+ /** The organization scope's name, unique within the organization template. */
60
+ name: string;
61
+ /** A brief description of the organization scope. */
62
+ description: string | null;
63
+ };
64
+ declare enum LogtoJwtTokenKeyType {
41
65
  AccessToken = "access-token",
42
66
  ClientCredentials = "client-credentials"
43
67
  }
@@ -72,11 +96,59 @@ declare const Affiliates: import("@withtyped/server/lib/model/index.js").default
72
96
  id: string;
73
97
  }, "id" | "createdAt", "id" | "createdAt">;
74
98
  export type Affiliate = InferModelType<typeof Affiliates>;
99
+ declare const publicRegionNames: readonly [
100
+ "EU",
101
+ "US",
102
+ "AU",
103
+ "JP"
104
+ ];
105
+ /** The type of region names for the public cloud. */
106
+ export type PublicRegionName = (typeof publicRegionNames)[number];
107
+ declare enum DatabaseRegionAccessRole {
108
+ /** Instance administrator - can manage collaborators and create tenants */
109
+ Admin = "admin",
110
+ /** Collaborator user - can only create tenants in the instance */
111
+ Collaborator = "collaborator"
112
+ }
113
+ /**
114
+ * Data structure representing a Logto Cloud region.
115
+ */
116
+ export type Region = {
117
+ /**
118
+ * The unique identifier for the region.
119
+ */
120
+ id: string;
121
+ /**
122
+ * A human-readable name for the region.
123
+ */
124
+ name: string;
125
+ /**
126
+ * The country where the region is located.
127
+ */
128
+ country: string;
129
+ /**
130
+ * Indicates whether the region is private.
131
+ */
132
+ isPrivate: boolean;
133
+ /**
134
+ * Tenant tags available for selection when creating tenants in this region.
135
+ */
136
+ tags: TenantTag[];
137
+ };
138
+ export type WithAuthContext<Context = RequestContext> = Context & {
139
+ auth: {
140
+ /** The ID of the authenticated subject (`sub`). */
141
+ id: string;
142
+ /** The scopes that the subject has (`scope`). */
143
+ scopes: string[];
144
+ };
145
+ };
75
146
  export type AffiliateData = Affiliate & {
76
147
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
77
148
  };
78
149
  declare const router: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
79
150
  request: {
151
+ id?: string | undefined;
80
152
  method?: import("@withtyped/server").RequestMethod | undefined;
81
153
  headers: import("http").IncomingHttpHeaders;
82
154
  url: URL;
@@ -84,6 +156,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
84
156
  };
85
157
  }, "request"> & {
86
158
  request: Record<string, unknown> & {
159
+ id?: string | undefined;
87
160
  method?: import("@withtyped/server").RequestMethod | undefined;
88
161
  headers: import("http").IncomingHttpHeaders;
89
162
  url: URL;
@@ -92,16 +165,20 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
92
165
  body?: Json | undefined;
93
166
  bodyRaw?: Buffer | undefined;
94
167
  };
95
- }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
168
+ }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
96
169
  patch: {
97
170
  "/tenants/:tenantId": import("@withtyped/server").PathGuard<"/:tenantId", unknown, {
98
171
  name?: string | undefined;
99
172
  }, {
100
173
  id: string;
101
174
  name: string;
175
+ createdAt: Date;
176
+ quota: {
177
+ mauLimit: number | null;
178
+ tokenLimit: number | null;
179
+ };
102
180
  usage: {
103
181
  activeUsers: number;
104
- cost: number;
105
182
  tokenUsage: number;
106
183
  };
107
184
  indicator: string;
@@ -112,11 +189,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
112
189
  planId: string;
113
190
  currentPeriodStart: Date;
114
191
  currentPeriodEnd: Date;
192
+ isEnterprisePlan: boolean;
193
+ id?: string | undefined;
194
+ upcomingInvoice?: {
195
+ subtotal: number;
196
+ subtotalExcludingTax: number | null;
197
+ total: number;
198
+ totalExcludingTax: number | null;
199
+ } | null | undefined;
115
200
  };
201
+ regionName: string;
202
+ tag: TenantTag;
116
203
  openInvoices: {
117
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
118
204
  id: string;
119
205
  createdAt: Date;
206
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
120
207
  updatedAt: Date;
121
208
  customerId: string | null;
122
209
  billingReason: string | null;
@@ -124,11 +211,16 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
124
211
  periodEnd: Date;
125
212
  amountDue: number;
126
213
  amountPaid: number;
214
+ basicSkuId: string | null;
127
215
  subscriptionId: string | null;
128
216
  hostedInvoiceUrl: string | null;
129
217
  invoicePdf: string | null;
218
+ collectionMethod: "charge_automatically" | "send_invoice" | null;
219
+ dueDate: Date | null;
130
220
  }[];
131
- tag: TenantTag;
221
+ featureFlags?: {
222
+ isMultipleCustomDomainsEnabled?: boolean | undefined;
223
+ } | undefined;
132
224
  }>;
133
225
  };
134
226
  options: {};
@@ -136,9 +228,13 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
136
228
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
137
229
  id: string;
138
230
  name: string;
231
+ createdAt: Date;
232
+ quota: {
233
+ mauLimit: number | null;
234
+ tokenLimit: number | null;
235
+ };
139
236
  usage: {
140
237
  activeUsers: number;
141
- cost: number;
142
238
  tokenUsage: number;
143
239
  };
144
240
  indicator: string;
@@ -149,11 +245,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
149
245
  planId: string;
150
246
  currentPeriodStart: Date;
151
247
  currentPeriodEnd: Date;
248
+ isEnterprisePlan: boolean;
249
+ id?: string | undefined;
250
+ upcomingInvoice?: {
251
+ subtotal: number;
252
+ subtotalExcludingTax: number | null;
253
+ total: number;
254
+ totalExcludingTax: number | null;
255
+ } | null | undefined;
152
256
  };
257
+ regionName: string;
258
+ tag: TenantTag;
153
259
  openInvoices: {
154
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
155
260
  id: string;
156
261
  createdAt: Date;
262
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
157
263
  updatedAt: Date;
158
264
  customerId: string | null;
159
265
  billingReason: string | null;
@@ -161,23 +267,34 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
161
267
  periodEnd: Date;
162
268
  amountDue: number;
163
269
  amountPaid: number;
270
+ basicSkuId: string | null;
164
271
  subscriptionId: string | null;
165
272
  hostedInvoiceUrl: string | null;
166
273
  invoicePdf: string | null;
274
+ collectionMethod: "charge_automatically" | "send_invoice" | null;
275
+ dueDate: Date | null;
167
276
  }[];
168
- tag: TenantTag;
277
+ featureFlags?: {
278
+ isMultipleCustomDomainsEnabled?: boolean | undefined;
279
+ } | undefined;
169
280
  }[]>;
170
281
  };
171
282
  post: {
172
283
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
284
+ id?: string | undefined;
173
285
  name?: string | undefined;
286
+ regionName?: string | undefined;
174
287
  tag?: TenantTag | undefined;
175
288
  }, {
176
289
  id: string;
177
290
  name: string;
291
+ createdAt: Date;
292
+ quota: {
293
+ mauLimit: number | null;
294
+ tokenLimit: number | null;
295
+ };
178
296
  usage: {
179
297
  activeUsers: number;
180
- cost: number;
181
298
  tokenUsage: number;
182
299
  };
183
300
  indicator: string;
@@ -188,11 +305,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
188
305
  planId: string;
189
306
  currentPeriodStart: Date;
190
307
  currentPeriodEnd: Date;
308
+ isEnterprisePlan: boolean;
309
+ id?: string | undefined;
310
+ upcomingInvoice?: {
311
+ subtotal: number;
312
+ subtotalExcludingTax: number | null;
313
+ total: number;
314
+ totalExcludingTax: number | null;
315
+ } | null | undefined;
191
316
  };
317
+ regionName: string;
318
+ tag: TenantTag;
192
319
  openInvoices: {
193
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
194
320
  id: string;
195
321
  createdAt: Date;
322
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
196
323
  updatedAt: Date;
197
324
  customerId: string | null;
198
325
  billingReason: string | null;
@@ -200,12 +327,27 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
200
327
  periodEnd: Date;
201
328
  amountDue: number;
202
329
  amountPaid: number;
330
+ basicSkuId: string | null;
203
331
  subscriptionId: string | null;
204
332
  hostedInvoiceUrl: string | null;
205
333
  invoicePdf: string | null;
334
+ collectionMethod: "charge_automatically" | "send_invoice" | null;
335
+ dueDate: Date | null;
206
336
  }[];
207
- tag: TenantTag;
337
+ featureFlags?: {
338
+ isMultipleCustomDomainsEnabled?: boolean | undefined;
339
+ } | undefined;
208
340
  }>;
341
+ } & {
342
+ "/tenants/subscriptions/plan": import("@withtyped/server").PathGuard<"/subscriptions/plan", unknown, {
343
+ planId: string;
344
+ tenantIds: string[];
345
+ }, {
346
+ tenantId: string;
347
+ success: boolean;
348
+ error?: string | undefined;
349
+ updatedLineItems?: unknown[] | undefined;
350
+ }[]>;
209
351
  };
210
352
  put: {};
211
353
  delete: {
@@ -219,23 +361,291 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
219
361
  get: {
220
362
  "/tenants/my/subscription": import("@withtyped/server").PathGuard<"/my/subscription", unknown, unknown, {
221
363
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
364
+ quota: {
365
+ auditLogsRetentionDays: number | null;
366
+ mauLimit: number | null;
367
+ applicationsLimit: number | null;
368
+ thirdPartyApplicationsLimit: number | null;
369
+ scopesPerResourceLimit: number | null;
370
+ socialConnectorsLimit: number | null;
371
+ userRolesLimit: number | null;
372
+ machineToMachineRolesLimit: number | null;
373
+ scopesPerRoleLimit: number | null;
374
+ hooksLimit: number | null;
375
+ customJwtEnabled: boolean;
376
+ subjectTokenEnabled: boolean;
377
+ bringYourUiEnabled: boolean;
378
+ collectUserProfileEnabled: boolean;
379
+ tokenLimit: number | null;
380
+ machineToMachineLimit: number | null;
381
+ resourcesLimit: number | null;
382
+ enterpriseSsoLimit: number | null;
383
+ tenantMembersLimit: number | null;
384
+ mfaEnabled: boolean;
385
+ organizationsEnabled: boolean;
386
+ organizationsLimit: number | null;
387
+ securityFeaturesEnabled: boolean;
388
+ idpInitiatedSsoEnabled: boolean;
389
+ samlApplicationsLimit: number | null;
390
+ };
222
391
  planId: string;
223
392
  currentPeriodStart: Date;
224
393
  currentPeriodEnd: Date;
394
+ isEnterprisePlan: boolean;
395
+ id?: string | undefined;
396
+ upcomingInvoice?: {
397
+ subtotal: number;
398
+ subtotalExcludingTax: number | null;
399
+ total: number;
400
+ totalExcludingTax: number | null;
401
+ } | null | undefined;
225
402
  }>;
226
403
  } & {
404
+ "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
405
+ usage: {
406
+ applicationsLimit: number;
407
+ thirdPartyApplicationsLimit: number;
408
+ scopesPerResourceLimit: number;
409
+ socialConnectorsLimit: number;
410
+ userRolesLimit: number;
411
+ machineToMachineRolesLimit: number;
412
+ scopesPerRoleLimit: number;
413
+ hooksLimit: number;
414
+ customJwtEnabled: boolean;
415
+ subjectTokenEnabled: boolean;
416
+ bringYourUiEnabled: boolean;
417
+ collectUserProfileEnabled: boolean;
418
+ machineToMachineLimit: number;
419
+ resourcesLimit: number;
420
+ enterpriseSsoLimit: number;
421
+ tenantMembersLimit: number;
422
+ mfaEnabled: boolean;
423
+ organizationsEnabled: boolean;
424
+ organizationsLimit: number;
425
+ securityFeaturesEnabled: boolean;
426
+ idpInitiatedSsoEnabled: boolean;
427
+ samlApplicationsLimit: number;
428
+ };
429
+ resources: Record<string, number>;
430
+ roles: Record<string, number>;
431
+ quota: {
432
+ auditLogsRetentionDays: number | null;
433
+ mauLimit: number | null;
434
+ applicationsLimit: number | null;
435
+ thirdPartyApplicationsLimit: number | null;
436
+ scopesPerResourceLimit: number | null;
437
+ socialConnectorsLimit: number | null;
438
+ userRolesLimit: number | null;
439
+ machineToMachineRolesLimit: number | null;
440
+ scopesPerRoleLimit: number | null;
441
+ hooksLimit: number | null;
442
+ customJwtEnabled: boolean;
443
+ subjectTokenEnabled: boolean;
444
+ bringYourUiEnabled: boolean;
445
+ collectUserProfileEnabled: boolean;
446
+ tokenLimit: number | null;
447
+ machineToMachineLimit: number | null;
448
+ resourcesLimit: number | null;
449
+ enterpriseSsoLimit: number | null;
450
+ tenantMembersLimit: number | null;
451
+ mfaEnabled: boolean;
452
+ organizationsEnabled: boolean;
453
+ organizationsLimit: number | null;
454
+ securityFeaturesEnabled: boolean;
455
+ idpInitiatedSsoEnabled: boolean;
456
+ samlApplicationsLimit: number | null;
457
+ };
458
+ basicQuota: {
459
+ auditLogsRetentionDays: number | null;
460
+ mauLimit: number | null;
461
+ applicationsLimit: number | null;
462
+ thirdPartyApplicationsLimit: number | null;
463
+ scopesPerResourceLimit: number | null;
464
+ socialConnectorsLimit: number | null;
465
+ userRolesLimit: number | null;
466
+ machineToMachineRolesLimit: number | null;
467
+ scopesPerRoleLimit: number | null;
468
+ hooksLimit: number | null;
469
+ customJwtEnabled: boolean;
470
+ subjectTokenEnabled: boolean;
471
+ bringYourUiEnabled: boolean;
472
+ collectUserProfileEnabled: boolean;
473
+ tokenLimit: number | null;
474
+ machineToMachineLimit: number | null;
475
+ resourcesLimit: number | null;
476
+ enterpriseSsoLimit: number | null;
477
+ tenantMembersLimit: number | null;
478
+ mfaEnabled: boolean;
479
+ organizationsEnabled: boolean;
480
+ organizationsLimit: number | null;
481
+ securityFeaturesEnabled: boolean;
482
+ idpInitiatedSsoEnabled: boolean;
483
+ samlApplicationsLimit: number | null;
484
+ };
485
+ }>;
486
+ };
487
+ post: {
488
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
489
+ usageKey: RealtimeReportableUsageKey;
490
+ }, {
491
+ message: string;
492
+ }>;
493
+ };
494
+ put: {};
495
+ delete: {};
496
+ copy: {};
497
+ head: {};
498
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
499
+ patch: {};
500
+ options: {};
501
+ get: {
227
502
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
228
503
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
229
504
  planId: string;
230
505
  currentPeriodStart: Date;
231
506
  currentPeriodEnd: Date;
507
+ isEnterprisePlan: boolean;
508
+ id?: string | undefined;
509
+ upcomingInvoice?: {
510
+ subtotal: number;
511
+ subtotalExcludingTax: number | null;
512
+ total: number;
513
+ totalExcludingTax: number | null;
514
+ } | null | undefined;
515
+ }>;
516
+ } & {
517
+ "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
518
+ usage: {
519
+ applicationsLimit: number;
520
+ thirdPartyApplicationsLimit: number;
521
+ scopesPerResourceLimit: number;
522
+ socialConnectorsLimit: number;
523
+ userRolesLimit: number;
524
+ machineToMachineRolesLimit: number;
525
+ scopesPerRoleLimit: number;
526
+ hooksLimit: number;
527
+ customJwtEnabled: boolean;
528
+ subjectTokenEnabled: boolean;
529
+ bringYourUiEnabled: boolean;
530
+ collectUserProfileEnabled: boolean;
531
+ machineToMachineLimit: number;
532
+ resourcesLimit: number;
533
+ enterpriseSsoLimit: number;
534
+ tenantMembersLimit: number;
535
+ mfaEnabled: boolean;
536
+ organizationsEnabled: boolean;
537
+ organizationsLimit: number;
538
+ securityFeaturesEnabled: boolean;
539
+ idpInitiatedSsoEnabled: boolean;
540
+ samlApplicationsLimit: number;
541
+ };
542
+ resources: Record<string, number>;
543
+ roles: Record<string, number>;
544
+ quota: {
545
+ auditLogsRetentionDays: number | null;
546
+ mauLimit: number | null;
547
+ applicationsLimit: number | null;
548
+ thirdPartyApplicationsLimit: number | null;
549
+ scopesPerResourceLimit: number | null;
550
+ socialConnectorsLimit: number | null;
551
+ userRolesLimit: number | null;
552
+ machineToMachineRolesLimit: number | null;
553
+ scopesPerRoleLimit: number | null;
554
+ hooksLimit: number | null;
555
+ customJwtEnabled: boolean;
556
+ subjectTokenEnabled: boolean;
557
+ bringYourUiEnabled: boolean;
558
+ collectUserProfileEnabled: boolean;
559
+ tokenLimit: number | null;
560
+ machineToMachineLimit: number | null;
561
+ resourcesLimit: number | null;
562
+ enterpriseSsoLimit: number | null;
563
+ tenantMembersLimit: number | null;
564
+ mfaEnabled: boolean;
565
+ organizationsEnabled: boolean;
566
+ organizationsLimit: number | null;
567
+ securityFeaturesEnabled: boolean;
568
+ idpInitiatedSsoEnabled: boolean;
569
+ samlApplicationsLimit: number | null;
570
+ };
571
+ basicQuota: {
572
+ auditLogsRetentionDays: number | null;
573
+ mauLimit: number | null;
574
+ applicationsLimit: number | null;
575
+ thirdPartyApplicationsLimit: number | null;
576
+ scopesPerResourceLimit: number | null;
577
+ socialConnectorsLimit: number | null;
578
+ userRolesLimit: number | null;
579
+ machineToMachineRolesLimit: number | null;
580
+ scopesPerRoleLimit: number | null;
581
+ hooksLimit: number | null;
582
+ customJwtEnabled: boolean;
583
+ subjectTokenEnabled: boolean;
584
+ bringYourUiEnabled: boolean;
585
+ collectUserProfileEnabled: boolean;
586
+ tokenLimit: number | null;
587
+ machineToMachineLimit: number | null;
588
+ resourcesLimit: number | null;
589
+ enterpriseSsoLimit: number | null;
590
+ tenantMembersLimit: number | null;
591
+ mfaEnabled: boolean;
592
+ organizationsEnabled: boolean;
593
+ organizationsLimit: number | null;
594
+ securityFeaturesEnabled: boolean;
595
+ idpInitiatedSsoEnabled: boolean;
596
+ samlApplicationsLimit: number | null;
597
+ };
598
+ }>;
599
+ } & {
600
+ "/tenants/:tenantId/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/periodic-usage", unknown, unknown, {
601
+ mauLimit: number;
602
+ tokenLimit: number;
232
603
  }>;
604
+ } & {
605
+ "/tenants/:tenantId/subscription/add-on-skus": import("@withtyped/server").PathGuard<"/:tenantId/subscription/add-on-skus", unknown, unknown, Partial<Record<"tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit", {
606
+ id: string;
607
+ name: string | null;
608
+ createdAt: Date;
609
+ defaultPriceId: string | null;
610
+ unitPrice: number | null;
611
+ type: LogtoSkuType;
612
+ quota: {
613
+ auditLogsRetentionDays?: number | null | undefined;
614
+ mauLimit?: number | null | undefined;
615
+ applicationsLimit?: number | null | undefined;
616
+ thirdPartyApplicationsLimit?: number | null | undefined;
617
+ scopesPerResourceLimit?: number | null | undefined;
618
+ socialConnectorsLimit?: number | null | undefined;
619
+ userRolesLimit?: number | null | undefined;
620
+ machineToMachineRolesLimit?: number | null | undefined;
621
+ scopesPerRoleLimit?: number | null | undefined;
622
+ hooksLimit?: number | null | undefined;
623
+ customJwtEnabled?: boolean | undefined;
624
+ subjectTokenEnabled?: boolean | undefined;
625
+ bringYourUiEnabled?: boolean | undefined;
626
+ collectUserProfileEnabled?: boolean | undefined;
627
+ tokenLimit?: number | null | undefined;
628
+ machineToMachineLimit?: number | null | undefined;
629
+ resourcesLimit?: number | null | undefined;
630
+ enterpriseSsoLimit?: number | null | undefined;
631
+ tenantMembersLimit?: number | null | undefined;
632
+ mfaEnabled?: boolean | undefined;
633
+ organizationsEnabled?: boolean | undefined;
634
+ organizationsLimit?: number | null | undefined;
635
+ securityFeaturesEnabled?: boolean | undefined;
636
+ idpInitiatedSsoEnabled?: boolean | undefined;
637
+ samlApplicationsLimit?: number | null | undefined;
638
+ };
639
+ isDefault: boolean;
640
+ updatedAt: Date;
641
+ productId: string | null;
642
+ }>>>;
233
643
  } & {
234
644
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
235
645
  invoices: {
236
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
237
646
  id: string;
238
647
  createdAt: Date;
648
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
239
649
  updatedAt: Date;
240
650
  customerId: string | null;
241
651
  billingReason: string | null;
@@ -243,22 +653,61 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
243
653
  periodEnd: Date;
244
654
  amountDue: number;
245
655
  amountPaid: number;
656
+ basicSkuId: string | null;
246
657
  subscriptionId: string | null;
247
658
  hostedInvoiceUrl: string | null;
248
659
  invoicePdf: string | null;
660
+ collectionMethod: "charge_automatically" | "send_invoice" | null;
661
+ dueDate: Date | null;
249
662
  planName: string | null;
663
+ skuId?: string | null | undefined;
250
664
  }[];
251
665
  }>;
666
+ } & {
667
+ "/tenants/:tenantId/available-skus": import("@withtyped/server").PathGuard<"/:tenantId/available-skus", {
668
+ type?: LogtoSkuType | undefined;
669
+ }, unknown, {
670
+ id: string;
671
+ name: string | null;
672
+ createdAt: Date;
673
+ defaultPriceId: string | null;
674
+ unitPrice: number | null;
675
+ type: LogtoSkuType;
676
+ quota: {
677
+ auditLogsRetentionDays?: number | null | undefined;
678
+ mauLimit?: number | null | undefined;
679
+ applicationsLimit?: number | null | undefined;
680
+ thirdPartyApplicationsLimit?: number | null | undefined;
681
+ scopesPerResourceLimit?: number | null | undefined;
682
+ socialConnectorsLimit?: number | null | undefined;
683
+ userRolesLimit?: number | null | undefined;
684
+ machineToMachineRolesLimit?: number | null | undefined;
685
+ scopesPerRoleLimit?: number | null | undefined;
686
+ hooksLimit?: number | null | undefined;
687
+ customJwtEnabled?: boolean | undefined;
688
+ subjectTokenEnabled?: boolean | undefined;
689
+ bringYourUiEnabled?: boolean | undefined;
690
+ collectUserProfileEnabled?: boolean | undefined;
691
+ tokenLimit?: number | null | undefined;
692
+ machineToMachineLimit?: number | null | undefined;
693
+ resourcesLimit?: number | null | undefined;
694
+ enterpriseSsoLimit?: number | null | undefined;
695
+ tenantMembersLimit?: number | null | undefined;
696
+ mfaEnabled?: boolean | undefined;
697
+ organizationsEnabled?: boolean | undefined;
698
+ organizationsLimit?: number | null | undefined;
699
+ securityFeaturesEnabled?: boolean | undefined;
700
+ idpInitiatedSsoEnabled?: boolean | undefined;
701
+ samlApplicationsLimit?: number | null | undefined;
702
+ };
703
+ isDefault: boolean;
704
+ updatedAt: Date;
705
+ productId: string | null;
706
+ }[]>;
252
707
  } & {
253
708
  "/tenants/:tenantId/invoices/:invoiceId/hosted-invoice-url": import("@withtyped/server").PathGuard<"/:tenantId/invoices/:invoiceId/hosted-invoice-url", unknown, unknown, {
254
709
  hostedInvoiceUrl: string;
255
710
  }>;
256
- } & {
257
- "/tenants/:tenantId/usage": import("@withtyped/server").PathGuard<"/:tenantId/usage", unknown, unknown, {
258
- activeUsers: number;
259
- cost: number;
260
- tokenUsage: number;
261
- }>;
262
711
  };
263
712
  post: {
264
713
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
@@ -286,11 +735,15 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
286
735
  post: {
287
736
  "/services/mails": import("@withtyped/server").PathGuard<"/mails", unknown, {
288
737
  data: {
289
- type: TemplateType | VerificationCodeType;
738
+ type: TemplateType;
290
739
  payload: {
291
- code?: string | undefined;
292
740
  link?: string | undefined;
293
- } & Record<string, string> & {
741
+ code?: string | undefined;
742
+ locale?: string | undefined;
743
+ uiLocales?: string | undefined;
744
+ } & {
745
+ [k: string]: unknown;
746
+ } & {
294
747
  senderName?: string | undefined;
295
748
  companyInformation?: string | undefined;
296
749
  appLogo?: string | undefined;
@@ -301,80 +754,229 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
301
754
  } & {
302
755
  "/services/send-sms": import("@withtyped/server").PathGuard<"/send-sms", unknown, {
303
756
  data: {
304
- type: TemplateType | VerificationCodeType;
757
+ type: TemplateType;
305
758
  to: string;
306
759
  payload: {
307
760
  code?: string | undefined;
308
761
  link?: string | undefined;
309
- } & Record<string, string>;
762
+ locale?: string | undefined;
763
+ uiLocales?: string | undefined;
764
+ } & {
765
+ [k: string]: unknown;
766
+ };
310
767
  };
311
768
  }, unknown>;
312
769
  } & {
313
- "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", unknown, {
314
- script: string;
315
- tokenType: LogtoJwtTokenPath.AccessToken;
770
+ "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
771
+ isTest?: string | undefined;
772
+ }, {
316
773
  token: Record<string, Json>;
317
774
  context: Record<string, Json>;
318
- envVars?: Record<string, string> | undefined;
319
- } | {
775
+ tokenType: LogtoJwtTokenKeyType.AccessToken;
320
776
  script: string;
321
- tokenType: LogtoJwtTokenPath.ClientCredentials;
777
+ environmentVariables?: Record<string, string> | undefined;
778
+ } | {
322
779
  token: Record<string, Json>;
323
- envVars?: Record<string, string> | undefined;
780
+ tokenType: LogtoJwtTokenKeyType.ClientCredentials;
781
+ script: string;
782
+ environmentVariables?: Record<string, string> | undefined;
324
783
  }, Record<string, unknown>>;
325
784
  };
326
- put: {};
327
- delete: {};
785
+ put: {
786
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, {
787
+ "jwt.accessToken"?: {
788
+ production?: string | undefined;
789
+ test?: string | undefined;
790
+ } | undefined;
791
+ "jwt.clientCredentials"?: {
792
+ production?: string | undefined;
793
+ test?: string | undefined;
794
+ } | undefined;
795
+ }, unknown>;
796
+ };
797
+ delete: {
798
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, unknown, unknown>;
799
+ };
328
800
  copy: {};
329
801
  head: {};
330
802
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
331
803
  patch: {};
332
804
  options: {};
333
805
  get: {
334
- "/subscription-plans": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
806
+ "/skus": import("@withtyped/server").PathGuard<"/", {
807
+ type?: LogtoSkuType | undefined;
808
+ }, unknown, {
335
809
  id: string;
810
+ name: string | null;
336
811
  createdAt: Date;
337
- name: string;
812
+ defaultPriceId: string | null;
813
+ unitPrice: number | null;
814
+ type: LogtoSkuType;
815
+ quota: {
816
+ auditLogsRetentionDays?: number | null | undefined;
817
+ mauLimit?: number | null | undefined;
818
+ applicationsLimit?: number | null | undefined;
819
+ thirdPartyApplicationsLimit?: number | null | undefined;
820
+ scopesPerResourceLimit?: number | null | undefined;
821
+ socialConnectorsLimit?: number | null | undefined;
822
+ userRolesLimit?: number | null | undefined;
823
+ machineToMachineRolesLimit?: number | null | undefined;
824
+ scopesPerRoleLimit?: number | null | undefined;
825
+ hooksLimit?: number | null | undefined;
826
+ customJwtEnabled?: boolean | undefined;
827
+ subjectTokenEnabled?: boolean | undefined;
828
+ bringYourUiEnabled?: boolean | undefined;
829
+ collectUserProfileEnabled?: boolean | undefined;
830
+ tokenLimit?: number | null | undefined;
831
+ machineToMachineLimit?: number | null | undefined;
832
+ resourcesLimit?: number | null | undefined;
833
+ enterpriseSsoLimit?: number | null | undefined;
834
+ tenantMembersLimit?: number | null | undefined;
835
+ mfaEnabled?: boolean | undefined;
836
+ organizationsEnabled?: boolean | undefined;
837
+ organizationsLimit?: number | null | undefined;
838
+ securityFeaturesEnabled?: boolean | undefined;
839
+ idpInitiatedSsoEnabled?: boolean | undefined;
840
+ samlApplicationsLimit?: number | null | undefined;
841
+ };
842
+ isDefault: boolean;
338
843
  updatedAt: Date;
339
- stripeProducts: {
340
- type: "flat" | "tier1" | "tier2" | "tier3";
341
- id: string;
342
- name: string;
343
- price: {
344
- id: string;
345
- unitAmountDecimal: string;
346
- quantity?: 1 | undefined;
347
- unitAmount?: number | null | undefined;
348
- };
349
- description?: string | undefined;
350
- }[];
844
+ productId: string | null;
845
+ }[]>;
846
+ };
847
+ post: {
848
+ "/skus": import("@withtyped/server").PathGuard<"/", unknown, {
849
+ type: LogtoSkuType.AddOn;
850
+ quota: {
851
+ tokenLimit?: number | null | undefined;
852
+ machineToMachineLimit?: number | null | undefined;
853
+ resourcesLimit?: number | null | undefined;
854
+ enterpriseSsoLimit?: number | null | undefined;
855
+ hooksLimit?: number | null | undefined;
856
+ tenantMembersLimit?: number | null | undefined;
857
+ mfaEnabled?: boolean | undefined;
858
+ organizationsEnabled?: boolean | undefined;
859
+ organizationsLimit?: number | null | undefined;
860
+ securityFeaturesEnabled?: boolean | undefined;
861
+ userRolesLimit?: number | null | undefined;
862
+ machineToMachineRolesLimit?: number | null | undefined;
863
+ thirdPartyApplicationsLimit?: number | null | undefined;
864
+ samlApplicationsLimit?: number | null | undefined;
865
+ auditLogsRetentionDays?: number | null | undefined;
866
+ mauLimit?: number | null | undefined;
867
+ applicationsLimit?: number | null | undefined;
868
+ scopesPerResourceLimit?: number | null | undefined;
869
+ socialConnectorsLimit?: number | null | undefined;
870
+ scopesPerRoleLimit?: number | null | undefined;
871
+ customJwtEnabled?: boolean | undefined;
872
+ subjectTokenEnabled?: boolean | undefined;
873
+ bringYourUiEnabled?: boolean | undefined;
874
+ collectUserProfileEnabled?: boolean | undefined;
875
+ idpInitiatedSsoEnabled?: boolean | undefined;
876
+ };
877
+ id?: string | undefined;
878
+ isDefault?: boolean | undefined;
879
+ } | {
880
+ type: LogtoSkuType.Basic;
351
881
  quota: {
882
+ auditLogsRetentionDays: number | null;
352
883
  mauLimit: number | null;
353
- tokenLimit: number | null;
354
884
  applicationsLimit: number | null;
355
- machineToMachineLimit: number | null;
356
- resourcesLimit: number | null;
885
+ thirdPartyApplicationsLimit: number | null;
357
886
  scopesPerResourceLimit: number | null;
358
- customDomainEnabled: boolean;
359
- omniSignInEnabled: boolean;
360
- builtInEmailConnectorEnabled: boolean;
361
887
  socialConnectorsLimit: number | null;
362
- standardConnectorsLimit: number | null;
363
- rolesLimit: number | null;
888
+ userRolesLimit: number | null;
364
889
  machineToMachineRolesLimit: number | null;
365
890
  scopesPerRoleLimit: number | null;
366
891
  hooksLimit: number | null;
367
- auditLogsRetentionDays: number | null;
892
+ customJwtEnabled: boolean;
893
+ subjectTokenEnabled: boolean;
894
+ bringYourUiEnabled: boolean;
895
+ collectUserProfileEnabled: boolean;
896
+ tokenLimit: number | null;
897
+ machineToMachineLimit: number | null;
898
+ resourcesLimit: number | null;
899
+ enterpriseSsoLimit: number | null;
900
+ tenantMembersLimit: number | null;
368
901
  mfaEnabled: boolean;
369
902
  organizationsEnabled: boolean;
370
- ssoEnabled: boolean;
371
- thirdPartyApplicationsLimit: number | null;
903
+ organizationsLimit: number | null;
904
+ securityFeaturesEnabled: boolean;
905
+ idpInitiatedSsoEnabled: boolean;
906
+ samlApplicationsLimit: number | null;
372
907
  };
373
- }[]>;
908
+ addOnRelations: {
909
+ tokenLimit?: string | undefined;
910
+ machineToMachineLimit?: string | undefined;
911
+ resourcesLimit?: string | undefined;
912
+ enterpriseSsoLimit?: string | undefined;
913
+ tenantMembersLimit?: string | undefined;
914
+ mfaEnabled?: string | undefined;
915
+ organizationsLimit?: string | undefined;
916
+ securityFeaturesEnabled?: string | undefined;
917
+ };
918
+ id?: string | undefined;
919
+ isDefault?: boolean | undefined;
920
+ }, {
921
+ id: string;
922
+ createdAt: Date;
923
+ type: LogtoSkuType;
924
+ isDefault: boolean;
925
+ updatedAt: Date;
926
+ quota: {
927
+ auditLogsRetentionDays?: number | null | undefined;
928
+ mauLimit?: number | null | undefined;
929
+ applicationsLimit?: number | null | undefined;
930
+ thirdPartyApplicationsLimit?: number | null | undefined;
931
+ scopesPerResourceLimit?: number | null | undefined;
932
+ socialConnectorsLimit?: number | null | undefined;
933
+ userRolesLimit?: number | null | undefined;
934
+ machineToMachineRolesLimit?: number | null | undefined;
935
+ scopesPerRoleLimit?: number | null | undefined;
936
+ hooksLimit?: number | null | undefined;
937
+ customJwtEnabled?: boolean | undefined;
938
+ subjectTokenEnabled?: boolean | undefined;
939
+ bringYourUiEnabled?: boolean | undefined;
940
+ collectUserProfileEnabled?: boolean | undefined;
941
+ tokenLimit?: number | null | undefined;
942
+ machineToMachineLimit?: number | null | undefined;
943
+ resourcesLimit?: number | null | undefined;
944
+ enterpriseSsoLimit?: number | null | undefined;
945
+ tenantMembersLimit?: number | null | undefined;
946
+ mfaEnabled?: boolean | undefined;
947
+ organizationsEnabled?: boolean | undefined;
948
+ organizationsLimit?: number | null | undefined;
949
+ securityFeaturesEnabled?: boolean | undefined;
950
+ idpInitiatedSsoEnabled?: boolean | undefined;
951
+ samlApplicationsLimit?: number | null | undefined;
952
+ };
953
+ }>;
954
+ } & {
955
+ "/skus/:skuId/products": import("@withtyped/server").PathGuard<"/:skuId/products", {
956
+ isOneTime?: string | undefined;
957
+ }, {
958
+ name: string;
959
+ unitPrice: number;
960
+ }, {
961
+ productId: string;
962
+ }>;
963
+ } & {
964
+ "/skus/basic-sku-usage-add-on-relations": import("@withtyped/server").PathGuard<"/basic-sku-usage-add-on-relations", unknown, {
965
+ basicSkuId: string;
966
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit";
967
+ addOnSkuId: string;
968
+ }, {
969
+ basicSkuId: string;
970
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit";
971
+ addOnSkuId: string;
972
+ }>;
374
973
  };
375
- post: {};
376
974
  put: {};
377
- delete: {};
975
+ delete: {
976
+ "/skus/:skuId": import("@withtyped/server").PathGuard<"/:skuId", unknown, unknown, unknown>;
977
+ } & {
978
+ "/skus/basic-sku-usage-add-on-relations/:basicSkuId/:usageKey": import("@withtyped/server").PathGuard<"/basic-sku-usage-add-on-relations/:basicSkuId/:usageKey", unknown, unknown, unknown>;
979
+ };
378
980
  copy: {};
379
981
  head: {};
380
982
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
@@ -388,17 +990,19 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
388
990
  status: "open" | "complete" | "expired";
389
991
  tenantId: string | null;
390
992
  updatedAt: Date;
391
- planId: string;
993
+ skuId: string | null;
994
+ planId: string | null;
392
995
  }>;
393
996
  };
394
997
  post: {
395
998
  "/checkout-session": import("@withtyped/server").PathGuard<"/", unknown, {
396
- planId: string;
397
999
  successCallbackUrl: string;
398
1000
  tenantId?: string | undefined;
399
- cancelCallbackUrl?: string | undefined;
400
- tenantTag?: TenantTag | undefined;
1001
+ skuId?: string | undefined;
401
1002
  tenantName?: string | undefined;
1003
+ tenantTag?: TenantTag | undefined;
1004
+ tenantRegionName?: string | undefined;
1005
+ cancelCallbackUrl?: string | undefined;
402
1006
  }, {
403
1007
  sessionId: string;
404
1008
  redirectUri?: string | null | undefined;
@@ -482,15 +1086,15 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
482
1086
  status: OrganizationInvitationStatus;
483
1087
  tenantId: string;
484
1088
  updatedAt: number;
485
- organizationId: string;
486
1089
  inviterId: string | null;
487
1090
  invitee: string;
488
- expiresAt: number;
489
1091
  acceptedUserId: string | null;
1092
+ organizationId: string;
1093
+ expiresAt: number;
490
1094
  organizationRoles: OrganizationRoleEntity[];
491
1095
  } & {
492
- tenantTag: TenantTag;
493
1096
  tenantName: string;
1097
+ tenantTag: TenantTag;
494
1098
  })[]>;
495
1099
  } & {
496
1100
  "/invitations/:invitationId": import("@withtyped/server").PathGuard<"/:invitationId", unknown, unknown, {
@@ -499,11 +1103,11 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
499
1103
  status: OrganizationInvitationStatus;
500
1104
  tenantId: string;
501
1105
  updatedAt: number;
502
- organizationId: string;
503
1106
  inviterId: string | null;
504
1107
  invitee: string;
505
- expiresAt: number;
506
1108
  acceptedUserId: string | null;
1109
+ organizationId: string;
1110
+ expiresAt: number;
507
1111
  organizationRoles: OrganizationRoleEntity[];
508
1112
  }>;
509
1113
  };
@@ -512,9 +1116,136 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
512
1116
  delete: {};
513
1117
  copy: {};
514
1118
  head: {};
1119
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
1120
+ patch: {};
1121
+ options: {};
1122
+ get: {
1123
+ "/me/regions": import("@withtyped/server").PathGuard<"/regions", unknown, unknown, {
1124
+ regions: {
1125
+ id: string;
1126
+ name: string;
1127
+ country: string;
1128
+ isPrivate: boolean;
1129
+ tags: TenantTag[];
1130
+ }[];
1131
+ }>;
1132
+ };
1133
+ post: {};
1134
+ put: {};
1135
+ delete: {
1136
+ "/me": import("@withtyped/server").PathGuard<"/", unknown, unknown, unknown>;
1137
+ };
1138
+ copy: {};
1139
+ head: {};
1140
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
1141
+ patch: {
1142
+ "/regions/:regionName/users/:userId": import("@withtyped/server").PathGuard<"/:regionName/users/:userId", unknown, {
1143
+ role: DatabaseRegionAccessRole;
1144
+ }, {
1145
+ role: DatabaseRegionAccessRole;
1146
+ userId: string;
1147
+ }>;
1148
+ };
1149
+ options: {};
1150
+ get: {
1151
+ "/regions/:regionName/users": import("@withtyped/server").PathGuard<"/:regionName/users", unknown, unknown, {
1152
+ users: {
1153
+ role: DatabaseRegionAccessRole;
1154
+ userId: string;
1155
+ }[];
1156
+ }>;
1157
+ };
1158
+ post: {
1159
+ "/regions/:regionName/users": import("@withtyped/server").PathGuard<"/:regionName/users", unknown, {
1160
+ role: DatabaseRegionAccessRole;
1161
+ userId: string;
1162
+ }, {
1163
+ role: DatabaseRegionAccessRole;
1164
+ userId: string;
1165
+ }>;
1166
+ };
1167
+ put: {};
1168
+ delete: {
1169
+ "/regions/:regionName/users/:userId": import("@withtyped/server").PathGuard<"/:regionName/users/:userId", unknown, unknown, unknown>;
1170
+ };
1171
+ copy: {};
1172
+ head: {};
1173
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
1174
+ patch: {};
1175
+ options: {};
1176
+ get: {};
1177
+ post: {
1178
+ "/system-limits": import("@withtyped/server").PathGuard<"/", unknown, {
1179
+ limits: {
1180
+ applicationsLimit?: number | null | undefined;
1181
+ thirdPartyApplicationsLimit?: number | null | undefined;
1182
+ scopesPerResourceLimit?: number | null | undefined;
1183
+ socialConnectorsLimit?: number | null | undefined;
1184
+ userRolesLimit?: number | null | undefined;
1185
+ machineToMachineRolesLimit?: number | null | undefined;
1186
+ scopesPerRoleLimit?: number | null | undefined;
1187
+ hooksLimit?: number | null | undefined;
1188
+ machineToMachineLimit?: number | null | undefined;
1189
+ resourcesLimit?: number | null | undefined;
1190
+ enterpriseSsoLimit?: number | null | undefined;
1191
+ tenantMembersLimit?: number | null | undefined;
1192
+ organizationsLimit?: number | null | undefined;
1193
+ samlApplicationsLimit?: number | null | undefined;
1194
+ usersPerOrganizationLimit?: number | null | undefined;
1195
+ organizationUserRolesLimit?: number | null | undefined;
1196
+ organizationMachineToMachineRolesLimit?: number | null | undefined;
1197
+ organizationScopesLimit?: number | null | undefined;
1198
+ };
1199
+ id?: string | undefined;
1200
+ }, {
1201
+ id: string;
1202
+ createdAt: Date;
1203
+ updatedAt: Date;
1204
+ limits: {
1205
+ applicationsLimit?: number | null | undefined;
1206
+ thirdPartyApplicationsLimit?: number | null | undefined;
1207
+ scopesPerResourceLimit?: number | null | undefined;
1208
+ socialConnectorsLimit?: number | null | undefined;
1209
+ userRolesLimit?: number | null | undefined;
1210
+ machineToMachineRolesLimit?: number | null | undefined;
1211
+ scopesPerRoleLimit?: number | null | undefined;
1212
+ hooksLimit?: number | null | undefined;
1213
+ machineToMachineLimit?: number | null | undefined;
1214
+ resourcesLimit?: number | null | undefined;
1215
+ enterpriseSsoLimit?: number | null | undefined;
1216
+ tenantMembersLimit?: number | null | undefined;
1217
+ organizationsLimit?: number | null | undefined;
1218
+ samlApplicationsLimit?: number | null | undefined;
1219
+ usersPerOrganizationLimit?: number | null | undefined;
1220
+ organizationUserRolesLimit?: number | null | undefined;
1221
+ organizationMachineToMachineRolesLimit?: number | null | undefined;
1222
+ organizationScopesLimit?: number | null | undefined;
1223
+ };
1224
+ }>;
1225
+ } & {
1226
+ "/system-limits/:systemLimitId/basic-sku-relations": import("@withtyped/server").PathGuard<"/:systemLimitId/basic-sku-relations", unknown, {
1227
+ basicSkuIds: string[];
1228
+ }, {
1229
+ relations: {
1230
+ createdAt: Date;
1231
+ updatedAt: Date;
1232
+ basicSkuId: string;
1233
+ systemLimitId: string;
1234
+ }[];
1235
+ }>;
1236
+ };
1237
+ put: {};
1238
+ delete: {
1239
+ "/system-limits/:systemLimitId/basic-sku-relations": import("@withtyped/server").PathGuard<"/:systemLimitId/basic-sku-relations", unknown, {
1240
+ basicSkuIds: string[];
1241
+ }, unknown>;
1242
+ };
1243
+ copy: {};
1244
+ head: {};
515
1245
  }, "/api">>, "/api">;
516
1246
  export declare const tenantAuthRouter: import("@withtyped/server").Router<RequestContext, import("@withtyped/server").WithBodyContext<import("@withtyped/server").BaseContext & {
517
1247
  request: {
1248
+ id?: string | undefined;
518
1249
  method?: import("@withtyped/server").RequestMethod | undefined;
519
1250
  headers: import("http").IncomingHttpHeaders;
520
1251
  url: URL;
@@ -530,11 +1261,11 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
530
1261
  status: OrganizationInvitationStatus;
531
1262
  tenantId: string;
532
1263
  updatedAt: number;
533
- organizationId: string;
534
1264
  inviterId: string | null;
535
1265
  invitee: string;
536
- expiresAt: number;
537
1266
  acceptedUserId: string | null;
1267
+ organizationId: string;
1268
+ expiresAt: number;
538
1269
  organizationRoles: OrganizationRoleEntity[];
539
1270
  }>;
540
1271
  };
@@ -550,23 +1281,27 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
550
1281
  organizationRoles: OrganizationRoleEntity[];
551
1282
  }[]>;
552
1283
  } & {
553
- "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, {
1284
+ "/:tenantId/members/:userId/scopes": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId/scopes", unknown, unknown, OrganizationScope[]>;
1285
+ } & {
1286
+ "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, ({
554
1287
  id: string;
555
1288
  createdAt: number;
556
1289
  status: OrganizationInvitationStatus;
557
1290
  tenantId: string;
558
1291
  updatedAt: number;
559
- organizationId: string;
560
1292
  inviterId: string | null;
561
1293
  invitee: string;
562
- expiresAt: number;
563
1294
  acceptedUserId: string | null;
1295
+ organizationId: string;
1296
+ expiresAt: number;
564
1297
  organizationRoles: OrganizationRoleEntity[];
565
- }[]>;
1298
+ } & {
1299
+ inviterName?: string | undefined;
1300
+ })[]>;
566
1301
  };
567
1302
  post: {
568
1303
  "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, {
569
- invitee: string;
1304
+ invitee: string | string[];
570
1305
  roleName: TenantRole;
571
1306
  expiresAt?: number | undefined;
572
1307
  }, {
@@ -575,13 +1310,25 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
575
1310
  status: OrganizationInvitationStatus;
576
1311
  tenantId: string;
577
1312
  updatedAt: number;
578
- organizationId: string;
579
1313
  inviterId: string | null;
580
1314
  invitee: string;
1315
+ acceptedUserId: string | null;
1316
+ organizationId: string;
581
1317
  expiresAt: number;
1318
+ organizationRoles: OrganizationRoleEntity[];
1319
+ } | {
1320
+ id: string;
1321
+ createdAt: number;
1322
+ status: OrganizationInvitationStatus;
1323
+ tenantId: string;
1324
+ updatedAt: number;
1325
+ inviterId: string | null;
1326
+ invitee: string;
582
1327
  acceptedUserId: string | null;
1328
+ organizationId: string;
1329
+ expiresAt: number;
583
1330
  organizationRoles: OrganizationRoleEntity[];
584
- }>;
1331
+ }[]>;
585
1332
  } & {
586
1333
  "/:tenantId/invitations/:invitationId/message": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/message", unknown, unknown, unknown>;
587
1334
  };
@@ -598,35 +1345,6 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
598
1345
  copy: {};
599
1346
  head: {};
600
1347
  }, "/api/tenants">>, "/api/tenants">;
601
- export declare const functionsRouter: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
602
- request: {
603
- method?: import("@withtyped/server").RequestMethod | undefined;
604
- headers: import("http").IncomingHttpHeaders;
605
- url: URL;
606
- body?: unknown;
607
- };
608
- }, "request"> & {
609
- request: Record<string, unknown> & {
610
- method?: import("@withtyped/server").RequestMethod | undefined;
611
- headers: import("http").IncomingHttpHeaders;
612
- url: URL;
613
- body?: unknown;
614
- } & {
615
- body?: Json | undefined;
616
- bodyRaw?: Buffer | undefined;
617
- };
618
- }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
619
- patch: {};
620
- options: {};
621
- get: {};
622
- post: {
623
- "/database-alteration": import("@withtyped/server").PathGuard<"/database-alteration", unknown, Json, unknown>;
624
- };
625
- put: {};
626
- delete: {};
627
- copy: {};
628
- head: {};
629
- }, "/functions">>, "/functions">;
630
1348
 
631
1349
  export {
632
1350
  router as default,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/cloud",
3
- "version": "0.2.5-c2fffa4",
3
+ "version": "0.2.5-c450763",
4
4
  "description": "Logto Cloud service.",
5
5
  "main": "build/index.js",
6
6
  "author": "Silverhand Inc. <contact@silverhand.io>",
@@ -16,24 +16,24 @@
16
16
  "#src/*": "./build/*"
17
17
  },
18
18
  "devDependencies": {
19
- "@silverhand/eslint-config": "5.0.0",
20
- "@silverhand/ts-config": "5.0.0",
19
+ "@silverhand/eslint-config": "6.0.1",
20
+ "@silverhand/ts-config": "6.0.0",
21
21
  "@types/accepts": "^1.3.5",
22
22
  "@types/http-proxy": "^1.17.9",
23
23
  "@types/mime-types": "^2.1.1",
24
- "@types/node": "^20.0.0",
24
+ "@types/node": "^22.14.0",
25
25
  "@types/yargs": "^17.0.24",
26
26
  "dts-bundle-generator": "^9.3.1",
27
- "eslint": "^8.44.0",
27
+ "eslint": "^8.57.0",
28
28
  "lint-staged": "^15.0.0",
29
29
  "nodemon": "^3.0.0",
30
30
  "prettier": "^3.0.0",
31
31
  "typescript": "^5.3.3",
32
- "vite-tsconfig-paths": "^4.3.1",
33
- "vitest": "^1.0.0"
32
+ "vite-tsconfig-paths": "^5.0.0",
33
+ "vitest": "^3.1.1"
34
34
  },
35
35
  "engines": {
36
- "node": "^20.9.0"
36
+ "node": "^22.14.0"
37
37
  },
38
38
  "eslintConfig": {
39
39
  "extends": "@silverhand",
@@ -49,8 +49,8 @@
49
49
  "access": "public"
50
50
  },
51
51
  "dependencies": {
52
- "@silverhand/essentials": "^2.9.0",
53
- "@withtyped/server": "^0.13.3"
52
+ "@silverhand/essentials": "^2.9.2",
53
+ "@withtyped/server": "^0.14.0"
54
54
  },
55
55
  "scripts": {
56
56
  "precommit": "lint-staged",
@@ -63,6 +63,7 @@
63
63
  "start": "NODE_ENV=production node .",
64
64
  "test": "vitest && pnpm build:lib && pnpm test:types",
65
65
  "test:types": "tsc -p tsconfig.test.types.json",
66
+ "test:only": "vitest",
66
67
  "cli": "node ./build/cli/index.js"
67
68
  }
68
69
  }