@logto/cloud 0.2.5-5e334eb → 0.2.5-6279e2e

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 +318 -172
  2. package/package.json +5 -4
@@ -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,13 @@ 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"
33
45
  }
34
46
  declare enum OrganizationInvitationStatus {
35
47
  Pending = "Pending",
@@ -69,23 +81,6 @@ declare enum TenantRole {
69
81
  /** Collaborator of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
70
82
  Collaborator = "collaborator"
71
83
  }
72
- declare const availableReportableUsageKeys: readonly [
73
- "tokenLimit",
74
- "machineToMachineLimit",
75
- "resourcesLimit",
76
- "enterpriseSsoLimit",
77
- "hooksLimit",
78
- "tenantMembersLimit",
79
- "mfaEnabled",
80
- "organizationsEnabled",
81
- "organizationsLimit"
82
- ];
83
- export type ReportableUsageKey = (typeof availableReportableUsageKeys)[number];
84
- export type RealtimeReportableUsageKey = Exclude<ReportableUsageKey, "tokenLimit">;
85
- declare enum LogtoSkuType {
86
- Basic = "Basic",
87
- AddOn = "AddOn"
88
- }
89
84
  declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js").default<"affiliate_properties", {
90
85
  createdAt: Date;
91
86
  affiliateId: string;
@@ -99,11 +94,22 @@ declare const Affiliates: import("@withtyped/server/lib/model/index.js").default
99
94
  id: string;
100
95
  }, "id" | "createdAt", "id" | "createdAt">;
101
96
  export type Affiliate = InferModelType<typeof Affiliates>;
102
- declare enum RegionName {
103
- EU = "EU",
104
- US = "US",
105
- AU = "AU"
106
- }
97
+ declare const publicRegionNames: readonly [
98
+ "EU",
99
+ "US",
100
+ "AU",
101
+ "JP"
102
+ ];
103
+ /** The type of region names for the public cloud. */
104
+ export type PublicRegionName = (typeof publicRegionNames)[number];
105
+ export type WithAuthContext<Context = RequestContext> = Context & {
106
+ auth: {
107
+ /** The ID of the authenticated subject (`sub`). */
108
+ id: string;
109
+ /** The scopes that the subject has (`scope`). */
110
+ scopes: string[];
111
+ };
112
+ };
107
113
  export type AffiliateData = Affiliate & {
108
114
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
109
115
  };
@@ -126,18 +132,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
126
132
  body?: Json | undefined;
127
133
  bodyRaw?: Buffer | undefined;
128
134
  };
129
- }>, 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<{
135
+ }>, 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<{
130
136
  patch: {
131
137
  "/tenants/:tenantId": import("@withtyped/server").PathGuard<"/:tenantId", unknown, {
132
138
  name?: string | undefined;
133
139
  }, {
134
140
  id: string;
135
141
  name: string;
142
+ createdAt: Date;
136
143
  quota: {
137
144
  mauLimit: number | null;
138
145
  tokenLimit: number | null;
139
146
  };
140
- createdAt: Date;
141
147
  usage: {
142
148
  activeUsers: number;
143
149
  tokenUsage: number;
@@ -158,14 +164,13 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
158
164
  total: number;
159
165
  totalExcludingTax: number | null;
160
166
  } | null | undefined;
161
- isAddOnAvailable?: boolean | undefined;
162
167
  };
163
- regionName: RegionName;
168
+ regionName: string;
164
169
  tag: TenantTag;
165
170
  openInvoices: {
166
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
167
171
  id: string;
168
172
  createdAt: Date;
173
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
169
174
  updatedAt: Date;
170
175
  customerId: string | null;
171
176
  billingReason: string | null;
@@ -173,6 +178,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
173
178
  periodEnd: Date;
174
179
  amountDue: number;
175
180
  amountPaid: number;
181
+ basicSkuId: string | null;
176
182
  subscriptionId: string | null;
177
183
  hostedInvoiceUrl: string | null;
178
184
  invoicePdf: string | null;
@@ -184,11 +190,11 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
184
190
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
185
191
  id: string;
186
192
  name: string;
193
+ createdAt: Date;
187
194
  quota: {
188
195
  mauLimit: number | null;
189
196
  tokenLimit: number | null;
190
197
  };
191
- createdAt: Date;
192
198
  usage: {
193
199
  activeUsers: number;
194
200
  tokenUsage: number;
@@ -209,14 +215,13 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
209
215
  total: number;
210
216
  totalExcludingTax: number | null;
211
217
  } | null | undefined;
212
- isAddOnAvailable?: boolean | undefined;
213
218
  };
214
- regionName: RegionName;
219
+ regionName: string;
215
220
  tag: TenantTag;
216
221
  openInvoices: {
217
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
218
222
  id: string;
219
223
  createdAt: Date;
224
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
220
225
  updatedAt: Date;
221
226
  customerId: string | null;
222
227
  billingReason: string | null;
@@ -224,6 +229,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
224
229
  periodEnd: Date;
225
230
  amountDue: number;
226
231
  amountPaid: number;
232
+ basicSkuId: string | null;
227
233
  subscriptionId: string | null;
228
234
  hostedInvoiceUrl: string | null;
229
235
  invoicePdf: string | null;
@@ -232,17 +238,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
232
238
  };
233
239
  post: {
234
240
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
241
+ id?: string | undefined;
235
242
  name?: string | undefined;
236
243
  tag?: TenantTag | undefined;
237
- regionName?: RegionName | undefined;
244
+ regionName?: string | undefined;
238
245
  }, {
239
246
  id: string;
240
247
  name: string;
248
+ createdAt: Date;
241
249
  quota: {
242
250
  mauLimit: number | null;
243
251
  tokenLimit: number | null;
244
252
  };
245
- createdAt: Date;
246
253
  usage: {
247
254
  activeUsers: number;
248
255
  tokenUsage: number;
@@ -263,14 +270,13 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
263
270
  total: number;
264
271
  totalExcludingTax: number | null;
265
272
  } | null | undefined;
266
- isAddOnAvailable?: boolean | undefined;
267
273
  };
268
- regionName: RegionName;
274
+ regionName: string;
269
275
  tag: TenantTag;
270
276
  openInvoices: {
271
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
272
277
  id: string;
273
278
  createdAt: Date;
279
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
274
280
  updatedAt: Date;
275
281
  customerId: string | null;
276
282
  billingReason: string | null;
@@ -278,6 +284,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
278
284
  periodEnd: Date;
279
285
  amountDue: number;
280
286
  amountPaid: number;
287
+ basicSkuId: string | null;
281
288
  subscriptionId: string | null;
282
289
  hostedInvoiceUrl: string | null;
283
290
  invoicePdf: string | null;
@@ -296,6 +303,33 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
296
303
  get: {
297
304
  "/tenants/my/subscription": import("@withtyped/server").PathGuard<"/my/subscription", unknown, unknown, {
298
305
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
306
+ quota: {
307
+ auditLogsRetentionDays: number | null;
308
+ mauLimit: number | null;
309
+ applicationsLimit: number | null;
310
+ thirdPartyApplicationsLimit: number | null;
311
+ scopesPerResourceLimit: number | null;
312
+ socialConnectorsLimit: number | null;
313
+ userRolesLimit: number | null;
314
+ machineToMachineRolesLimit: number | null;
315
+ scopesPerRoleLimit: number | null;
316
+ hooksLimit: number | null;
317
+ customJwtEnabled: boolean;
318
+ subjectTokenEnabled: boolean;
319
+ bringYourUiEnabled: boolean;
320
+ collectUserProfileEnabled: boolean;
321
+ tokenLimit: number | null;
322
+ machineToMachineLimit: number | null;
323
+ resourcesLimit: number | null;
324
+ enterpriseSsoLimit: number | null;
325
+ tenantMembersLimit: number | null;
326
+ mfaEnabled: boolean;
327
+ organizationsEnabled: boolean;
328
+ organizationsLimit: number | null;
329
+ securityFeaturesEnabled: boolean;
330
+ idpInitiatedSsoEnabled: boolean;
331
+ samlApplicationsLimit: number | null;
332
+ };
299
333
  planId: string;
300
334
  currentPeriodStart: Date;
301
335
  currentPeriodEnd: Date;
@@ -307,83 +341,106 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
307
341
  total: number;
308
342
  totalExcludingTax: number | null;
309
343
  } | null | undefined;
310
- isAddOnAvailable?: boolean | undefined;
311
344
  }>;
312
345
  } & {
313
346
  "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
314
347
  usage: {
315
348
  applicationsLimit: number;
316
- machineToMachineLimit: number;
317
- resourcesLimit: number;
349
+ thirdPartyApplicationsLimit: number;
318
350
  scopesPerResourceLimit: number;
319
351
  socialConnectorsLimit: number;
352
+ userRolesLimit: number;
320
353
  machineToMachineRolesLimit: number;
321
354
  scopesPerRoleLimit: number;
322
355
  hooksLimit: number;
323
- mfaEnabled: boolean;
324
- organizationsEnabled: boolean;
325
- thirdPartyApplicationsLimit: number;
326
- tenantMembersLimit: number;
327
356
  customJwtEnabled: boolean;
328
357
  subjectTokenEnabled: boolean;
329
358
  bringYourUiEnabled: boolean;
330
- userRolesLimit: number;
359
+ collectUserProfileEnabled: boolean;
360
+ machineToMachineLimit: number;
361
+ resourcesLimit: number;
331
362
  enterpriseSsoLimit: number;
363
+ tenantMembersLimit: number;
364
+ mfaEnabled: boolean;
365
+ organizationsEnabled: boolean;
332
366
  organizationsLimit: number;
367
+ securityFeaturesEnabled: boolean;
333
368
  idpInitiatedSsoEnabled: boolean;
369
+ samlApplicationsLimit: number;
334
370
  };
335
371
  resources: Record<string, number>;
336
372
  roles: Record<string, number>;
337
373
  quota: {
374
+ auditLogsRetentionDays: number | null;
338
375
  mauLimit: number | null;
339
- tokenLimit: number | null;
340
376
  applicationsLimit: number | null;
341
- machineToMachineLimit: number | null;
342
- resourcesLimit: number | null;
377
+ thirdPartyApplicationsLimit: number | null;
343
378
  scopesPerResourceLimit: number | null;
344
379
  socialConnectorsLimit: number | null;
380
+ userRolesLimit: number | null;
345
381
  machineToMachineRolesLimit: number | null;
346
382
  scopesPerRoleLimit: number | null;
347
383
  hooksLimit: number | null;
348
- auditLogsRetentionDays: number | null;
349
- mfaEnabled: boolean;
350
- organizationsEnabled: boolean;
351
- thirdPartyApplicationsLimit: number | null;
352
- tenantMembersLimit: number | null;
353
384
  customJwtEnabled: boolean;
354
385
  subjectTokenEnabled: boolean;
355
386
  bringYourUiEnabled: boolean;
356
- userRolesLimit: number | null;
387
+ collectUserProfileEnabled: boolean;
388
+ tokenLimit: number | null;
389
+ machineToMachineLimit: number | null;
390
+ resourcesLimit: number | null;
357
391
  enterpriseSsoLimit: number | null;
392
+ tenantMembersLimit: number | null;
393
+ mfaEnabled: boolean;
394
+ organizationsEnabled: boolean;
358
395
  organizationsLimit: number | null;
396
+ securityFeaturesEnabled: boolean;
359
397
  idpInitiatedSsoEnabled: boolean;
398
+ samlApplicationsLimit: number | null;
360
399
  };
361
400
  basicQuota: {
401
+ auditLogsRetentionDays: number | null;
362
402
  mauLimit: number | null;
363
- tokenLimit: number | null;
364
403
  applicationsLimit: number | null;
365
- machineToMachineLimit: number | null;
366
- resourcesLimit: number | null;
404
+ thirdPartyApplicationsLimit: number | null;
367
405
  scopesPerResourceLimit: number | null;
368
406
  socialConnectorsLimit: number | null;
407
+ userRolesLimit: number | null;
369
408
  machineToMachineRolesLimit: number | null;
370
409
  scopesPerRoleLimit: number | null;
371
410
  hooksLimit: number | null;
372
- auditLogsRetentionDays: number | null;
373
- mfaEnabled: boolean;
374
- organizationsEnabled: boolean;
375
- thirdPartyApplicationsLimit: number | null;
376
- tenantMembersLimit: number | null;
377
411
  customJwtEnabled: boolean;
378
412
  subjectTokenEnabled: boolean;
379
413
  bringYourUiEnabled: boolean;
380
- userRolesLimit: number | null;
414
+ collectUserProfileEnabled: boolean;
415
+ tokenLimit: number | null;
416
+ machineToMachineLimit: number | null;
417
+ resourcesLimit: number | null;
381
418
  enterpriseSsoLimit: number | null;
419
+ tenantMembersLimit: number | null;
420
+ mfaEnabled: boolean;
421
+ organizationsEnabled: boolean;
382
422
  organizationsLimit: number | null;
423
+ securityFeaturesEnabled: boolean;
383
424
  idpInitiatedSsoEnabled: boolean;
425
+ samlApplicationsLimit: number | null;
384
426
  };
385
427
  }>;
386
- } & {
428
+ };
429
+ post: {
430
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
431
+ usageKey: RealtimeReportableUsageKey;
432
+ }, {
433
+ message: string;
434
+ }>;
435
+ };
436
+ put: {};
437
+ delete: {};
438
+ copy: {};
439
+ head: {};
440
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
441
+ patch: {};
442
+ options: {};
443
+ get: {
387
444
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
388
445
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
389
446
  planId: string;
@@ -397,80 +454,88 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
397
454
  total: number;
398
455
  totalExcludingTax: number | null;
399
456
  } | null | undefined;
