@logto/cloud 0.2.5-c14ed4e → 0.2.5-c1f6f94

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 +519 -194
  2. package/package.json +7 -7
@@ -3,21 +3,22 @@
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
+ ];
17
+ export type ReportableUsageKey = (typeof availableReportableUsageKeys)[number];
18
+ export type RealtimeReportableUsageKey = Exclude<ReportableUsageKey, "tokenLimit">;
19
+ declare enum LogtoSkuType {
20
+ Basic = "Basic",
21
+ AddOn = "AddOn"
21
22
  }
22
23
  declare enum TemplateType {
23
24
  /** The template for sending verification code when user is signing in. */
@@ -29,7 +30,11 @@ declare enum TemplateType {
29
30
  /** The template for sending organization invitation. */
30
31
  OrganizationInvitation = "OrganizationInvitation",
31
32
  /** The template for generic usage. */
32
- Generic = "Generic"
33
+ Generic = "Generic",
34
+ /** The template for validating user permission for sensitive operations. */
35
+ UserPermissionValidation = "UserPermissionValidation",
36
+ /** The template for binding a new identifier to an existing account. */
37
+ BindNewIdentifier = "BindNewIdentifier"
33
38
  }
34
39
  declare enum OrganizationInvitationStatus {
35
40
  Pending = "Pending",
@@ -69,10 +74,6 @@ declare enum TenantRole {
69
74
  /** Collaborator of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
70
75
  Collaborator = "collaborator"
71
76
  }
72
- declare enum LogtoSkuType {
73
- Basic = "Basic",
74
- AddOn = "AddOn"
75
- }
76
77
  declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js").default<"affiliate_properties", {
77
78
  createdAt: Date;
78
79
  affiliateId: string;
@@ -88,8 +89,29 @@ declare const Affiliates: import("@withtyped/server/lib/model/index.js").default
88
89
  export type Affiliate = InferModelType<typeof Affiliates>;
89
90
  declare enum RegionName {
90
91
  EU = "EU",
91
- US = "US"
92
+ US = "US",
93
+ AU = "AU",
94
+ JP = "JP",
95
+ CrescLabJP = "CRESCLAB_JP"
92
96
  }
97
+ declare const publicRegionNames: readonly [
98
+ "EU",
99
+ "US",
100
+ "AU",
101
+ "JP"
102
+ ];
103
+ /**
104
+ * The type of region names for the public cloud.
105
+ */
106
+ export type PublicRegionName = (typeof publicRegionNames)[number];
107
+ export type WithAuthContext<Context = RequestContext> = Context & {
108
+ auth: {
109
+ /** The ID of the authenticated subject (`sub`). */
110
+ id: string;
111
+ /** The scopes that the subject has (`scope`). */
112
+ scopes: string[];
113
+ };
114
+ };
93
115
  export type AffiliateData = Affiliate & {
94
116
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
95
117
  };
@@ -120,9 +142,12 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
120
142
  id: string;
121
143
  name: string;
122
144
  createdAt: Date;
145
+ quota: {
146
+ mauLimit: number | null;
147
+ tokenLimit: number | null;
148
+ };
123
149
  usage: {
124
150
  activeUsers: number;
125
- cost: number;
126
151
  tokenUsage: number;
127
152
  };
128
153
  indicator: string;
@@ -133,14 +158,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
133
158
  planId: string;
134
159
  currentPeriodStart: Date;
135
160
  currentPeriodEnd: Date;
161
+ isEnterprisePlan: boolean;
136
162
  id?: string | undefined;
163
+ upcomingInvoice?: {
164
+ subtotal: number;
165
+ subtotalExcludingTax: number | null;
166
+ total: number;
167
+ totalExcludingTax: number | null;
168
+ } | null | undefined;
137
169
  };
138
170
  regionName: RegionName;
139
171
  tag: TenantTag;
140
172
  openInvoices: {
141
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
142
173
  id: string;
143
174
  createdAt: Date;
175
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
144
176
  updatedAt: Date;
145
177
  customerId: string | null;
146
178
  billingReason: string | null;
@@ -148,6 +180,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
148
180
  periodEnd: Date;
149
181
  amountDue: number;
150
182
  amountPaid: number;
183
+ basicSkuId: string | null;
151
184
  subscriptionId: string | null;
152
185
  hostedInvoiceUrl: string | null;
153
186
  invoicePdf: string | null;
@@ -160,9 +193,12 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
160
193
  id: string;
161
194
  name: string;
162
195
  createdAt: Date;
196
+ quota: {
197
+ mauLimit: number | null;
198
+ tokenLimit: number | null;
199
+ };
163
200
  usage: {
164
201
  activeUsers: number;
165
- cost: number;
166
202
  tokenUsage: number;
167
203
  };
168
204
  indicator: string;
@@ -173,14 +209,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
173
209
  planId: string;
174
210
  currentPeriodStart: Date;
175
211
  currentPeriodEnd: Date;
212
+ isEnterprisePlan: boolean;
176
213
  id?: string | undefined;
214
+ upcomingInvoice?: {
215
+ subtotal: number;
216
+ subtotalExcludingTax: number | null;
217
+ total: number;
218
+ totalExcludingTax: number | null;
219
+ } | null | undefined;
177
220
  };
178
221
  regionName: RegionName;
179
222
  tag: TenantTag;
180
223
  openInvoices: {
181
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
182
224
  id: string;
183
225
  createdAt: Date;
226
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
184
227
  updatedAt: Date;
185
228
  customerId: string | null;
186
229
  billingReason: string | null;
@@ -188,6 +231,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
188
231
  periodEnd: Date;
189
232
  amountDue: number;
190
233
  amountPaid: number;
234
+ basicSkuId: string | null;
191
235
  subscriptionId: string | null;
192
236
  hostedInvoiceUrl: string | null;
193
237
  invoicePdf: string | null;
@@ -196,6 +240,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
196
240
  };
197
241
  post: {
198
242
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
243
+ id?: string | undefined;
199
244
  name?: string | undefined;
200
245
  tag?: TenantTag | undefined;
201
246
  regionName?: RegionName | undefined;
@@ -203,9 +248,12 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
203
248
  id: string;
204
249
  name: string;
205
250
  createdAt: Date;
251
+ quota: {
252
+ mauLimit: number | null;
253
+ tokenLimit: number | null;
254
+ };
206
255
  usage: {
207
256
  activeUsers: number;
208
- cost: number;
209
257
  tokenUsage: number;
210
258
  };
211
259
  indicator: string;
@@ -216,14 +264,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
216
264
  planId: string;
217
265
  currentPeriodStart: Date;
218
266
  currentPeriodEnd: Date;
267
+ isEnterprisePlan: boolean;
219
268
  id?: string | undefined;
269
+ upcomingInvoice?: {
270
+ subtotal: number;
271
+ subtotalExcludingTax: number | null;
272
+ total: number;
273
+ totalExcludingTax: number | null;
274
+ } | null | undefined;
220
275
  };
221
276
  regionName: RegionName;
222
277
  tag: TenantTag;
223
278
  openInvoices: {
224
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
225
279
  id: string;
226
280
  createdAt: Date;
281
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
227
282
  updatedAt: Date;
228
283
  customerId: string | null;
229
284
  billingReason: string | null;
@@ -231,6 +286,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
231
286
  periodEnd: Date;
232
287
  amountDue: number;
233
288
  amountPaid: number;
289
+ basicSkuId: string | null;
234
290
  subscriptionId: string | null;
235
291
  hostedInvoiceUrl: string | null;
236
292
  invoicePdf: string | null;
@@ -249,123 +305,284 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
249
305
  get: {
250
306
  "/tenants/my/subscription": import("@withtyped/server").PathGuard<"/my/subscription", unknown, unknown, {
251
307
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
308
+ quota: {
309
+ auditLogsRetentionDays: number | null;
310
+ mauLimit: number | null;
311
+ applicationsLimit: number | null;
312
+ thirdPartyApplicationsLimit: number | null;
313
+ scopesPerResourceLimit: number | null;
314
+ socialConnectorsLimit: number | null;
315
+ userRolesLimit: number | null;
316
+ machineToMachineRolesLimit: number | null;
317
+ scopesPerRoleLimit: number | null;
318
+ hooksLimit: number | null;
319
+ customJwtEnabled: boolean;
320
+ subjectTokenEnabled: boolean;
321
+ bringYourUiEnabled: boolean;
322
+ tokenLimit: number | null;
323
+ machineToMachineLimit: number | null;
324
+ resourcesLimit: number | null;
325
+ enterpriseSsoLimit: number | null;
326
+ tenantMembersLimit: number | null;
327
+ mfaEnabled: boolean;
328
+ organizationsEnabled: boolean;
329
+ organizationsLimit: number | null;
330
+ idpInitiatedSsoEnabled: boolean;
331
+ samlApplicationsLimit: number | null;
332
+ captchaEnabled: boolean;
333
+ };
252
334
  planId: string;
253
335
  currentPeriodStart: Date;
254
336
  currentPeriodEnd: Date;
337
+ isEnterprisePlan: boolean;
255
338
  id?: string | undefined;
339
+ upcomingInvoice?: {
340
+ subtotal: number;
341
+ subtotalExcludingTax: number | null;
342
+ total: number;
343
+ totalExcludingTax: number | null;
344
+ } | null | undefined;
256
345
  }>;
257
346
  } & {
258
- "/tenants/my/subscription/quota": import("@withtyped/server").PathGuard<"/my/subscription/quota", unknown, unknown, {
259
- mauLimit: number | null;
260
- tokenLimit: number | null;
261
- applicationsLimit: number | null;
262
- machineToMachineLimit: number | null;
263
- resourcesLimit: number | null;
264
- scopesPerResourceLimit: number | null;
265
- socialConnectorsLimit: number | null;
266
- machineToMachineRolesLimit: number | null;
267
- scopesPerRoleLimit: number | null;
268
- hooksLimit: number | null;
269
- auditLogsRetentionDays: number | null;
270
- mfaEnabled: boolean;
271
- organizationsEnabled: boolean;
272
- thirdPartyApplicationsLimit: number | null;
273
- tenantMembersLimit: number | null;
274
- customJwtEnabled: boolean;
275
- subjectTokenEnabled: boolean;
276
- bringYourUiEnabled: boolean;
277
- userRolesLimit: number | null;
278
- enterpriseSsoLimit: number | null;
347
+ "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
348
+ usage: {
349
+ applicationsLimit: number;
350
+ thirdPartyApplicationsLimit: number;
351
+ scopesPerResourceLimit: number;
352
+ socialConnectorsLimit: number;
353
+ userRolesLimit: number;
354
+ machineToMachineRolesLimit: number;
355
+ scopesPerRoleLimit: number;
356
+ hooksLimit: number;
357
+ customJwtEnabled: boolean;
358
+ subjectTokenEnabled: boolean;
359
+ bringYourUiEnabled: boolean;
360
+ machineToMachineLimit: number;
361
+ resourcesLimit: number;
362
+ enterpriseSsoLimit: number;
363
+ tenantMembersLimit: number;
364
+ mfaEnabled: boolean;
365
+ organizationsEnabled: boolean;
366
+ organizationsLimit: number;
367
+ idpInitiatedSsoEnabled: boolean;
368
+ samlApplicationsLimit: number;
369
+ captchaEnabled: boolean;
370
+ };
371
+ resources: Record<string, number>;
372
+ roles: Record<string, number>;
373
+ quota: {
374
+ auditLogsRetentionDays: number | null;
375
+ mauLimit: number | null;
376
+ applicationsLimit: number | null;
377
+ thirdPartyApplicationsLimit: number | null;
378
+ scopesPerResourceLimit: number | null;
379
+ socialConnectorsLimit: number | null;
380
+ userRolesLimit: number | null;
381
+ machineToMachineRolesLimit: number | null;
382
+ scopesPerRoleLimit: number | null;
383
+ hooksLimit: number | null;
384
+ customJwtEnabled: boolean;
385
+ subjectTokenEnabled: boolean;
386
+ bringYourUiEnabled: boolean;
387
+ tokenLimit: number | null;
388
+ machineToMachineLimit: number | null;
389
+ resourcesLimit: number | null;
390
+ enterpriseSsoLimit: number | null;
391
+ tenantMembersLimit: number | null;
392
+ mfaEnabled: boolean;
393
+ organizationsEnabled: boolean;
394
+ organizationsLimit: number | null;
395
+ idpInitiatedSsoEnabled: boolean;
396
+ samlApplicationsLimit: number | null;
397
+ captchaEnabled: boolean;
398
+ };
399
+ basicQuota: {
400
+ auditLogsRetentionDays: number | null;
401
+ mauLimit: number | null;
402
+ applicationsLimit: number | null;
403
+ thirdPartyApplicationsLimit: number | null;
404
+ scopesPerResourceLimit: number | null;
405
+ socialConnectorsLimit: number | null;
406
+ userRolesLimit: number | null;
407
+ machineToMachineRolesLimit: number | null;
408
+ scopesPerRoleLimit: number | null;
409
+ hooksLimit: number | null;
410
+ customJwtEnabled: boolean;
411
+ subjectTokenEnabled: boolean;
412
+ bringYourUiEnabled: boolean;
413
+ tokenLimit: number | null;
414
+ machineToMachineLimit: number | null;
415
+ resourcesLimit: number | null;
416
+ enterpriseSsoLimit: number | null;
417
+ tenantMembersLimit: number | null;
418
+ mfaEnabled: boolean;
419
+ organizationsEnabled: boolean;
420
+ organizationsLimit: number | null;
421
+ idpInitiatedSsoEnabled: boolean;
422
+ samlApplicationsLimit: number | null;
423
+ captchaEnabled: boolean;
424
+ };
279
425
  }>;
280
- } & {
281
- "/tenants/my/subscription/usage": import("@withtyped/server").PathGuard<"/my/subscription/usage", unknown, unknown, {
282
- mauLimit: number;
283
- tokenLimit: number;
284
- applicationsLimit: number;
285
- machineToMachineLimit: number;
286
- resourcesLimit: number;
287
- scopesPerResourceLimit: number;
288
- socialConnectorsLimit: number;
289
- machineToMachineRolesLimit: number;
290
- scopesPerRoleLimit: number;
291
- hooksLimit: number;
292
- mfaEnabled: boolean;
293
- organizationsEnabled: boolean;
294
- thirdPartyApplicationsLimit: number;
295
- tenantMembersLimit: number;
296
- customJwtEnabled: boolean;
297
- subjectTokenEnabled: boolean;
298
- bringYourUiEnabled: boolean;
299
- userRolesLimit: number;
300
- enterpriseSsoLimit: number;
426
+ };
427
+ post: {
428
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
429
+ usageKey: RealtimeReportableUsageKey;
430
+ }, {
431
+ message: string;
301
432
  }>;
302
- } & {
303
- "/tenants/my/subscription/usage/:entityName/scopes": import("@withtyped/server").PathGuard<"/my/subscription/usage/:entityName/scopes", {
304
- entityId?: string | undefined;
305
- }, unknown, Record<string, number>>;
306
- } & {
433
+ };
434
+ put: {};
435
+ delete: {};
436
+ copy: {};
437
+ head: {};
438
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
439
+ patch: {};
440
+ options: {};
441
+ get: {
307
442
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
308
443
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
309
444
  planId: string;
310
445
  currentPeriodStart: Date;
311
446
  currentPeriodEnd: Date;
447
+ isEnterprisePlan: boolean;
312
448
  id?: string | undefined;
449
+ upcomingInvoice?: {
450
+ subtotal: number;
451
+ subtotalExcludingTax: number | null;
452
+ total: number;
453
+ totalExcludingTax: number | null;
454
+ } | null | undefined;
313
455
  }>;
314
456
  } & {
315
- "/tenants/:tenantId/subscription/quota": import("@withtyped/server").PathGuard<"/:tenantId/subscription/quota", unknown, unknown, {
316
- mauLimit: number | null;
317
- tokenLimit: number | null;
318
- applicationsLimit: number | null;
319
- machineToMachineLimit: number | null;
320
- resourcesLimit: number | null;
321
- scopesPerResourceLimit: number | null;
322
- socialConnectorsLimit: number | null;
323
- machineToMachineRolesLimit: number | null;
324
- scopesPerRoleLimit: number | null;
325
- hooksLimit: number | null;
326
- auditLogsRetentionDays: number | null;
327
- mfaEnabled: boolean;
328
- organizationsEnabled: boolean;
329
- thirdPartyApplicationsLimit: number | null;
330
- tenantMembersLimit: number | null;
331
- customJwtEnabled: boolean;
332
- subjectTokenEnabled: boolean;
333
- bringYourUiEnabled: boolean;
334
- userRolesLimit: number | null;
335
- enterpriseSsoLimit: number | null;
457
+ "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
458
+ usage: {
459
+ applicationsLimit: number;
460
+ thirdPartyApplicationsLimit: number;
461
+ scopesPerResourceLimit: number;
462
+ socialConnectorsLimit: number;
463
+ userRolesLimit: number;
464
+ machineToMachineRolesLimit: number;
465
+ scopesPerRoleLimit: number;
466
+ hooksLimit: number;
467
+ customJwtEnabled: boolean;
468
+ subjectTokenEnabled: boolean;
469
+ bringYourUiEnabled: boolean;
470
+ machineToMachineLimit: number;
471
+ resourcesLimit: number;
472
+ enterpriseSsoLimit: number;
473
+ tenantMembersLimit: number;
474
+ mfaEnabled: boolean;
475
+ organizationsEnabled: boolean;
476
+ organizationsLimit: number;
477
+ idpInitiatedSsoEnabled: boolean;
478
+ samlApplicationsLimit: number;
479
+ captchaEnabled: boolean;
480
+ };
481
+ resources: Record<string, number>;
482
+ roles: Record<string, number>;
483
+ quota: {
484
+ auditLogsRetentionDays: number | null;
485
+ mauLimit: number | null;
486
+ applicationsLimit: number | null;
487
+ thirdPartyApplicationsLimit: number | null;
488
+ scopesPerResourceLimit: number | null;
489
+ socialConnectorsLimit: number | null;
490
+ userRolesLimit: number | null;
491
+ machineToMachineRolesLimit: number | null;
492
+ scopesPerRoleLimit: number | null;
493
+ hooksLimit: number | null;
494
+ customJwtEnabled: boolean;
495
+ subjectTokenEnabled: boolean;
496
+ bringYourUiEnabled: boolean;
497
+ tokenLimit: number | null;
498
+ machineToMachineLimit: number | null;
499
+ resourcesLimit: number | null;
500
+ enterpriseSsoLimit: number | null;
501
+ tenantMembersLimit: number | null;
502
+ mfaEnabled: boolean;
503
+ organizationsEnabled: boolean;
504
+ organizationsLimit: number | null;
505
+ idpInitiatedSsoEnabled: boolean;
506
+ samlApplicationsLimit: number | null;
507
+ captchaEnabled: boolean;
508
+ };
509
+ basicQuota: {
510
+ auditLogsRetentionDays: number | null;
511
+ mauLimit: number | null;
512
+ applicationsLimit: number | null;
513
+ thirdPartyApplicationsLimit: number | null;
514
+ scopesPerResourceLimit: number | null;
515
+ socialConnectorsLimit: number | null;
516
+ userRolesLimit: number | null;
517
+ machineToMachineRolesLimit: number | null;
518
+ scopesPerRoleLimit: number | null;
519
+ hooksLimit: number | null;
520
+ customJwtEnabled: boolean;
521
+ subjectTokenEnabled: boolean;
522
+ bringYourUiEnabled: boolean;
523
+ tokenLimit: number | null;
524
+ machineToMachineLimit: number | null;
525
+ resourcesLimit: number | null;
526
+ enterpriseSsoLimit: number | null;
527
+ tenantMembersLimit: number | null;
528
+ mfaEnabled: boolean;
529
+ organizationsEnabled: boolean;
530
+ organizationsLimit: number | null;
531
+ idpInitiatedSsoEnabled: boolean;
532
+ samlApplicationsLimit: number | null;
533
+ captchaEnabled: boolean;
534
+ };
336
535
  }>;
337
536
  } & {
338
- "/tenants/:tenantId/subscription/usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/usage", unknown, unknown, {
537
+ "/tenants/:tenantId/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/periodic-usage", unknown, unknown, {
339
538
  mauLimit: number;
340
539
  tokenLimit: number;
341
- applicationsLimit: number;
342
- machineToMachineLimit: number;
343
- resourcesLimit: number;
344
- scopesPerResourceLimit: number;
345
- socialConnectorsLimit: number;
346
- machineToMachineRolesLimit: number;
347
- scopesPerRoleLimit: number;
348
- hooksLimit: number;
349
- mfaEnabled: boolean;
350
- organizationsEnabled: boolean;
351
- thirdPartyApplicationsLimit: number;
352
- tenantMembersLimit: number;
353
- customJwtEnabled: boolean;
354
- subjectTokenEnabled: boolean;
355
- bringYourUiEnabled: boolean;
356
- userRolesLimit: number;
357
- enterpriseSsoLimit: number;
358
540
  }>;
359
541
  } & {
360
- "/tenants/:tenantId/subscription/usage/:entityName/scopes": import("@withtyped/server").PathGuard<"/:tenantId/subscription/usage/:entityName/scopes", {
361
- entityId?: string | undefined;
362
- }, unknown, Record<string, number>>;
542
+ "/tenants/:tenantId/subscription/add-on-skus": import("@withtyped/server").PathGuard<"/:tenantId/subscription/add-on-skus", unknown, unknown, {
543
+ tokenLimit?: {
544
+ id: string;
545
+ name: string | null;
546
+ createdAt: Date;
547
+ defaultPriceId: string | null;
548
+ unitPrice: number | null;
549
+ type: LogtoSkuType;
550
+ quota: {
551
+ auditLogsRetentionDays?: number | null | undefined;
552
+ mauLimit?: number | null | undefined;
553
+ applicationsLimit?: number | null | undefined;
554
+ thirdPartyApplicationsLimit?: number | null | undefined;
555
+ scopesPerResourceLimit?: number | null | undefined;
556
+ socialConnectorsLimit?: number | null | undefined;
557
+ userRolesLimit?: number | null | undefined;
558
+ machineToMachineRolesLimit?: number | null | undefined;
559
+ scopesPerRoleLimit?: number | null | undefined;
560
+ hooksLimit?: number | null | undefined;
561
+ customJwtEnabled?: boolean | undefined;
562
+ subjectTokenEnabled?: boolean | undefined;
563
+ bringYourUiEnabled?: boolean | undefined;
564
+ tokenLimit?: number | null | undefined;
565
+ machineToMachineLimit?: number | null | undefined;
566
+ resourcesLimit?: number | null | undefined;
567
+ enterpriseSsoLimit?: number | null | undefined;
568
+ tenantMembersLimit?: number | null | undefined;
569
+ mfaEnabled?: boolean | undefined;
570
+ organizationsEnabled?: boolean | undefined;
571
+ organizationsLimit?: number | null | undefined;
572
+ idpInitiatedSsoEnabled?: boolean | undefined;
573
+ samlApplicationsLimit?: number | null | undefined;
574
+ captchaEnabled?: boolean | undefined;
575
+ };
576
+ updatedAt: Date;
577
+ productId: string | null;
578
+ } | undefined;
579
+ }>;
363
580
  } & {
364
581
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
365
582
  invoices: {
366
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
367
583
  id: string;
368
584
  createdAt: Date;
585
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
369
586
  updatedAt: Date;
370
587
  customerId: string | null;
371
588
  billingReason: string | null;
@@ -373,22 +590,57 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
373
590
  periodEnd: Date;
374
591
  amountDue: number;
375
592
  amountPaid: number;
593
+ basicSkuId: string | null;
376
594
  subscriptionId: string | null;
377
595
  hostedInvoiceUrl: string | null;
378
596
  invoicePdf: string | null;
379
597
  planName: string | null;
598
+ skuId?: string | null | undefined;
380
599
  }[];
381
600
  }>;
601
+ } & {
602
+ "/tenants/:tenantId/available-skus": import("@withtyped/server").PathGuard<"/:tenantId/available-skus", {
603
+ type?: LogtoSkuType | undefined;
604
+ }, unknown, {
605
+ id: string;
606
+ name: string | null;
607
+ createdAt: Date;
608
+ defaultPriceId: string | null;
609
+ unitPrice: number | null;
610
+ type: LogtoSkuType;
611
+ quota: {
612
+ auditLogsRetentionDays?: number | null | undefined;
613
+ mauLimit?: number | null | undefined;
614
+ applicationsLimit?: number | null | undefined;
615
+ thirdPartyApplicationsLimit?: number | null | undefined;
616
+ scopesPerResourceLimit?: number | null | undefined;
617
+ socialConnectorsLimit?: number | null | undefined;
618
+ userRolesLimit?: number | null | undefined;
619
+ machineToMachineRolesLimit?: number | null | undefined;
620
+ scopesPerRoleLimit?: number | null | undefined;
621
+ hooksLimit?: number | null | undefined;
622
+ customJwtEnabled?: boolean | undefined;
623
+ subjectTokenEnabled?: boolean | undefined;
624
+ bringYourUiEnabled?: boolean | undefined;
625
+ tokenLimit?: number | null | undefined;
626
+ machineToMachineLimit?: number | null | undefined;
627
+ resourcesLimit?: number | null | undefined;
628
+ enterpriseSsoLimit?: number | null | undefined;
629
+ tenantMembersLimit?: number | null | undefined;
630
+ mfaEnabled?: boolean | undefined;
631
+ organizationsEnabled?: boolean | undefined;
632
+ organizationsLimit?: number | null | undefined;
633
+ idpInitiatedSsoEnabled?: boolean | undefined;
634
+ samlApplicationsLimit?: number | null | undefined;
635
+ captchaEnabled?: boolean | undefined;
636
+ };
637
+ updatedAt: Date;
638
+ productId: string | null;
639
+ }[]>;
382
640
  } & {
383
641
  "/tenants/:tenantId/invoices/:invoiceId/hosted-invoice-url": import("@withtyped/server").PathGuard<"/:tenantId/invoices/:invoiceId/hosted-invoice-url", unknown, unknown, {
384
642
  hostedInvoiceUrl: string;
385
643
  }>;
386
- } & {
387
- "/tenants/:tenantId/usage": import("@withtyped/server").PathGuard<"/:tenantId/usage", unknown, unknown, {
388
- activeUsers: number;
389
- cost: number;
390
- tokenUsage: number;
391
- }>;
392
644
  };
393
645
  post: {
394
646
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
@@ -416,11 +668,14 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
416
668
  post: {
417
669
  "/services/mails": import("@withtyped/server").PathGuard<"/mails", unknown, {
418
670
  data: {
419
- type: TemplateType | VerificationCodeType;
671
+ type: TemplateType;
420
672
  payload: {
421
- code?: string | undefined;
422
673
  link?: string | undefined;
423
- } & Record<string, string> & {
674
+ code?: string | undefined;
675
+ locale?: string | undefined;
676
+ } & {
677
+ [k: string]: unknown;
678
+ } & {
424
679
  senderName?: string | undefined;
425
680
  companyInformation?: string | undefined;
426
681
  appLogo?: string | undefined;
@@ -431,27 +686,30 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
431
686
  } & {
432
687
  "/services/send-sms": import("@withtyped/server").PathGuard<"/send-sms", unknown, {
433
688
  data: {
434
- type: TemplateType | VerificationCodeType;
689
+ type: TemplateType;
435
690
  to: string;
436
691
  payload: {
437
692
  code?: string | undefined;
438
693
  link?: string | undefined;
439
- } & Record<string, string>;
694
+ locale?: string | undefined;
695
+ } & {
696
+ [k: string]: unknown;
697
+ };
440
698
  };
441
699
  }, unknown>;
442
700
  } & {
443
701
  "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
444
702
  isTest?: string | undefined;
445
703
  }, {
704
+ token: Record<string, Json>;
446
705
  context: Record<string, Json>;
447
706
  script: string;
448
707
  tokenType: LogtoJwtTokenKeyType.AccessToken;
449
- token: Record<string, Json>;
450
708
  environmentVariables?: Record<string, string> | undefined;
451
709
  } | {
710
+ token: Record<string, Json>;
452
711
  script: string;
453
712
  tokenType: LogtoJwtTokenKeyType.ClientCredentials;
454
- token: Record<string, Json>;
455
713
  environmentVariables?: Record<string, string> | undefined;
456
714
  }, Record<string, unknown>>;
457
715
  };
@@ -476,96 +734,151 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
476
734
  patch: {};
477
735
  options: {};
478
736
  get: {
479
- "/subscription-plans": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
737
+ "/skus": import("@withtyped/server").PathGuard<"/", {
738
+ type?: LogtoSkuType | undefined;
739
+ }, unknown, {
480
740
  id: string;
741
+ name: string | null;
481
742
  createdAt: Date;
482
- name: string;
743
+ defaultPriceId: string | null;
744
+ unitPrice: number | null;
745
+ type: LogtoSkuType;
746
+ quota: {
747
+ auditLogsRetentionDays?: number | null | undefined;
748
+ mauLimit?: number | null | undefined;
749
+ applicationsLimit?: number | null | undefined;
750
+ thirdPartyApplicationsLimit?: number | null | undefined;
751
+ scopesPerResourceLimit?: number | null | undefined;
752
+ socialConnectorsLimit?: number | null | undefined;
753
+ userRolesLimit?: number | null | undefined;
754
+ machineToMachineRolesLimit?: number | null | undefined;
755
+ scopesPerRoleLimit?: number | null | undefined;
756
+ hooksLimit?: number | null | undefined;
757
+ customJwtEnabled?: boolean | undefined;
758
+ subjectTokenEnabled?: boolean | undefined;
759
+ bringYourUiEnabled?: boolean | undefined;
760
+ tokenLimit?: number | null | undefined;
761
+ machineToMachineLimit?: number | null | undefined;
762
+ resourcesLimit?: number | null | undefined;
763
+ enterpriseSsoLimit?: number | null | undefined;
764
+ tenantMembersLimit?: number | null | undefined;
765
+ mfaEnabled?: boolean | undefined;
766
+ organizationsEnabled?: boolean | undefined;
767
+ organizationsLimit?: number | null | undefined;
768
+ idpInitiatedSsoEnabled?: boolean | undefined;
769
+ samlApplicationsLimit?: number | null | undefined;
770
+ captchaEnabled?: boolean | undefined;
771
+ };
483
772
  updatedAt: Date;
773
+ productId: string | null;
774
+ }[]>;
775
+ };
776
+ post: {
777
+ "/skus": import("@withtyped/server").PathGuard<"/", unknown, {
778
+ type: LogtoSkuType.AddOn;
779
+ quota: {
780
+ tokenLimit?: number | null | undefined;
781
+ machineToMachineLimit?: number | null | undefined;
782
+ resourcesLimit?: number | null | undefined;
783
+ enterpriseSsoLimit?: number | null | undefined;
784
+ hooksLimit?: number | null | undefined;
785
+ tenantMembersLimit?: number | null | undefined;
786
+ mfaEnabled?: boolean | undefined;
787
+ organizationsEnabled?: boolean | undefined;
788
+ organizationsLimit?: number | null | undefined;
789
+ auditLogsRetentionDays?: number | null | undefined;
790
+ mauLimit?: number | null | undefined;
791
+ applicationsLimit?: number | null | undefined;
792
+ thirdPartyApplicationsLimit?: number | null | undefined;
793
+ scopesPerResourceLimit?: number | null | undefined;
794
+ socialConnectorsLimit?: number | null | undefined;
795
+ userRolesLimit?: number | null | undefined;
796
+ machineToMachineRolesLimit?: number | null | undefined;
797
+ scopesPerRoleLimit?: number | null | undefined;
798
+ customJwtEnabled?: boolean | undefined;
799
+ subjectTokenEnabled?: boolean | undefined;
800
+ bringYourUiEnabled?: boolean | undefined;
801
+ idpInitiatedSsoEnabled?: boolean | undefined;
802
+ samlApplicationsLimit?: number | null | undefined;
803
+ captchaEnabled?: boolean | undefined;
804
+ };
805
+ } | {
806
+ type: LogtoSkuType.Basic;
484
807
  quota: {
808
+ auditLogsRetentionDays: number | null;
485
809
  mauLimit: number | null;
486
- tokenLimit: number | null;
487
810
  applicationsLimit: number | null;
488
- machineToMachineLimit: number | null;
489
- resourcesLimit: number | null;
811
+ thirdPartyApplicationsLimit: number | null;
490
812
  scopesPerResourceLimit: number | null;
491
- customDomainEnabled: boolean;
492
- omniSignInEnabled: boolean;
493
- builtInEmailConnectorEnabled: boolean;
494
813
  socialConnectorsLimit: number | null;
495
- standardConnectorsLimit: number | null;
496
- rolesLimit: number | null;
814
+ userRolesLimit: number | null;
497
815
  machineToMachineRolesLimit: number | null;
498
816
  scopesPerRoleLimit: number | null;
499
817
  hooksLimit: number | null;
500
- auditLogsRetentionDays: number | null;
501
- mfaEnabled: boolean;
502
- organizationsEnabled: boolean;
503
- ssoEnabled: boolean;
504
- thirdPartyApplicationsLimit: number | null;
505
- tenantMembersLimit: number | null;
506
818
  customJwtEnabled: boolean;
507
819
  subjectTokenEnabled: boolean;
508
820
  bringYourUiEnabled: boolean;
821
+ tokenLimit: number | null;
822
+ machineToMachineLimit: number | null;
823
+ resourcesLimit: number | null;
824
+ enterpriseSsoLimit: number | null;
825
+ tenantMembersLimit: number | null;
826
+ mfaEnabled: boolean;
827
+ organizationsEnabled: boolean;
828
+ organizationsLimit: number | null;
829
+ idpInitiatedSsoEnabled: boolean;
830
+ samlApplicationsLimit: number | null;
831
+ captchaEnabled: boolean;
509
832
  };
510
- stripeProducts: {
511
- type: "flat" | "tier1" | "tier2" | "tier3";
512
- id: string;
513
- name: string;
514
- price: {
515
- id: string;
516
- unitAmountDecimal: string;
517
- quantity?: 1 | undefined;
518
- unitAmount?: number | null | undefined;
519
- };
520
- description?: string | undefined;
521
- }[];
522
- }[]>;
523
- };
524
- post: {};
525
- put: {};
526
- delete: {};
527
- copy: {};
528
- head: {};
529
- }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
530
- patch: {};
531
- options: {};
532
- get: {
533
- "/skus": import("@withtyped/server").PathGuard<"/", {
534
- type?: LogtoSkuType | undefined;
535
- }, unknown, {
536
- type: LogtoSkuType;
833
+ addOnRelations: {
834
+ tokenLimit: string;
835
+ };
836
+ }, {
537
837
  id: string;
538
- name: string | null;
838
+ createdAt: Date;
839
+ type: LogtoSkuType;
840
+ updatedAt: Date;
539
841
  quota: {
842
+ auditLogsRetentionDays?: number | null | undefined;
540
843
  mauLimit?: number | null | undefined;
541
- tokenLimit?: number | null | undefined;
542
844
  applicationsLimit?: number | null | undefined;
543
- machineToMachineLimit?: number | null | undefined;
544
- resourcesLimit?: number | null | undefined;
845
+ thirdPartyApplicationsLimit?: number | null | undefined;
545
846
  scopesPerResourceLimit?: number | null | undefined;
546
847
  socialConnectorsLimit?: number | null | undefined;
848
+ userRolesLimit?: number | null | undefined;
547
849
  machineToMachineRolesLimit?: number | null | undefined;
548
850
  scopesPerRoleLimit?: number | null | undefined;
549
851
  hooksLimit?: number | null | undefined;
550
- auditLogsRetentionDays?: number | null | undefined;
551
- mfaEnabled?: boolean | undefined;
552
- organizationsEnabled?: boolean | undefined;
553
- thirdPartyApplicationsLimit?: number | null | undefined;
554
- tenantMembersLimit?: number | null | undefined;
555
852
  customJwtEnabled?: boolean | undefined;
556
853
  subjectTokenEnabled?: boolean | undefined;
557
854
  bringYourUiEnabled?: boolean | undefined;
558
- userRolesLimit?: number | null | undefined;
855
+ tokenLimit?: number | null | undefined;
856
+ machineToMachineLimit?: number | null | undefined;
857
+ resourcesLimit?: number | null | undefined;
559
858
  enterpriseSsoLimit?: number | null | undefined;
859
+ tenantMembersLimit?: number | null | undefined;
860
+ mfaEnabled?: boolean | undefined;
861
+ organizationsEnabled?: boolean | undefined;
862
+ organizationsLimit?: number | null | undefined;
863
+ idpInitiatedSsoEnabled?: boolean | undefined;
864
+ samlApplicationsLimit?: number | null | undefined;
865
+ captchaEnabled?: boolean | undefined;
560
866
  };
561
- createdAt: Date;
562
- updatedAt: Date;
563
- unitPrice: number | null;
564
- }[]>;
867
+ }>;
868
+ } & {
869
+ "/skus/:skuId/products": import("@withtyped/server").PathGuard<"/:skuId/products", {
870
+ isOneTime?: string | undefined;
871
+ }, {
872
+ name: string;
873
+ unitPrice: number;
874
+ }, {
875
+ productId: string;
876
+ }>;
565
877
  };
566
- post: {};
567
878
  put: {};
568
- delete: {};
879
+ delete: {
880
+ "/skus/:skuId": import("@withtyped/server").PathGuard<"/:skuId", unknown, unknown, unknown>;
881
+ };
569
882
  copy: {};
570
883
  head: {};
571
884
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
@@ -579,18 +892,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
579
892
  status: "open" | "complete" | "expired";
580
893
  tenantId: string | null;
581
894
  updatedAt: Date;
582
- planId: string;
895
+ skuId: string | null;
896
+ planId: string | null;
583
897
  }>;
584
898
  };
