@logto/cloud 0.2.5-94f7bcc → 0.2.5-96334d3

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