400
- isAddOnAvailable?: boolean | undefined;
401
457
  }>;
402
458
  } & {
403
459
  "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
404
460
  usage: {
405
461
  applicationsLimit: number;
406
- machineToMachineLimit: number;
407
- resourcesLimit: number;
462
+ thirdPartyApplicationsLimit: number;
408
463
  scopesPerResourceLimit: number;
409
464
  socialConnectorsLimit: number;
465
+ userRolesLimit: number;
410
466
  machineToMachineRolesLimit: number;
411
467
  scopesPerRoleLimit: number;
412
468
  hooksLimit: number;
413
- mfaEnabled: boolean;
414
- organizationsEnabled: boolean;
415
- thirdPartyApplicationsLimit: number;
416
- tenantMembersLimit: number;
417
469
  customJwtEnabled: boolean;
418
470
  subjectTokenEnabled: boolean;
419
471
  bringYourUiEnabled: boolean;
420
- userRolesLimit: number;
472
+ collectUserProfileEnabled: boolean;
473
+ machineToMachineLimit: number;
474
+ resourcesLimit: number;
421
475
  enterpriseSsoLimit: number;
476
+ tenantMembersLimit: number;
477
+ mfaEnabled: boolean;
478
+ organizationsEnabled: boolean;
422
479
  organizationsLimit: number;
480
+ securityFeaturesEnabled: boolean;
423
481
  idpInitiatedSsoEnabled: boolean;
482
+ samlApplicationsLimit: number;
424
483
  };
425
484
  resources: Record<string, number>;
426
485
  roles: Record<string, number>;
427
486
  quota: {
487
+ auditLogsRetentionDays: number | null;
428
488
  mauLimit: number | null;
429
- tokenLimit: number | null;
430
489
  applicationsLimit: number | null;
431
- machineToMachineLimit: number | null;
432
- resourcesLimit: number | null;
490
+ thirdPartyApplicationsLimit: number | null;
433
491
  scopesPerResourceLimit: number | null;
434
492
  socialConnectorsLimit: number | null;
493
+ userRolesLimit: number | null;
435
494
  machineToMachineRolesLimit: number | null;
436
495
  scopesPerRoleLimit: number | null;
437
496
  hooksLimit: number | null;
438
- auditLogsRetentionDays: number | null;
439
- mfaEnabled: boolean;
440
- organizationsEnabled: boolean;
441
- thirdPartyApplicationsLimit: number | null;
442
- tenantMembersLimit: number | null;
443
497
  customJwtEnabled: boolean;
444
498
  subjectTokenEnabled: boolean;
445
499
  bringYourUiEnabled: boolean;
446
- userRolesLimit: number | null;
500
+ collectUserProfileEnabled: boolean;
501
+ tokenLimit: number | null;
502
+ machineToMachineLimit: number | null;
503
+ resourcesLimit: number | null;
447
504
  enterpriseSsoLimit: number | null;
505
+ tenantMembersLimit: number | null;
506
+ mfaEnabled: boolean;
507
+ organizationsEnabled: boolean;
448
508
  organizationsLimit: number | null;
509
+ securityFeaturesEnabled: boolean;
449
510
  idpInitiatedSsoEnabled: boolean;
511
+ samlApplicationsLimit: number | null;
450
512
  };
451
513
  basicQuota: {
514
+ auditLogsRetentionDays: number | null;
452
515
  mauLimit: number | null;
453
- tokenLimit: number | null;
454
516
  applicationsLimit: number | null;
455
- machineToMachineLimit: number | null;
456
- resourcesLimit: number | null;
517
+ thirdPartyApplicationsLimit: number | null;
457
518
  scopesPerResourceLimit: number | null;
458
519
  socialConnectorsLimit: number | null;
520
+ userRolesLimit: number | null;
459
521
  machineToMachineRolesLimit: number | null;
460
522
  scopesPerRoleLimit: number | null;
461
523
  hooksLimit: number | null;
462
- auditLogsRetentionDays: number | null;
463
- mfaEnabled: boolean;
464
- organizationsEnabled: boolean;
465
- thirdPartyApplicationsLimit: number | null;
466
- tenantMembersLimit: number | null;
467
524
  customJwtEnabled: boolean;
468
525
  subjectTokenEnabled: boolean;
469
526
  bringYourUiEnabled: boolean;
470
- userRolesLimit: number | null;
527
+ collectUserProfileEnabled: boolean;
528
+ tokenLimit: number | null;
529
+ machineToMachineLimit: number | null;
530
+ resourcesLimit: number | null;
471
531
  enterpriseSsoLimit: number | null;
532
+ tenantMembersLimit: number | null;
533
+ mfaEnabled: boolean;
534
+ organizationsEnabled: boolean;
472
535
  organizationsLimit: number | null;
536
+ securityFeaturesEnabled: boolean;
473
537
  idpInitiatedSsoEnabled: boolean;
538
+ samlApplicationsLimit: number | null;
474
539
  };
475
540
  }>;