585
899
  post: {
586
900
  "/checkout-session": import("@withtyped/server").PathGuard<"/", unknown, {
587
- planId: string;
588
901
  successCallbackUrl: string;
589
902
  tenantId?: string | undefined;
903
+ skuId?: string | undefined;
590
904
  tenantName?: string | undefined;
591
905
  tenantTag?: TenantTag | undefined;
592
906
  tenantRegionName?: RegionName | undefined;
593
- skuId?: string | undefined;
594
907
  cancelCallbackUrl?: string | undefined;
595
908
  }, {
596
909
  sessionId: string;
@@ -775,7 +1088,7 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
775
1088
  };
776
1089
  post: {
777
1090
  "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, {
778
- invitee: string;
1091
+ invitee: string | string[];
779
1092
  roleName: TenantRole;
780
1093
  expiresAt?: number | undefined;
781
1094
  }, {
@@ -790,7 +1103,19 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
790
1103
  organizationId: string;
791
1104
  expiresAt: number;
792
1105
  organizationRoles: OrganizationRoleEntity[];
793
- }>;
1106
+ } | {
1107
+ id: string;
1108
+ createdAt: number;
1109
+ status: OrganizationInvitationStatus;
1110
+ tenantId: string;
1111
+ updatedAt: number;
1112
+ inviterId: string | null;
1113
+ invitee: string;
1114
+ acceptedUserId: string | null;
1115
+ organizationId: string;
1116
+ expiresAt: number;
1117
+ organizationRoles: OrganizationRoleEntity[];
1118
+ }[]>;
794
1119
  } & {
795
1120
  "/:tenantId/invitations/:invitationId/message": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/message", unknown, unknown, unknown>;
796
1121
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/cloud",
3
- "version": "0.2.5-c14ed4e",
3
+ "version": "0.2.5-c1f6f94",
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",
@@ -29,11 +29,11 @@
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": "^2.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.1",
53
- "@withtyped/server": "^0.13.6"
52
+ "@silverhand/essentials": "^2.9.2",
53
+ "@withtyped/server": "^0.14.0"
54
54
  },
55
55
  "scripts": {
56
56
  "precommit": "lint-staged",