@logto/cloud 0.2.5-81f06ea → 0.2.5-91ab76c

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 +538 -74
  2. package/package.json +7 -7
@@ -37,6 +37,20 @@ declare enum OrganizationInvitationStatus {
37
37
  Expired = "Expired",
38
38
  Revoked = "Revoked"
39
39
  }
40
+ /** The scopes (permissions) defined by the organization template. */
41
+ export type OrganizationScope = {
42
+ tenantId: string;
43
+ /** The globally unique identifier of the organization scope. */
44
+ id: string;
45
+ /** The organization scope's name, unique within the organization template. */
46
+ name: string;
47
+ /** A brief description of the organization scope. */
48
+ description: string | null;
49
+ };
50
+ declare enum LogtoJwtTokenKeyType {
51
+ AccessToken = "access-token",
52
+ ClientCredentials = "client-credentials"
53
+ }
40
54
  /**
41
55
  * The simplified organization role entity that is returned in the `roles` field
42
56
  * of the organization.
@@ -52,8 +66,25 @@ declare enum TenantTag {
52
66
  declare enum TenantRole {
53
67
  /** Admin of the tenant, who has all permissions. */
54
68
  Admin = "admin",
55
- /** Member of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
56
- Member = "member"
69
+ /** Collaborator of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
70
+ Collaborator = "collaborator"
71
+ }
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"
57
88
  }
58
89
  declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js").default<"affiliate_properties", {
59
90
  createdAt: Date;
@@ -68,11 +99,16 @@ declare const Affiliates: import("@withtyped/server/lib/model/index.js").default
68
99
  id: string;
69
100
  }, "id" | "createdAt", "id" | "createdAt">;
70
101
  export type Affiliate = InferModelType<typeof Affiliates>;
102
+ declare enum RegionName {
103
+ EU = "EU",
104
+ US = "US"
105
+ }
71
106
  export type AffiliateData = Affiliate & {
72
107
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
73
108
  };
74
109
  declare const router: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
75
110
  request: {
111
+ id?: string | undefined;
76
112
  method?: import("@withtyped/server").RequestMethod | undefined;
77
113
  headers: import("http").IncomingHttpHeaders;
78
114
  url: URL;
@@ -80,6 +116,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
80
116
  };
81
117
  }, "request"> & {
82
118
  request: Record<string, unknown> & {
119
+ id?: string | undefined;
83
120
  method?: import("@withtyped/server").RequestMethod | undefined;
84
121
  headers: import("http").IncomingHttpHeaders;
85
122
  url: URL;
@@ -88,16 +125,20 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
88
125
  body?: Json | undefined;
89
126
  bodyRaw?: Buffer | undefined;
90
127
  };
91
- }>, 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<{
128
+ }>, 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<{
92
129
  patch: {
93
130
  "/tenants/:tenantId": import("@withtyped/server").PathGuard<"/:tenantId", unknown, {
94
131
  name?: string | undefined;
95
132
  }, {
96
133
  id: string;
97
134
  name: string;
135
+ quota: {
136
+ mauLimit: number | null;
137
+ tokenLimit: number | null;
138
+ };
139
+ createdAt: Date;
98
140
  usage: {
99
141
  activeUsers: number;
100
- cost: number;
101
142
  tokenUsage: number;
102
143
  };
103
144
  indicator: string;
@@ -108,7 +149,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
108
149
  planId: string;
109
150
  currentPeriodStart: Date;
110
151
  currentPeriodEnd: Date;
152
+ isEnterprisePlan: boolean;
153
+ id?: string | undefined;
154
+ upcomingInvoice?: {
155
+ subtotal: number;
156
+ subtotalExcludingTax: number | null;
157
+ total: number;
158
+ totalExcludingTax: number | null;
159
+ } | null | undefined;
160
+ isAddOnAvailable?: boolean | undefined;
111
161
  };
162
+ regionName: RegionName;
163
+ tag: TenantTag;
112
164
  openInvoices: {
113
165
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
114
166
  id: string;
@@ -124,7 +176,6 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
124
176
  hostedInvoiceUrl: string | null;
125
177
  invoicePdf: string | null;
126
178
  }[];
127
- tag: TenantTag;
128
179
  }>;
129
180
  };
130
181
  options: {};
@@ -132,9 +183,13 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
132
183
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
133
184
  id: string;
134
185
  name: string;
186
+ quota: {
187
+ mauLimit: number | null;
188
+ tokenLimit: number | null;
189
+ };
190
+ createdAt: Date;
135
191
  usage: {
136
192
  activeUsers: number;
137
- cost: number;
138
193
  tokenUsage: number;
139
194
  };
140
195
  indicator: string;
@@ -145,7 +200,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
145
200
  planId: string;
146
201
  currentPeriodStart: Date;
147
202
  currentPeriodEnd: Date;
203
+ isEnterprisePlan: boolean;
204
+ id?: string | undefined;
205
+ upcomingInvoice?: {
206
+ subtotal: number;
207
+ subtotalExcludingTax: number | null;
208
+ total: number;
209
+ totalExcludingTax: number | null;
210
+ } | null | undefined;
211
+ isAddOnAvailable?: boolean | undefined;
148
212
  };
213
+ regionName: RegionName;
214
+ tag: TenantTag;
149
215
  openInvoices: {
150
216
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
151
217
  id: string;
@@ -161,19 +227,23 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
161
227
  hostedInvoiceUrl: string | null;
162
228
  invoicePdf: string | null;
163
229
  }[];
164
- tag: TenantTag;
165
230
  }[]>;
166
231
  };
167
232
  post: {
168
233
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
169
234
  name?: string | undefined;
170
235
  tag?: TenantTag | undefined;
236
+ regionName?: RegionName | undefined;
171
237
  }, {
172
238
  id: string;
173
239
  name: string;
240
+ quota: {
241
+ mauLimit: number | null;
242
+ tokenLimit: number | null;
243
+ };
244
+ createdAt: Date;
174
245
  usage: {
175
246
  activeUsers: number;
176
- cost: number;
177
247
  tokenUsage: number;
178
248
  };
179
249
  indicator: string;
@@ -184,7 +254,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
184
254
  planId: string;
185
255
  currentPeriodStart: Date;
186
256
  currentPeriodEnd: Date;
257
+ isEnterprisePlan: boolean;
258
+ id?: string | undefined;
259
+ upcomingInvoice?: {
260
+ subtotal: number;
261
+ subtotalExcludingTax: number | null;
262
+ total: number;
263
+ totalExcludingTax: number | null;
264
+ } | null | undefined;
265
+ isAddOnAvailable?: boolean | undefined;
187
266
  };
267
+ regionName: RegionName;
268
+ tag: TenantTag;
188
269
  openInvoices: {
189
270
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
190
271
  id: string;
@@ -200,7 +281,6 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
200
281
  hostedInvoiceUrl: string | null;
201
282
  invoicePdf: string | null;
202
283
  }[];
203
- tag: TenantTag;
204
284
  }>;
205
285
  };
206
286
  put: {};
@@ -218,6 +298,117 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
218
298
  planId: string;
219
299
  currentPeriodStart: Date;
220
300
  currentPeriodEnd: Date;
301
+ isEnterprisePlan: boolean;
302
+ id?: string | undefined;
303
+ upcomingInvoice?: {
304
+ subtotal: number;
305
+ subtotalExcludingTax: number | null;
306
+ total: number;
307
+ totalExcludingTax: number | null;
308
+ } | null | undefined;
309
+ isAddOnAvailable?: boolean | undefined;
310
+ }>;
311
+ } & {
312
+ "/tenants/my/subscription/quota": import("@withtyped/server").PathGuard<"/my/subscription/quota", unknown, unknown, {
313
+ mauLimit: number | null;
314
+ tokenLimit: number | null;
315
+ applicationsLimit: number | null;
316
+ machineToMachineLimit: number | null;
317
+ resourcesLimit: number | null;
318
+ scopesPerResourceLimit: number | null;
319
+ socialConnectorsLimit: number | null;
320
+ machineToMachineRolesLimit: number | null;
321
+ scopesPerRoleLimit: number | null;
322
+ hooksLimit: number | null;
323
+ auditLogsRetentionDays: number | null;
324
+ mfaEnabled: boolean;
325
+ organizationsEnabled: boolean;
326
+ thirdPartyApplicationsLimit: number | null;
327
+ tenantMembersLimit: number | null;
328
+ customJwtEnabled: boolean;
329
+ subjectTokenEnabled: boolean;
330
+ bringYourUiEnabled: boolean;
331
+ userRolesLimit: number | null;
332
+ enterpriseSsoLimit: number | null;
333
+ organizationsLimit: number | null;
334
+ }>;
335
+ } & {
336
+ "/tenants/my/subscription/usage": import("@withtyped/server").PathGuard<"/my/subscription/usage", unknown, unknown, {
337
+ applicationsLimit: number;
338
+ machineToMachineLimit: number;
339
+ resourcesLimit: number;
340
+ scopesPerResourceLimit: number;
341
+ socialConnectorsLimit: number;
342
+ machineToMachineRolesLimit: number;
343
+ scopesPerRoleLimit: number;
344
+ hooksLimit: number;
345
+ mfaEnabled: boolean;
346
+ organizationsEnabled: boolean;
347
+ thirdPartyApplicationsLimit: number;
348
+ tenantMembersLimit: number;
349
+ customJwtEnabled: boolean;
350
+ subjectTokenEnabled: boolean;
351
+ bringYourUiEnabled: boolean;
352
+ userRolesLimit: number;
353
+ enterpriseSsoLimit: number;
354
+ organizationsLimit: number;
355
+ }>;
356
+ } & {
357
+ "/tenants/my/subscription/usage/:entityName/scopes": import("@withtyped/server").PathGuard<"/my/subscription/usage/:entityName/scopes", {
358
+ entityId?: string | undefined;
359
+ }, unknown, Record<string, number>>;
360
+ } & {
361
+ "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
362
+ usage: {
363
+ applicationsLimit: number;
364
+ machineToMachineLimit: number;
365
+ resourcesLimit: number;
366
+ scopesPerResourceLimit: number;
367
+ socialConnectorsLimit: number;
368
+ machineToMachineRolesLimit: number;
369
+ scopesPerRoleLimit: number;
370
+ hooksLimit: number;
371
+ mfaEnabled: boolean;
372
+ organizationsEnabled: boolean;
373
+ thirdPartyApplicationsLimit: number;
374
+ tenantMembersLimit: number;
375
+ customJwtEnabled: boolean;
376
+ subjectTokenEnabled: boolean;
377
+ bringYourUiEnabled: boolean;
378
+ userRolesLimit: number;
379
+ enterpriseSsoLimit: number;
380
+ organizationsLimit: number;
381
+ };
382
+ resources: Record<string, number>;
383
+ roles: Record<string, number>;
384
+ quota: {
385
+ mauLimit: number | null;
386
+ tokenLimit: number | null;
387
+ applicationsLimit: number | null;
388
+ machineToMachineLimit: number | null;
389
+ resourcesLimit: number | null;
390
+ scopesPerResourceLimit: number | null;
391
+ socialConnectorsLimit: number | null;
392
+ machineToMachineRolesLimit: number | null;
393
+ scopesPerRoleLimit: number | null;
394
+ hooksLimit: number | null;
395
+ auditLogsRetentionDays: number | null;
396
+ mfaEnabled: boolean;
397
+ organizationsEnabled: boolean;
398
+ thirdPartyApplicationsLimit: number | null;
399
+ tenantMembersLimit: number | null;
400
+ customJwtEnabled: boolean;
401
+ subjectTokenEnabled: boolean;
402
+ bringYourUiEnabled: boolean;
403
+ userRolesLimit: number | null;
404
+ enterpriseSsoLimit: number | null;
405
+ organizationsLimit: number | null;
406
+ };
407
+ }>;
408
+ } & {
409
+ "/tenants/my/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/my/subscription/periodic-usage", unknown, unknown, {
410
+ mauLimit: number;
411
+ tokenLimit: number;
221
412
  }>;
222
413
  } & {
223
414
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
@@ -225,6 +416,117 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
225
416
  planId: string;
226
417
  currentPeriodStart: Date;
227
418
  currentPeriodEnd: Date;
419
+ isEnterprisePlan: boolean;
420
+ id?: string | undefined;
421
+ upcomingInvoice?: {
422
+ subtotal: number;
423
+ subtotalExcludingTax: number | null;
424
+ total: number;
425
+ totalExcludingTax: number | null;
426
+ } | null | undefined;
427
+ isAddOnAvailable?: boolean | undefined;
428
+ }>;
429
+ } & {
430
+ "/tenants/:tenantId/subscription/quota": import("@withtyped/server").PathGuard<"/:tenantId/subscription/quota", unknown, unknown, {
431
+ mauLimit: number | null;
432
+ tokenLimit: number | null;
433
+ applicationsLimit: number | null;
434
+ machineToMachineLimit: number | null;
435
+ resourcesLimit: number | null;
436
+ scopesPerResourceLimit: number | null;
437
+ socialConnectorsLimit: number | null;
438
+ machineToMachineRolesLimit: number | null;
439
+ scopesPerRoleLimit: number | null;
440
+ hooksLimit: number | null;
441
+ auditLogsRetentionDays: number | null;
442
+ mfaEnabled: boolean;
443
+ organizationsEnabled: boolean;
444
+ thirdPartyApplicationsLimit: number | null;
445
+ tenantMembersLimit: number | null;
446
+ customJwtEnabled: boolean;
447
+ subjectTokenEnabled: boolean;
448
+ bringYourUiEnabled: boolean;
449
+ userRolesLimit: number | null;
450
+ enterpriseSsoLimit: number | null;
451
+ organizationsLimit: number | null;
452
+ }>;
453
+ } & {
454
+ "/tenants/:tenantId/subscription/usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/usage", unknown, unknown, {
455
+ applicationsLimit: number;
456
+ machineToMachineLimit: number;
457
+ resourcesLimit: number;
458
+ scopesPerResourceLimit: number;
459
+ socialConnectorsLimit: number;
460
+ machineToMachineRolesLimit: number;
461
+ scopesPerRoleLimit: number;
462
+ hooksLimit: number;
463
+ mfaEnabled: boolean;
464
+ organizationsEnabled: boolean;
465
+ thirdPartyApplicationsLimit: number;
466
+ tenantMembersLimit: number;
467
+ customJwtEnabled: boolean;
468
+ subjectTokenEnabled: boolean;
469
+ bringYourUiEnabled: boolean;
470
+ userRolesLimit: number;
471
+ enterpriseSsoLimit: number;
472
+ organizationsLimit: number;
473
+ }>;
474
+ } & {
475
+ "/tenants/:tenantId/subscription/usage/:entityName/scopes": import("@withtyped/server").PathGuard<"/:tenantId/subscription/usage/:entityName/scopes", {
476
+ entityId?: string | undefined;
477
+ }, unknown, Record<string, number>>;
478
+ } & {
479
+ "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
480
+ usage: {
481
+ applicationsLimit: number;
482
+ machineToMachineLimit: number;
483
+ resourcesLimit: number;
484
+ scopesPerResourceLimit: number;
485
+ socialConnectorsLimit: number;
486
+ machineToMachineRolesLimit: number;
487
+ scopesPerRoleLimit: number;
488
+ hooksLimit: number;
489
+ mfaEnabled: boolean;
490
+ organizationsEnabled: boolean;
491
+ thirdPartyApplicationsLimit: number;
492
+ tenantMembersLimit: number;
493
+ customJwtEnabled: boolean;
494
+ subjectTokenEnabled: boolean;
495
+ bringYourUiEnabled: boolean;
496
+ userRolesLimit: number;
497
+ enterpriseSsoLimit: number;
498
+ organizationsLimit: number;
499
+ };
500
+ resources: Record<string, number>;
501
+ roles: Record<string, number>;
502
+ quota: {
503
+ mauLimit: number | null;
504
+ tokenLimit: number | null;
505
+ applicationsLimit: number | null;
506
+ machineToMachineLimit: number | null;
507
+ resourcesLimit: number | null;
508
+ scopesPerResourceLimit: number | null;
509
+ socialConnectorsLimit: number | null;
510
+ machineToMachineRolesLimit: number | null;
511
+ scopesPerRoleLimit: number | null;
512
+ hooksLimit: number | null;
513
+ auditLogsRetentionDays: number | null;
514
+ mfaEnabled: boolean;
515
+ organizationsEnabled: boolean;
516
+ thirdPartyApplicationsLimit: number | null;
517
+ tenantMembersLimit: number | null;
518
+ customJwtEnabled: boolean;
519
+ subjectTokenEnabled: boolean;
520
+ bringYourUiEnabled: boolean;
521
+ userRolesLimit: number | null;
522
+ enterpriseSsoLimit: number | null;
523
+ organizationsLimit: number | null;
524
+ };
525
+ }>;
526
+ } & {
527
+ "/tenants/:tenantId/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/periodic-usage", unknown, unknown, {
528
+ mauLimit: number;
529
+ tokenLimit: number;
228
530
  }>;
229
531
  } & {
230
532
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
@@ -243,20 +545,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
243
545
  hostedInvoiceUrl: string | null;
244
546
  invoicePdf: string | null;
245
547
  planName: string | null;
548
+ skuId?: string | null | undefined;
246
549
  }[];
247
550
  }>;
248
551
  } & {
249
552
  "/tenants/:tenantId/invoices/:invoiceId/hosted-invoice-url": import("@withtyped/server").PathGuard<"/:tenantId/invoices/:invoiceId/hosted-invoice-url", unknown, unknown, {
250
553
  hostedInvoiceUrl: string;
251
554
  }>;
252
- } & {
253
- "/tenants/:tenantId/usage": import("@withtyped/server").PathGuard<"/:tenantId/usage", unknown, unknown, {
254
- activeUsers: number;
255
- cost: number;
256
- tokenUsage: number;
257
- }>;
258
555
  };
259
556
  post: {
557
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
558
+ usageKey: RealtimeReportableUsageKey;
559
+ }, {
560
+ message: string;
561
+ }>;
562
+ } & {
260
563
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
261
564
  callbackUrl?: string | undefined;
262
565
  }, {
@@ -306,15 +609,36 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
306
609
  };
307
610
  }, unknown>;
308
611
  } & {
309
- "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", unknown, {
612
+ "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
613
+ isTest?: string | undefined;
614
+ }, {
615
+ context: Record<string, Json>;
616
+ script: string;
617
+ tokenType: LogtoJwtTokenKeyType.AccessToken;
618
+ token: Record<string, Json>;
619
+ environmentVariables?: Record<string, string> | undefined;
620
+ } | {
310
621
  script: string;
622
+ tokenType: LogtoJwtTokenKeyType.ClientCredentials;
311
623
  token: Record<string, Json>;
312
- envVars?: Record<string, string> | undefined;
313
- context?: Record<string, Json> | undefined;
624
+ environmentVariables?: Record<string, string> | undefined;
314
625
  }, Record<string, unknown>>;
315
626
  };
316
- put: {};
317
- delete: {};
627
+ put: {
628
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, {
629
+ "jwt.accessToken"?: {
630
+ production?: string | undefined;
631
+ test?: string | undefined;
632
+ } | undefined;
633
+ "jwt.clientCredentials"?: {
634
+ production?: string | undefined;
635
+ test?: string | undefined;
636
+ } | undefined;
637
+ }, unknown>;
638
+ };
639
+ delete: {
640
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, unknown, unknown>;
641
+ };
318
642
  copy: {};
319
643
  head: {};
320
644
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
@@ -326,6 +650,32 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
326
650
  createdAt: Date;
327
651
  name: string;
328
652
  updatedAt: Date;
653
+ quota: {
654
+ mauLimit: number | null;
655
+ tokenLimit: number | null;
656
+ applicationsLimit: number | null;
657
+ machineToMachineLimit: number | null;
658
+ resourcesLimit: number | null;
659
+ scopesPerResourceLimit: number | null;
660
+ customDomainEnabled: boolean;
661
+ omniSignInEnabled: boolean;
662
+ builtInEmailConnectorEnabled: boolean;
663
+ socialConnectorsLimit: number | null;
664
+ standardConnectorsLimit: number | null;
665
+ rolesLimit: number | null;
666
+ machineToMachineRolesLimit: number | null;
667
+ scopesPerRoleLimit: number | null;
668
+ hooksLimit: number | null;
669
+ auditLogsRetentionDays: number | null;
670
+ mfaEnabled: boolean;
671
+ organizationsEnabled: boolean;
672
+ ssoEnabled: boolean;
673
+ thirdPartyApplicationsLimit: number | null;
674
+ tenantMembersLimit: number | null;
675
+ customJwtEnabled: boolean;
676
+ subjectTokenEnabled: boolean;
677
+ bringYourUiEnabled: boolean;
678
+ };
329
679
  stripeProducts: {
330
680
  type: "flat" | "tier1" | "tier2" | "tier3";
331
681
  id: string;
@@ -338,6 +688,79 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
338
688
  };
339
689
  description?: string | undefined;
340
690
  }[];
691
+ }[]>;
692
+ };
693
+ post: {};
694
+ put: {};
695
+ delete: {};
696
+ copy: {};
697
+ head: {};
698
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
699
+ patch: {};
700
+ options: {};
701
+ get: {
702
+ "/skus": import("@withtyped/server").PathGuard<"/", {
703
+ type?: LogtoSkuType | undefined;
704
+ }, unknown, {
705
+ type: LogtoSkuType;
706
+ id: string;
707
+ name: string | null;
708
+ quota: {
709
+ mauLimit?: number | null | undefined;
710
+ tokenLimit?: number | null | undefined;
711
+ applicationsLimit?: number | null | undefined;
712
+ machineToMachineLimit?: number | null | undefined;
713
+ resourcesLimit?: number | null | undefined;
714
+ scopesPerResourceLimit?: number | null | undefined;
715
+ socialConnectorsLimit?: number | null | undefined;
716
+ machineToMachineRolesLimit?: number | null | undefined;
717
+ scopesPerRoleLimit?: number | null | undefined;
718
+ hooksLimit?: number | null | undefined;
719
+ auditLogsRetentionDays?: number | null | undefined;
720
+ mfaEnabled?: boolean | undefined;
721
+ organizationsEnabled?: boolean | undefined;
722
+ thirdPartyApplicationsLimit?: number | null | undefined;
723
+ tenantMembersLimit?: number | null | undefined;
724
+ customJwtEnabled?: boolean | undefined;
725
+ subjectTokenEnabled?: boolean | undefined;
726
+ bringYourUiEnabled?: boolean | undefined;
727
+ userRolesLimit?: number | null | undefined;
728
+ enterpriseSsoLimit?: number | null | undefined;
729
+ organizationsLimit?: number | null | undefined;
730
+ };
731
+ createdAt: Date;
732
+ updatedAt: Date;
733
+ unitPrice: number | null;
734
+ }[]>;
735
+ };
736
+ post: {
737
+ "/skus": import("@withtyped/server").PathGuard<"/", unknown, {
738
+ type: LogtoSkuType.AddOn;
739
+ quota: {
740
+ tokenLimit?: number | null | undefined;
741
+ machineToMachineLimit?: number | null | undefined;
742
+ resourcesLimit?: number | null | undefined;
743
+ enterpriseSsoLimit?: number | null | undefined;
744
+ hooksLimit?: number | null | undefined;
745
+ tenantMembersLimit?: number | null | undefined;
746
+ mfaEnabled?: boolean | undefined;
747
+ organizationsEnabled?: boolean | undefined;
748
+ organizationsLimit?: number | null | undefined;
749
+ mauLimit?: number | null | undefined;
750
+ applicationsLimit?: number | null | undefined;
751
+ scopesPerResourceLimit?: number | null | undefined;
752
+ socialConnectorsLimit?: number | null | undefined;
753
+ machineToMachineRolesLimit?: number | null | undefined;
754
+ scopesPerRoleLimit?: number | null | undefined;
755
+ auditLogsRetentionDays?: number | null | undefined;
756
+ thirdPartyApplicationsLimit?: number | null | undefined;
757
+ customJwtEnabled?: boolean | undefined;
758
+ subjectTokenEnabled?: boolean | undefined;
759
+ bringYourUiEnabled?: boolean | undefined;
760
+ userRolesLimit?: number | null | undefined;
761
+ };
762
+ } | {
763
+ type: LogtoSkuType.Basic;
341
764
  quota: {
342
765
  mauLimit: number | null;
343
766
  tokenLimit: number | null;
@@ -345,26 +768,65 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
345
768
  machineToMachineLimit: number | null;
346
769
  resourcesLimit: number | null;
347
770
  scopesPerResourceLimit: number | null;
348
- customDomainEnabled: boolean;
349
- omniSignInEnabled: boolean;
350
- builtInEmailConnectorEnabled: boolean;
351
771
  socialConnectorsLimit: number | null;
352
- standardConnectorsLimit: number | null;
353
- rolesLimit: number | null;
354
772
  machineToMachineRolesLimit: number | null;
355
773
  scopesPerRoleLimit: number | null;
356
774
  hooksLimit: number | null;
357
775
  auditLogsRetentionDays: number | null;
358
776
  mfaEnabled: boolean;
359
777
  organizationsEnabled: boolean;
360
- ssoEnabled: boolean;
361
778
  thirdPartyApplicationsLimit: number | null;
779
+ tenantMembersLimit: number | null;
780
+ customJwtEnabled: boolean;
781
+ subjectTokenEnabled: boolean;
782
+ bringYourUiEnabled: boolean;
783
+ userRolesLimit: number | null;
784
+ enterpriseSsoLimit: number | null;
785
+ organizationsLimit: number | null;
362
786
  };
363
- }[]>;
787
+ }, {
788
+ id: string;
789
+ createdAt: Date;
790
+ type: LogtoSkuType;
791
+ updatedAt: Date;
792
+ quota: {
793
+ mauLimit?: number | null | undefined;
794
+ tokenLimit?: number | null | undefined;
795
+ applicationsLimit?: number | null | undefined;
796
+ machineToMachineLimit?: number | null | undefined;
797
+ resourcesLimit?: number | null | undefined;
798
+ scopesPerResourceLimit?: number | null | undefined;
799
+ socialConnectorsLimit?: number | null | undefined;
800
+ machineToMachineRolesLimit?: number | null | undefined;
801
+ scopesPerRoleLimit?: number | null | undefined;
802
+ hooksLimit?: number | null | undefined;
803
+ auditLogsRetentionDays?: number | null | undefined;
804
+ mfaEnabled?: boolean | undefined;
805
+ organizationsEnabled?: boolean | undefined;
806
+ thirdPartyApplicationsLimit?: number | null | undefined;
807
+ tenantMembersLimit?: number | null | undefined;
808
+ customJwtEnabled?: boolean | undefined;
809
+ subjectTokenEnabled?: boolean | undefined;
810
+ bringYourUiEnabled?: boolean | undefined;
811
+ userRolesLimit?: number | null | undefined;
812
+ enterpriseSsoLimit?: number | null | undefined;
813
+ organizationsLimit?: number | null | undefined;
814
+ };
815
+ }>;
816
+ } & {
817
+ "/skus/:skuId/products": import("@withtyped/server").PathGuard<"/:skuId/products", {
818
+ isOneTime?: string | undefined;
819
+ }, {
820
+ name: string;
821
+ unitPrice: number;
822
+ }, {
823
+ productId: string;
824
+ }>;
364
825
  };
365
- post: {};
366
826
  put: {};
367
- delete: {};
827
+ delete: {
828
+ "/skus/:skuId": import("@withtyped/server").PathGuard<"/:skuId", unknown, unknown, unknown>;
829
+ };
368
830
  copy: {};
369
831
  head: {};
370
832
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
@@ -379,6 +841,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
379
841
  tenantId: string | null;
380
842
  updatedAt: Date;
381
843
  planId: string;
844
+ skuId: string | null;
382
845
  }>;
383
846
  };
384
847
  post: {
@@ -386,9 +849,11 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
386
849
  planId: string;
387
850
  successCallbackUrl: string;
388
851
  tenantId?: string | undefined;
389
- cancelCallbackUrl?: string | undefined;
390
- tenantTag?: TenantTag | undefined;
852
+ skuId?: string | undefined;
391
853
  tenantName?: string | undefined;
854
+ tenantTag?: TenantTag | undefined;
855
+ tenantRegionName?: RegionName | undefined;
856
+ cancelCallbackUrl?: string | undefined;
392
857
  }, {
393
858
  sessionId: string;
394
859
  redirectUri?: string | null | undefined;
@@ -472,15 +937,15 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
472
937
  status: OrganizationInvitationStatus;
473
938
  tenantId: string;
474
939
  updatedAt: number;
475
- organizationId: string;
476
940
  inviterId: string | null;
477
941
  invitee: string;
478
- expiresAt: number;
479
942
  acceptedUserId: string | null;
943
+ organizationId: string;
944
+ expiresAt: number;
480
945
  organizationRoles: OrganizationRoleEntity[];
481
946
  } & {
482
- tenantTag: TenantTag;
483
947
  tenantName: string;
948
+ tenantTag: TenantTag;
484
949
  })[]>;
485
950
  } & {
486
951
  "/invitations/:invitationId": import("@withtyped/server").PathGuard<"/:invitationId", unknown, unknown, {
@@ -489,11 +954,11 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
489
954
  status: OrganizationInvitationStatus;
490
955
  tenantId: string;
491
956
  updatedAt: number;
492
- organizationId: string;
493
957
  inviterId: string | null;
494
958
  invitee: string;
495
- expiresAt: number;
496
959
  acceptedUserId: string | null;
960
+ organizationId: string;
961
+ expiresAt: number;
497
962
  organizationRoles: OrganizationRoleEntity[];
498
963
  }>;
499
964
  };
@@ -502,9 +967,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
502
967
  delete: {};
503
968
  copy: {};
504
969
  head: {};
970
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
971
+ patch: {};
972
+ options: {};
973
+ get: {};
974
+ post: {};
975
+ put: {};
976
+ delete: {
977
+ "/me": import("@withtyped/server").PathGuard<"/", unknown, unknown, unknown>;
978
+ };
979
+ copy: {};
980
+ head: {};
505
981
  }, "/api">>, "/api">;
506
982
  export declare const tenantAuthRouter: import("@withtyped/server").Router<RequestContext, import("@withtyped/server").WithBodyContext<import("@withtyped/server").BaseContext & {
507
983
  request: {
984
+ id?: string | undefined;
508
985
  method?: import("@withtyped/server").RequestMethod | undefined;
509
986
  headers: import("http").IncomingHttpHeaders;
510
987
  url: URL;
@@ -520,11 +997,11 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
520
997
  status: OrganizationInvitationStatus;
521
998
  tenantId: string;
522
999
  updatedAt: number;
523
- organizationId: string;
524
1000
  inviterId: string | null;
525
1001
  invitee: string;
526
- expiresAt: number;
527
1002
  acceptedUserId: string | null;
1003
+ organizationId: string;
1004
+ expiresAt: number;
528
1005
  organizationRoles: OrganizationRoleEntity[];
529
1006
  }>;
530
1007
  };
@@ -540,23 +1017,27 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
540
1017
  organizationRoles: OrganizationRoleEntity[];
541
1018
  }[]>;
542
1019
  } & {
543
- "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, {
1020
+ "/:tenantId/members/:userId/scopes": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId/scopes", unknown, unknown, OrganizationScope[]>;
1021
+ } & {
1022
+ "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, ({
544
1023
  id: string;
545
1024
  createdAt: number;
546
1025
  status: OrganizationInvitationStatus;
547
1026
  tenantId: string;
548
1027
  updatedAt: number;
549
- organizationId: string;
550
1028
  inviterId: string | null;
551
1029
  invitee: string;
552
- expiresAt: number;
553
1030
  acceptedUserId: string | null;
1031
+ organizationId: string;
1032
+ expiresAt: number;
554
1033
  organizationRoles: OrganizationRoleEntity[];
555
- }[]>;
1034
+ } & {
1035
+ inviterName?: string | undefined;
1036
+ })[]>;
556
1037
  };
557
1038
  post: {
558
1039
  "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, {
559
- invitee: string;
1040
+ invitee: string | string[];
560
1041
  roleName: TenantRole;
561
1042
  expiresAt?: number | undefined;
562
1043
  }, {
@@ -565,13 +1046,25 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
565
1046
  status: OrganizationInvitationStatus;
566
1047
  tenantId: string;
567
1048
  updatedAt: number;
568
- organizationId: string;
569
1049
  inviterId: string | null;
570
1050
  invitee: string;
1051
+ acceptedUserId: string | null;
1052
+ organizationId: string;
571
1053
  expiresAt: number;
1054
+ organizationRoles: OrganizationRoleEntity[];
1055
+ } | {
1056
+ id: string;
1057
+ createdAt: number;
1058
+ status: OrganizationInvitationStatus;
1059
+ tenantId: string;
1060
+ updatedAt: number;
1061
+ inviterId: string | null;
1062
+ invitee: string;
572
1063
  acceptedUserId: string | null;
1064
+ organizationId: string;
1065
+ expiresAt: number;
573
1066
  organizationRoles: OrganizationRoleEntity[];
574
- }>;
1067
+ }[]>;
575
1068
  } & {
576
1069
  "/:tenantId/invitations/:invitationId/message": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/message", unknown, unknown, unknown>;
577
1070
  };
@@ -588,35 +1081,6 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
588
1081
  copy: {};
589
1082
  head: {};
590
1083
  }, "/api/tenants">>, "/api/tenants">;
591
- export declare const functionsRouter: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
592
- request: {
593
- method?: import("@withtyped/server").RequestMethod | undefined;
594
- headers: import("http").IncomingHttpHeaders;
595
- url: URL;
596
- body?: unknown;
597
- };
598
- }, "request"> & {
599
- request: Record<string, unknown> & {
600
- method?: import("@withtyped/server").RequestMethod | undefined;
601
- headers: import("http").IncomingHttpHeaders;
602
- url: URL;
603
- body?: unknown;
604
- } & {
605
- body?: Json | undefined;
606
- bodyRaw?: Buffer | undefined;
607
- };
608
- }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
609
- patch: {};
610
- options: {};
611
- get: {};
612
- post: {
613
- "/database-alteration": import("@withtyped/server").PathGuard<"/database-alteration", unknown, Json, unknown>;
614
- };
615
- put: {};
616
- delete: {};
617
- copy: {};
618
- head: {};
619
- }, "/functions">>, "/functions">;
620
1084
 
621
1085
  export {
622
1086
  router as default,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/cloud",
3
- "version": "0.2.5-81f06ea",
3
+ "version": "0.2.5-91ab76c",
4
4
  "description": "Logto Cloud service.",
5
5
  "main": "build/index.js",
6
6
  "author": "Silverhand Inc. <contact@silverhand.io>",
@@ -16,21 +16,21 @@
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
24
  "@types/node": "^20.0.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
32
  "vite-tsconfig-paths": "^4.3.1",
33
- "vitest": "^1.0.0"
33
+ "vitest": "^2.0.0"
34
34
  },
35
35
  "engines": {
36
36
  "node": "^20.9.0"
@@ -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.1",
53
+ "@withtyped/server": "^0.14.0"
54
54
  },
55
55
  "scripts": {
56
56
  "precommit": "lint-staged",