476
541
  } & {
@@ -478,12 +543,51 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
478
543
  mauLimit: number;
479
544
  tokenLimit: number;
480
545
  }>;
546
+ } & {
547
+ "/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", {
548
+ id: string;
549
+ name: string | null;
550
+ createdAt: Date;
551
+ defaultPriceId: string | null;
552
+ unitPrice: number | null;
553
+ type: LogtoSkuType;
554
+ quota: {
555
+ auditLogsRetentionDays?: number | null | undefined;
556
+ mauLimit?: number | null | undefined;
557
+ applicationsLimit?: number | null | undefined;
558
+ thirdPartyApplicationsLimit?: number | null | undefined;
559
+ scopesPerResourceLimit?: number | null | undefined;
560
+ socialConnectorsLimit?: number | null | undefined;
561
+ userRolesLimit?: number | null | undefined;
562
+ machineToMachineRolesLimit?: number | null | undefined;
563
+ scopesPerRoleLimit?: number | null | undefined;
564
+ hooksLimit?: number | null | undefined;
565
+ customJwtEnabled?: boolean | undefined;
566
+ subjectTokenEnabled?: boolean | undefined;
567
+ bringYourUiEnabled?: boolean | undefined;
568
+ collectUserProfileEnabled?: boolean | undefined;
569
+ tokenLimit?: number | null | undefined;
570
+ machineToMachineLimit?: number | null | undefined;
571
+ resourcesLimit?: number | null | undefined;
572
+ enterpriseSsoLimit?: number | null | undefined;
573
+ tenantMembersLimit?: number | null | undefined;
574
+ mfaEnabled?: boolean | undefined;
575
+ organizationsEnabled?: boolean | undefined;
576
+ organizationsLimit?: number | null | undefined;
577
+ securityFeaturesEnabled?: boolean | undefined;
578
+ idpInitiatedSsoEnabled?: boolean | undefined;
579
+ samlApplicationsLimit?: number | null | undefined;
580
+ };
581
+ isDefault: boolean;
582
+ updatedAt: Date;
583
+ productId: string | null;
584
+ }>>>;
481
585
  } & {
482
586
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
483
587
  invoices: {
484
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
485
588
  id: string;
486
589
  createdAt: Date;
590
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
487
591
  updatedAt: Date;
488
592
  customerId: string | null;
489
593
  billingReason: string | null;
@@ -491,6 +595,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
491
595
  periodEnd: Date;
492
596
  amountDue: number;
493
597
  amountPaid: number;
598
+ basicSkuId: string | null;
494
599
  subscriptionId: string | null;
495
600
  hostedInvoiceUrl: string | null;
496
601
  invoicePdf: string | null;
@@ -502,37 +607,41 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
502
607
  "/tenants/:tenantId/available-skus": import("@withtyped/server").PathGuard<"/:tenantId/available-skus", {
503
608
  type?: LogtoSkuType | undefined;
504
609
  }, unknown, {
505
- type: LogtoSkuType;
506
610
  id: string;
507
611
  name: string | null;
612
+ createdAt: Date;
613
+ defaultPriceId: string | null;
614
+ unitPrice: number | null;
615
+ type: LogtoSkuType;
508
616
  quota: {
617
+ auditLogsRetentionDays?: number | null | undefined;
509
618
  mauLimit?: number | null | undefined;
510
- tokenLimit?: number | null | undefined;
511
619
  applicationsLimit?: number | null | undefined;
512
- machineToMachineLimit?: number | null | undefined;
513
- resourcesLimit?: number | null | undefined;
620
+ thirdPartyApplicationsLimit?: number | null | undefined;
514
621
  scopesPerResourceLimit?: number | null | undefined;
515
622
  socialConnectorsLimit?: number | null | undefined;
623
+ userRolesLimit?: number | null | undefined;
516
624
  machineToMachineRolesLimit?: number | null | undefined;
517
625
  scopesPerRoleLimit?: number | null | undefined;
518
626
  hooksLimit?: number | null | undefined;
519
- auditLogsRetentionDays?: number | null | undefined;
520
- mfaEnabled?: boolean | undefined;
521
- organizationsEnabled?: boolean | undefined;
522
- thirdPartyApplicationsLimit?: number | null | undefined;
523
- tenantMembersLimit?: number | null | undefined;
524
627
  customJwtEnabled?: boolean | undefined;
525
628
  subjectTokenEnabled?: boolean | undefined;
526
629
  bringYourUiEnabled?: boolean | undefined;
527
- userRolesLimit?: number | null | undefined;
630
+ collectUserProfileEnabled?: boolean | undefined;
631
+ tokenLimit?: number | null | undefined;
632
+ machineToMachineLimit?: number | null | undefined;
633
+ resourcesLimit?: number | null | undefined;
528
634
  enterpriseSsoLimit?: number | null | undefined;
635
+ tenantMembersLimit?: number | null | undefined;
636
+ mfaEnabled?: boolean | undefined;
637
+ organizationsEnabled?: boolean | undefined;
529
638
  organizationsLimit?: number | null | undefined;
639
+ securityFeaturesEnabled?: boolean | undefined;
530
640
  idpInitiatedSsoEnabled?: boolean | undefined;
641
+ samlApplicationsLimit?: number | null | undefined;
531
642
  };
532
- createdAt: Date;
643
+ isDefault: boolean;
533
644
  updatedAt: Date;
534
- defaultPriceId: string | null;
535
- unitPrice: number | null;
536
645
  productId: string | null;
537
646
  }[]>;
538
647
  } & {
@@ -541,12 +650,6 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
541
650
  }>;
542
651
  };
543
652
  post: {
544
- "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
545
- usageKey: RealtimeReportableUsageKey;
546
- }, {
547
- message: string;
548
- }>;
549
- } & {
550
653
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
551
654
  callbackUrl?: string | undefined;
552
655
  }, {
@@ -572,11 +675,14 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
572
675
  post: {
573
676
  "/services/mails": import("@withtyped/server").PathGuard<"/mails", unknown, {
574
677
  data: {
575
- type: TemplateType | VerificationCodeType;
678
+ type: TemplateType;
576
679
  payload: {
577
- code?: string | undefined;
578
680
  link?: string | undefined;
579
- } & Record<string, string> & {
681
+ code?: string | undefined;
682
+ locale?: string | undefined;
683
+ } & {
684
+ [k: string]: unknown;
685
+ } & {
580
686
  senderName?: string | undefined;
581
687
  companyInformation?: string | undefined;
582
688
  appLogo?: string | undefined;
@@ -587,27 +693,30 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
587
693
  } & {
588
694
  "/services/send-sms": import("@withtyped/server").PathGuard<"/send-sms", unknown, {
589
695
  data: {
590
- type: TemplateType | VerificationCodeType;
696
+ type: TemplateType;
591
697
  to: string;
592
698
  payload: {
593
699
  code?: string | undefined;
594
700
  link?: string | undefined;
595
- } & Record<string, string>;
701
+ locale?: string | undefined;
702
+ } & {
703
+ [k: string]: unknown;
704
+ };
596
705
  };
597
706
  }, unknown>;
598
707
  } & {
599
708
  "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
600
709
  isTest?: string | undefined;
601
710
  }, {
711
+ token: Record<string, Json>;
602
712
  context: Record<string, Json>;
603
- script: string;
604
713
  tokenType: LogtoJwtTokenKeyType.AccessToken;
605
- token: Record<string, Json>;
714
+ script: string;
606
715
  environmentVariables?: Record<string, string> | undefined;
607
716
  } | {
608
- script: string;
609
- tokenType: LogtoJwtTokenKeyType.ClientCredentials;
610
717
  token: Record<string, Json>;
718
+ tokenType: LogtoJwtTokenKeyType.ClientCredentials;
719
+ script: string;
611
720
  environmentVariables?: Record<string, string> | undefined;
612
721
  }, Record<string, unknown>>;
613
722
  };
@@ -635,37 +744,41 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
635
744
  "/skus": import("@withtyped/server").PathGuard<"/", {
636
745
  type?: LogtoSkuType | undefined;
637
746
  }, unknown, {
638
- type: LogtoSkuType;
639
747
  id: string;
640
748
  name: string | null;
749
+ createdAt: Date;
750
+ defaultPriceId: string | null;
751
+ unitPrice: number | null;
752
+ type: LogtoSkuType;
641
753
  quota: {
754
+ auditLogsRetentionDays?: number | null | undefined;
642
755
  mauLimit?: number | null | undefined;
643
- tokenLimit?: number | null | undefined;
644
756
  applicationsLimit?: number | null | undefined;
645
- machineToMachineLimit?: number | null | undefined;
646
- resourcesLimit?: number | null | undefined;
757
+ thirdPartyApplicationsLimit?: number | null | undefined;
647
758
  scopesPerResourceLimit?: number | null | undefined;
648
759
  socialConnectorsLimit?: number | null | undefined;
760
+ userRolesLimit?: number | null | undefined;
649
761
  machineToMachineRolesLimit?: number | null | undefined;
650
762
  scopesPerRoleLimit?: number | null | undefined;
651
763
  hooksLimit?: number | null | undefined;
652
- auditLogsRetentionDays?: number | null | undefined;
653
- mfaEnabled?: boolean | undefined;
654
- organizationsEnabled?: boolean | undefined;
655
- thirdPartyApplicationsLimit?: number | null | undefined;
656
- tenantMembersLimit?: number | null | undefined;
657
764
  customJwtEnabled?: boolean | undefined;
658
765
  subjectTokenEnabled?: boolean | undefined;
659
766
  bringYourUiEnabled?: boolean | undefined;
660
- userRolesLimit?: number | null | undefined;
767
+ collectUserProfileEnabled?: boolean | undefined;
768
+ tokenLimit?: number | null | undefined;
769
+ machineToMachineLimit?: number | null | undefined;
770
+ resourcesLimit?: number | null | undefined;
661
771
  enterpriseSsoLimit?: number | null | undefined;
772
+ tenantMembersLimit?: number | null | undefined;
773
+ mfaEnabled?: boolean | undefined;
774
+ organizationsEnabled?: boolean | undefined;
662
775
  organizationsLimit?: number | null | undefined;
776
+ securityFeaturesEnabled?: boolean | undefined;
663
777
  idpInitiatedSsoEnabled?: boolean | undefined;
778
+ samlApplicationsLimit?: number | null | undefined;
664
779
  };
665
- createdAt: Date;
780
+ isDefault: boolean;
666
781
  updatedAt: Date;
667
- defaultPriceId: string | null;
668
- unitPrice: number | null;
669
782
  productId: string | null;
670
783
  }[]>;
671
784
  };
@@ -682,74 +795,96 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
682
795
  mfaEnabled?: boolean | undefined;
683
796
  organizationsEnabled?: boolean | undefined;
684
797
  organizationsLimit?: number | null | undefined;
798
+ securityFeaturesEnabled?: boolean | undefined;
799
+ userRolesLimit?: number | null | undefined;
800
+ machineToMachineRolesLimit?: number | null | undefined;
801
+ thirdPartyApplicationsLimit?: number | null | undefined;
802
+ samlApplicationsLimit?: number | null | undefined;
803
+ auditLogsRetentionDays?: number | null | undefined;
685
804
  mauLimit?: number | null | undefined;
686
805
  applicationsLimit?: number | null | undefined;
687
806
  scopesPerResourceLimit?: number | null | undefined;
688
807
  socialConnectorsLimit?: number | null | undefined;
689
- machineToMachineRolesLimit?: number | null | undefined;
690
808
  scopesPerRoleLimit?: number | null | undefined;
691
- auditLogsRetentionDays?: number | null | undefined;
692
- thirdPartyApplicationsLimit?: number | null | undefined;
693
809
  customJwtEnabled?: boolean | undefined;
694
810
  subjectTokenEnabled?: boolean | undefined;
695
811
  bringYourUiEnabled?: boolean | undefined;
696
- userRolesLimit?: number | null | undefined;
812
+ collectUserProfileEnabled?: boolean | undefined;
697
813
  idpInitiatedSsoEnabled?: boolean | undefined;
698
814
  };
815
+ isDefault?: boolean | undefined;
699
816
  } | {
700
817
  type: LogtoSkuType.Basic;
701
818
  quota: {
819
+ auditLogsRetentionDays: number | null;
702
820
  mauLimit: number | null;
703
- tokenLimit: number | null;
704
821
  applicationsLimit: number | null;
705
- machineToMachineLimit: number | null;
706
- resourcesLimit: number | null;
822
+ thirdPartyApplicationsLimit: number | null;
707
823
  scopesPerResourceLimit: number | null;
708
824
  socialConnectorsLimit: number | null;
825
+ userRolesLimit: number | null;
709
826
  machineToMachineRolesLimit: number | null;
710
827
  scopesPerRoleLimit: number | null;
711
828
  hooksLimit: number | null;
712
- auditLogsRetentionDays: number | null;
713
- mfaEnabled: boolean;
714
- organizationsEnabled: boolean;
715
- thirdPartyApplicationsLimit: number | null;
716
- tenantMembersLimit: number | null;
717
829
  customJwtEnabled: boolean;
718
830
  subjectTokenEnabled: boolean;
719
831
  bringYourUiEnabled: boolean;
720
- userRolesLimit: number | null;
832
+ collectUserProfileEnabled: boolean;
833
+ tokenLimit: number | null;
834
+ machineToMachineLimit: number | null;
835
+ resourcesLimit: number | null;
721
836
  enterpriseSsoLimit: number | null;
837
+ tenantMembersLimit: number | null;
838
+ mfaEnabled: boolean;
839
+ organizationsEnabled: boolean;
722
840
  organizationsLimit: number | null;
841
+ securityFeaturesEnabled: boolean;
723
842
  idpInitiatedSsoEnabled: boolean;
843
+ samlApplicationsLimit: number | null;
844
+ };
845
+ addOnRelations: {
846
+ tokenLimit?: string | undefined;
847
+ machineToMachineLimit?: string | undefined;
848
+ resourcesLimit?: string | undefined;
849
+ enterpriseSsoLimit?: string | undefined;
850
+ tenantMembersLimit?: string | undefined;
851
+ mfaEnabled?: string | undefined;
852
+ organizationsLimit?: string | undefined;
853
+ securityFeaturesEnabled?: string | undefined;
724
854
  };
855
+ isDefault?: boolean | undefined;
725
856
  }, {
726
857
  id: string;
727
858
  createdAt: Date;
728
859
  type: LogtoSkuType;
860
+ isDefault: boolean;
729
861
  updatedAt: Date;
730
862
  quota: {
863
+ auditLogsRetentionDays?: number | null | undefined;
731
864
  mauLimit?: number | null | undefined;
732
- tokenLimit?: number | null | undefined;
733
865
  applicationsLimit?: number | null | undefined;
734
- machineToMachineLimit?: number | null | undefined;
735
- resourcesLimit?: number | null | undefined;
866
+ thirdPartyApplicationsLimit?: number | null | undefined;
736
867
  scopesPerResourceLimit?: number | null | undefined;
737
868
  socialConnectorsLimit?: number | null | undefined;
869
+ userRolesLimit?: number | null | undefined;
738
870
  machineToMachineRolesLimit?: number | null | undefined;
739
871
  scopesPerRoleLimit?: number | null | undefined;
740
872
  hooksLimit?: number | null | undefined;
741
- auditLogsRetentionDays?: number | null | undefined;
742
- mfaEnabled?: boolean | undefined;
743
- organizationsEnabled?: boolean | undefined;
744
- thirdPartyApplicationsLimit?: number | null | undefined;
745
- tenantMembersLimit?: number | null | undefined;
746
873
  customJwtEnabled?: boolean | undefined;
747
874
  subjectTokenEnabled?: boolean | undefined;
748
875
  bringYourUiEnabled?: boolean | undefined;
749
- userRolesLimit?: number | null | undefined;
876
+ collectUserProfileEnabled?: boolean | undefined;
877
+ tokenLimit?: number | null | undefined;
878
+ machineToMachineLimit?: number | null | undefined;
879
+ resourcesLimit?: number | null | undefined;
750
880
  enterpriseSsoLimit?: number | null | undefined;
881
+ tenantMembersLimit?: number | null | undefined;
882
+ mfaEnabled?: boolean | undefined;
883
+ organizationsEnabled?: boolean | undefined;
751
884
  organizationsLimit?: number | null | undefined;
885
+ securityFeaturesEnabled?: boolean | undefined;
752
886
  idpInitiatedSsoEnabled?: boolean | undefined;
887
+ samlApplicationsLimit?: number | null | undefined;
753
888
  };
754
889
  }>;
755
890
  } & {
@@ -761,10 +896,22 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
761
896
  }, {
762
897
  productId: string;
763
898
  }>;
899
+ } & {
900
+ "/skus/basic-sku-usage-add-on-relations": import("@withtyped/server").PathGuard<"/basic-sku-usage-add-on-relations", unknown, {
901
+ basicSkuId: string;
902
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit";
903
+ addOnSkuId: string;
904
+ }, {
905
+ basicSkuId: string;
906
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit";
907
+ addOnSkuId: string;
908
+ }>;
764
909
  };
765
910
  put: {};
766
911
  delete: {
767
912
  "/skus/:skuId": import("@withtyped/server").PathGuard<"/:skuId", unknown, unknown, unknown>;
913
+ } & {
914
+ "/skus/basic-sku-usage-add-on-relations/:basicSkuId/:usageKey": import("@withtyped/server").PathGuard<"/basic-sku-usage-add-on-relations/:basicSkuId/:usageKey", unknown, unknown, unknown>;
768
915
  };
769
916
  copy: {};
770
917
  head: {};
@@ -779,19 +926,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
779
926
  status: "open" | "complete" | "expired";
780
927
  tenantId: string | null;
781
928
  updatedAt: Date;
782
- planId: string | null;
783
929
  skuId: string | null;
930
+ planId: string | null;
784
931
  }>;
785
932
  };
786
933
  post: {
787
934
  "/checkout-session": import("@withtyped/server").PathGuard<"/", unknown, {
788
935
  successCallbackUrl: string;
789
936
  tenantId?: string | undefined;
790
- planId?: string | undefined;
791
937
  skuId?: string | undefined;
792
938
  tenantName?: string | undefined;
793
939
  tenantTag?: TenantTag | undefined;
794
- tenantRegionName?: RegionName | undefined;
940
+ tenantRegionName?: string | undefined;
795
941
  cancelCallbackUrl?: string | undefined;
796
942
  }, {
797
943
  sessionId: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/cloud",
3
- "version": "0.2.5-5e334eb",
3
+ "version": "0.2.5-6279e2e",
4
4
  "description": "Logto Cloud service.",
5
5
  "main": "build/index.js",
6
6
  "author": "Silverhand Inc. <contact@silverhand.io>",
@@ -21,7 +21,7 @@
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
27
  "eslint": "^8.57.0",
@@ -30,10 +30,10 @@
30
30
  "prettier": "^3.0.0",
31
31
  "typescript": "^5.3.3",
32
32
  "vite-tsconfig-paths": "^5.0.0",
33
- "vitest": "^2.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",
@@ -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
  }