@logto/cloud 0.2.5-d9576f9 → 0.2.5-e38aeec

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 +758 -143
  2. package/package.json +13 -17
@@ -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",
@@ -37,6 +49,20 @@ declare enum OrganizationInvitationStatus {
37
49
  Expired = "Expired",
38
50
  Revoked = "Revoked"
39
51
  }
52
+ /** The scopes (permissions) defined by the organization template. */
53
+ export type OrganizationScope = {
54
+ tenantId: string;
55
+ /** The globally unique identifier of the organization scope. */
56
+ id: string;
57
+ /** The organization scope's name, unique within the organization template. */
58
+ name: string;
59
+ /** A brief description of the organization scope. */
60
+ description: string | null;
61
+ };
62
+ declare enum LogtoJwtTokenKeyType {
63
+ AccessToken = "access-token",
64
+ ClientCredentials = "client-credentials"
65
+ }
40
66
  /**
41
67
  * The simplified organization role entity that is returned in the `roles` field
42
68
  * of the organization.
@@ -52,8 +78,8 @@ declare enum TenantTag {
52
78
  declare enum TenantRole {
53
79
  /** Admin of the tenant, who has all permissions. */
54
80
  Admin = "admin",
55
- /** Member of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
56
- Member = "member"
81
+ /** Collaborator of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
82
+ Collaborator = "collaborator"
57
83
  }
58
84
  declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js").default<"affiliate_properties", {
59
85
  createdAt: Date;
@@ -63,16 +89,54 @@ declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js"
63
89
  }, "createdAt", "createdAt">;
64
90
  export type AffiliateProperty = InferModelType<typeof AffiliateProperties>;
65
91
  declare const Affiliates: import("@withtyped/server/lib/model/index.js").default<"affiliates", {
66
- id: string;
67
- createdAt: Date;
68
92
  name: string;
69
- }, "createdAt" | "id", "createdAt" | "id">;
93
+ createdAt: Date;
94
+ id: string;
95
+ }, "id" | "createdAt", "id" | "createdAt">;
70
96
  export type Affiliate = InferModelType<typeof Affiliates>;
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
+ /**
106
+ * Data structure representing a Logto Cloud region.
107
+ */
108
+ export type Region = {
109
+ /**
110
+ * The unique identifier for the region.
111
+ */
112
+ id: string;
113
+ /**
114
+ * A human-readable name for the region.
115
+ */
116
+ name: string;
117
+ /**
118
+ * The country where the region is located.
119
+ */
120
+ country: string;
121
+ /**
122
+ * Indicates whether the region is private.
123
+ */
124
+ isPrivate: boolean;
125
+ };
126
+ export type WithAuthContext<Context = RequestContext> = Context & {
127
+ auth: {
128
+ /** The ID of the authenticated subject (`sub`). */
129
+ id: string;
130
+ /** The scopes that the subject has (`scope`). */
131
+ scopes: string[];
132
+ };
133
+ };
71
134
  export type AffiliateData = Affiliate & {
72
135
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
73
136
  };
74
137
  declare const router: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
75
138
  request: {
139
+ id?: string | undefined;
76
140
  method?: import("@withtyped/server").RequestMethod | undefined;
77
141
  headers: import("http").IncomingHttpHeaders;
78
142
  url: URL;
@@ -80,6 +144,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
80
144
  };
81
145
  }, "request"> & {
82
146
  request: Record<string, unknown> & {
147
+ id?: string | undefined;
83
148
  method?: import("@withtyped/server").RequestMethod | undefined;
84
149
  headers: import("http").IncomingHttpHeaders;
85
150
  url: URL;
@@ -89,16 +154,19 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
89
154
  bodyRaw?: Buffer | undefined;
90
155
  };
91
156
  }>, 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
- options: {};
93
157
  patch: {
94
158
  "/tenants/:tenantId": import("@withtyped/server").PathGuard<"/:tenantId", unknown, {
95
159
  name?: string | undefined;
96
160
  }, {
97
161
  id: string;
98
162
  name: string;
163
+ createdAt: Date;
164
+ quota: {
165
+ mauLimit: number | null;
166
+ tokenLimit: number | null;
167
+ };
99
168
  usage: {
100
169
  activeUsers: number;
101
- cost: number;
102
170
  tokenUsage: number;
103
171
  };
104
172
  indicator: string;
@@ -109,12 +177,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
109
177
  planId: string;
110
178
  currentPeriodStart: Date;
111
179
  currentPeriodEnd: Date;
180
+ isEnterprisePlan: boolean;
181
+ id?: string | undefined;
182
+ upcomingInvoice?: {
183
+ subtotal: number;
184
+ subtotalExcludingTax: number | null;
185
+ total: number;
186
+ totalExcludingTax: number | null;
187
+ } | null | undefined;
112
188
  };
189
+ regionName: string;
113
190
  tag: TenantTag;
114
191
  openInvoices: {
115
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
116
- createdAt: Date;
117
192
  id: string;
193
+ createdAt: Date;
194
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
118
195
  updatedAt: Date;
119
196
  customerId: string | null;
120
197
  billingReason: string | null;
@@ -122,19 +199,25 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
122
199
  periodEnd: Date;
123
200
  amountDue: number;
124
201
  amountPaid: number;
202
+ basicSkuId: string | null;
125
203
  subscriptionId: string | null;
126
204
  hostedInvoiceUrl: string | null;
127
205
  invoicePdf: string | null;
128
206
  }[];
129
207
  }>;
130
208
  };
209
+ options: {};
131
210
  get: {
132
211
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
133
212
  id: string;
134
213
  name: string;
214
+ createdAt: Date;
215
+ quota: {
216
+ mauLimit: number | null;
217
+ tokenLimit: number | null;
218
+ };
135
219
  usage: {
136
220
  activeUsers: number;
137
- cost: number;
138
221
  tokenUsage: number;
139
222
  };
140
223
  indicator: string;
@@ -145,12 +228,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
145
228
  planId: string;
146
229
  currentPeriodStart: Date;
147
230
  currentPeriodEnd: Date;
231
+ isEnterprisePlan: boolean;
232
+ id?: string | undefined;
233
+ upcomingInvoice?: {
234
+ subtotal: number;
235
+ subtotalExcludingTax: number | null;
236
+ total: number;
237
+ totalExcludingTax: number | null;
238
+ } | null | undefined;
148
239
  };
240
+ regionName: string;
149
241
  tag: TenantTag;
150
242
  openInvoices: {
151
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
152
- createdAt: Date;
153
243
  id: string;
244
+ createdAt: Date;
245
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
154
246
  updatedAt: Date;
155
247
  customerId: string | null;
156
248
  billingReason: string | null;
@@ -158,6 +250,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
158
250
  periodEnd: Date;
159
251
  amountDue: number;
160
252
  amountPaid: number;
253
+ basicSkuId: string | null;
161
254
  subscriptionId: string | null;
162
255
  hostedInvoiceUrl: string | null;
163
256
  invoicePdf: string | null;
@@ -166,14 +259,20 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
166
259
  };
167
260
  post: {
168
261
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
262
+ id?: string | undefined;
169
263
  name?: string | undefined;
170
264
  tag?: TenantTag | undefined;
265
+ regionName?: string | undefined;
171
266
  }, {
172
267
  id: string;
173
268
  name: string;
269
+ createdAt: Date;
270
+ quota: {
271
+ mauLimit: number | null;
272
+ tokenLimit: number | null;
273
+ };
174
274
  usage: {
175
275
  activeUsers: number;
176
- cost: number;
177
276
  tokenUsage: number;
178
277
  };
179
278
  indicator: string;
@@ -184,12 +283,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
184
283
  planId: string;
185
284
  currentPeriodStart: Date;
186
285
  currentPeriodEnd: Date;
286
+ isEnterprisePlan: boolean;
287
+ id?: string | undefined;
288
+ upcomingInvoice?: {
289
+ subtotal: number;
290
+ subtotalExcludingTax: number | null;
291
+ total: number;
292
+ totalExcludingTax: number | null;
293
+ } | null | undefined;
187
294
  };
295
+ regionName: string;
188
296
  tag: TenantTag;
189
297
  openInvoices: {
190
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
191
- createdAt: Date;
192
298
  id: string;
299
+ createdAt: Date;
300
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
193
301
  updatedAt: Date;
194
302
  customerId: string | null;
195
303
  billingReason: string | null;
@@ -197,6 +305,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
197
305
  periodEnd: Date;
198
306
  amountDue: number;
199
307
  amountPaid: number;
308
+ basicSkuId: string | null;
200
309
  subscriptionId: string | null;
201
310
  hostedInvoiceUrl: string | null;
202
311
  invoicePdf: string | null;
@@ -210,28 +319,296 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
210
319
  copy: {};
211
320
  head: {};
212
321
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
213
- options: {};
214
322
  patch: {};
323
+ options: {};
215
324
  get: {
216
325
  "/tenants/my/subscription": import("@withtyped/server").PathGuard<"/my/subscription", unknown, unknown, {
217
326
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
327
+ quota: {
328
+ auditLogsRetentionDays: number | null;
329
+ mauLimit: number | null;
330
+ applicationsLimit: number | null;
331
+ thirdPartyApplicationsLimit: number | null;
332
+ scopesPerResourceLimit: number | null;
333
+ socialConnectorsLimit: number | null;
334
+ userRolesLimit: number | null;
335
+ machineToMachineRolesLimit: number | null;
336
+ scopesPerRoleLimit: number | null;
337
+ hooksLimit: number | null;
338
+ customJwtEnabled: boolean;
339
+ subjectTokenEnabled: boolean;
340
+ bringYourUiEnabled: boolean;
341
+ collectUserProfileEnabled: boolean;
342
+ tokenLimit: number | null;
343
+ machineToMachineLimit: number | null;
344
+ resourcesLimit: number | null;
345
+ enterpriseSsoLimit: number | null;
346
+ tenantMembersLimit: number | null;
347
+ mfaEnabled: boolean;
348
+ organizationsEnabled: boolean;
349
+ organizationsLimit: number | null;
350
+ securityFeaturesEnabled: boolean;
351
+ idpInitiatedSsoEnabled: boolean;
352
+ samlApplicationsLimit: number | null;
353
+ };
218
354
  planId: string;
219
355
  currentPeriodStart: Date;
220
356
  currentPeriodEnd: Date;
357
+ isEnterprisePlan: boolean;
358
+ id?: string | undefined;
359
+ upcomingInvoice?: {
360
+ subtotal: number;
361
+ subtotalExcludingTax: number | null;
362
+ total: number;
363
+ totalExcludingTax: number | null;
364
+ } | null | undefined;
221
365
  }>;
222
366
  } & {
367
+ "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
368
+ usage: {
369
+ applicationsLimit: number;
370
+ thirdPartyApplicationsLimit: number;
371
+ scopesPerResourceLimit: number;
372
+ socialConnectorsLimit: number;
373
+ userRolesLimit: number;
374
+ machineToMachineRolesLimit: number;
375
+ scopesPerRoleLimit: number;
376
+ hooksLimit: number;
377
+ customJwtEnabled: boolean;
378
+ subjectTokenEnabled: boolean;
379
+ bringYourUiEnabled: boolean;
380
+ collectUserProfileEnabled: boolean;
381
+ machineToMachineLimit: number;
382
+ resourcesLimit: number;
383
+ enterpriseSsoLimit: number;
384
+ tenantMembersLimit: number;
385
+ mfaEnabled: boolean;
386
+ organizationsEnabled: boolean;
387
+ organizationsLimit: number;
388
+ securityFeaturesEnabled: boolean;
389
+ idpInitiatedSsoEnabled: boolean;
390
+ samlApplicationsLimit: number;
391
+ };
392
+ resources: Record<string, number>;
393
+ roles: Record<string, number>;
394
+ quota: {
395
+ auditLogsRetentionDays: number | null;
396
+ mauLimit: number | null;
397
+ applicationsLimit: number | null;
398
+ thirdPartyApplicationsLimit: number | null;
399
+ scopesPerResourceLimit: number | null;
400
+ socialConnectorsLimit: number | null;
401
+ userRolesLimit: number | null;
402
+ machineToMachineRolesLimit: number | null;
403
+ scopesPerRoleLimit: number | null;
404
+ hooksLimit: number | null;
405
+ customJwtEnabled: boolean;
406
+ subjectTokenEnabled: boolean;
407
+ bringYourUiEnabled: boolean;
408
+ collectUserProfileEnabled: boolean;
409
+ tokenLimit: number | null;
410
+ machineToMachineLimit: number | null;
411
+ resourcesLimit: number | null;
412
+ enterpriseSsoLimit: number | null;
413
+ tenantMembersLimit: number | null;
414
+ mfaEnabled: boolean;
415
+ organizationsEnabled: boolean;
416
+ organizationsLimit: number | null;
417
+ securityFeaturesEnabled: boolean;
418
+ idpInitiatedSsoEnabled: boolean;
419
+ samlApplicationsLimit: number | null;
420
+ };
421
+ basicQuota: {
422
+ auditLogsRetentionDays: number | null;
423
+ mauLimit: number | null;
424
+ applicationsLimit: number | null;
425
+ thirdPartyApplicationsLimit: number | null;
426
+ scopesPerResourceLimit: number | null;
427
+ socialConnectorsLimit: number | null;
428
+ userRolesLimit: number | null;
429
+ machineToMachineRolesLimit: number | null;
430
+ scopesPerRoleLimit: number | null;
431
+ hooksLimit: number | null;
432
+ customJwtEnabled: boolean;
433
+ subjectTokenEnabled: boolean;
434
+ bringYourUiEnabled: boolean;
435
+ collectUserProfileEnabled: boolean;
436
+ tokenLimit: number | null;
437
+ machineToMachineLimit: number | null;
438
+ resourcesLimit: number | null;
439
+ enterpriseSsoLimit: number | null;
440
+ tenantMembersLimit: number | null;
441
+ mfaEnabled: boolean;
442
+ organizationsEnabled: boolean;
443
+ organizationsLimit: number | null;
444
+ securityFeaturesEnabled: boolean;
445
+ idpInitiatedSsoEnabled: boolean;
446
+ samlApplicationsLimit: number | null;
447
+ };
448
+ }>;
449
+ };
450
+ post: {
451
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
452
+ usageKey: RealtimeReportableUsageKey;
453
+ }, {
454
+ message: string;
455
+ }>;
456
+ };
457
+ put: {};
458
+ delete: {};
459
+ copy: {};
460
+ head: {};
461
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
462
+ patch: {};
463
+ options: {};
464
+ get: {
223
465
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
224
466
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
225
467
  planId: string;
226
468
  currentPeriodStart: Date;
227
469
  currentPeriodEnd: Date;
470
+ isEnterprisePlan: boolean;
471
+ id?: string | undefined;
472
+ upcomingInvoice?: {
473
+ subtotal: number;
474
+ subtotalExcludingTax: number | null;
475
+ total: number;
476
+ totalExcludingTax: number | null;
477
+ } | null | undefined;
228
478
  }>;
479
+ } & {
480
+ "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
481
+ usage: {
482
+ applicationsLimit: number;
483
+ thirdPartyApplicationsLimit: number;
484
+ scopesPerResourceLimit: number;
485
+ socialConnectorsLimit: number;
486
+ userRolesLimit: number;
487
+ machineToMachineRolesLimit: number;
488
+ scopesPerRoleLimit: number;
489
+ hooksLimit: number;
490
+ customJwtEnabled: boolean;
491
+ subjectTokenEnabled: boolean;
492
+ bringYourUiEnabled: boolean;
493
+ collectUserProfileEnabled: boolean;
494
+ machineToMachineLimit: number;
495
+ resourcesLimit: number;
496
+ enterpriseSsoLimit: number;
497
+ tenantMembersLimit: number;
498
+ mfaEnabled: boolean;
499
+ organizationsEnabled: boolean;
500
+ organizationsLimit: number;
501
+ securityFeaturesEnabled: boolean;
502
+ idpInitiatedSsoEnabled: boolean;
503
+ samlApplicationsLimit: number;
504
+ };
505
+ resources: Record<string, number>;
506
+ roles: Record<string, number>;
507
+ quota: {
508
+ auditLogsRetentionDays: number | null;
509
+ mauLimit: number | null;
510
+ applicationsLimit: number | null;
511
+ thirdPartyApplicationsLimit: number | null;
512
+ scopesPerResourceLimit: number | null;
513
+ socialConnectorsLimit: number | null;
514
+ userRolesLimit: number | null;
515
+ machineToMachineRolesLimit: number | null;
516
+ scopesPerRoleLimit: number | null;
517
+ hooksLimit: number | null;
518
+ customJwtEnabled: boolean;
519
+ subjectTokenEnabled: boolean;
520
+ bringYourUiEnabled: boolean;
521
+ collectUserProfileEnabled: boolean;
522
+ tokenLimit: number | null;
523
+ machineToMachineLimit: number | null;
524
+ resourcesLimit: number | null;
525
+ enterpriseSsoLimit: number | null;
526
+ tenantMembersLimit: number | null;
527
+ mfaEnabled: boolean;
528
+ organizationsEnabled: boolean;
529
+ organizationsLimit: number | null;
530
+ securityFeaturesEnabled: boolean;
531
+ idpInitiatedSsoEnabled: boolean;
532
+ samlApplicationsLimit: number | null;
533
+ };
534
+ basicQuota: {
535
+ auditLogsRetentionDays: number | null;
536
+ mauLimit: number | null;
537
+ applicationsLimit: number | null;
538
+ thirdPartyApplicationsLimit: number | null;
539
+ scopesPerResourceLimit: number | null;
540
+ socialConnectorsLimit: number | null;
541
+ userRolesLimit: number | null;
542
+ machineToMachineRolesLimit: number | null;
543
+ scopesPerRoleLimit: number | null;
544
+ hooksLimit: number | null;
545
+ customJwtEnabled: boolean;
546
+ subjectTokenEnabled: boolean;
547
+ bringYourUiEnabled: boolean;
548
+ collectUserProfileEnabled: boolean;
549
+ tokenLimit: number | null;
550
+ machineToMachineLimit: number | null;
551
+ resourcesLimit: number | null;
552
+ enterpriseSsoLimit: number | null;
553
+ tenantMembersLimit: number | null;
554
+ mfaEnabled: boolean;
555
+ organizationsEnabled: boolean;
556
+ organizationsLimit: number | null;
557
+ securityFeaturesEnabled: boolean;
558
+ idpInitiatedSsoEnabled: boolean;
559
+ samlApplicationsLimit: number | null;
560
+ };
561
+ }>;
562
+ } & {
563
+ "/tenants/:tenantId/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/periodic-usage", unknown, unknown, {
564
+ mauLimit: number;
565
+ tokenLimit: number;
566
+ }>;
567
+ } & {
568
+ "/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", {
569
+ id: string;
570
+ name: string | null;
571
+ createdAt: Date;
572
+ defaultPriceId: string | null;
573
+ unitPrice: number | null;
574
+ type: LogtoSkuType;
575
+ quota: {
576
+ auditLogsRetentionDays?: number | null | undefined;
577
+ mauLimit?: number | null | undefined;
578
+ applicationsLimit?: number | null | undefined;
579
+ thirdPartyApplicationsLimit?: number | null | undefined;
580
+ scopesPerResourceLimit?: number | null | undefined;
581
+ socialConnectorsLimit?: number | null | undefined;
582
+ userRolesLimit?: number | null | undefined;
583
+ machineToMachineRolesLimit?: number | null | undefined;
584
+ scopesPerRoleLimit?: number | null | undefined;
585
+ hooksLimit?: number | null | undefined;
586
+ customJwtEnabled?: boolean | undefined;
587
+ subjectTokenEnabled?: boolean | undefined;
588
+ bringYourUiEnabled?: boolean | undefined;
589
+ collectUserProfileEnabled?: boolean | undefined;
590
+ tokenLimit?: number | null | undefined;
591
+ machineToMachineLimit?: number | null | undefined;
592
+ resourcesLimit?: number | null | undefined;
593
+ enterpriseSsoLimit?: number | null | undefined;
594
+ tenantMembersLimit?: number | null | undefined;
595
+ mfaEnabled?: boolean | undefined;
596
+ organizationsEnabled?: boolean | undefined;
597
+ organizationsLimit?: number | null | undefined;
598
+ securityFeaturesEnabled?: boolean | undefined;
599
+ idpInitiatedSsoEnabled?: boolean | undefined;
600
+ samlApplicationsLimit?: number | null | undefined;
601
+ };
602
+ isDefault: boolean;
603
+ updatedAt: Date;
604
+ productId: string | null;
605
+ }>>>;
229
606
  } & {
230
607
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
231
608
  invoices: {
232
- status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
233
- createdAt: Date;
234
609
  id: string;
610
+ createdAt: Date;
611
+ status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
235
612
  updatedAt: Date;
236
613
  customerId: string | null;
237
614
  billingReason: string | null;
@@ -239,22 +616,59 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
239
616
  periodEnd: Date;
240
617
  amountDue: number;
241
618
  amountPaid: number;
619
+ basicSkuId: string | null;
242
620
  subscriptionId: string | null;
243
621
  hostedInvoiceUrl: string | null;
244
622
  invoicePdf: string | null;
245
623
  planName: string | null;
624
+ skuId?: string | null | undefined;
246
625
  }[];
247
626
  }>;
627
+ } & {
628
+ "/tenants/:tenantId/available-skus": import("@withtyped/server").PathGuard<"/:tenantId/available-skus", {
629
+ type?: LogtoSkuType | undefined;
630
+ }, unknown, {
631
+ id: string;
632
+ name: string | null;
633
+ createdAt: Date;
634
+ defaultPriceId: string | null;
635
+ unitPrice: number | null;
636
+ type: LogtoSkuType;
637
+ quota: {
638
+ auditLogsRetentionDays?: number | null | undefined;
639
+ mauLimit?: number | null | undefined;
640
+ applicationsLimit?: number | null | undefined;
641
+ thirdPartyApplicationsLimit?: number | null | undefined;
642
+ scopesPerResourceLimit?: number | null | undefined;
643
+ socialConnectorsLimit?: number | null | undefined;
644
+ userRolesLimit?: number | null | undefined;
645
+ machineToMachineRolesLimit?: number | null | undefined;
646
+ scopesPerRoleLimit?: number | null | undefined;
647
+ hooksLimit?: number | null | undefined;
648
+ customJwtEnabled?: boolean | undefined;
649
+ subjectTokenEnabled?: boolean | undefined;
650
+ bringYourUiEnabled?: boolean | undefined;
651
+ collectUserProfileEnabled?: boolean | undefined;
652
+ tokenLimit?: number | null | undefined;
653
+ machineToMachineLimit?: number | null | undefined;
654
+ resourcesLimit?: number | null | undefined;
655
+ enterpriseSsoLimit?: number | null | undefined;
656
+ tenantMembersLimit?: number | null | undefined;
657
+ mfaEnabled?: boolean | undefined;
658
+ organizationsEnabled?: boolean | undefined;
659
+ organizationsLimit?: number | null | undefined;
660
+ securityFeaturesEnabled?: boolean | undefined;
661
+ idpInitiatedSsoEnabled?: boolean | undefined;
662
+ samlApplicationsLimit?: number | null | undefined;
663
+ };
664
+ isDefault: boolean;
665
+ updatedAt: Date;
666
+ productId: string | null;
667
+ }[]>;
248
668
  } & {
249
669
  "/tenants/:tenantId/invoices/:invoiceId/hosted-invoice-url": import("@withtyped/server").PathGuard<"/:tenantId/invoices/:invoiceId/hosted-invoice-url", unknown, unknown, {
250
670
  hostedInvoiceUrl: string;
251
671
  }>;
252
- } & {
253
- "/tenants/:tenantId/usage": import("@withtyped/server").PathGuard<"/:tenantId/usage", unknown, unknown, {
254
- activeUsers: number;
255
- cost: number;
256
- tokenUsage: number;
257
- }>;
258
672
  };
259
673
  post: {
260
674
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
@@ -270,8 +684,8 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
270
684
  copy: {};
271
685
  head: {};
272
686
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
273
- options: {};
274
687
  patch: {};
688
+ options: {};
275
689
  get: {
276
690
  "/services/mails/usage": import("@withtyped/server").PathGuard<"/mails/usage", {
277
691
  from?: string | undefined;
@@ -282,10 +696,14 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
282
696
  post: {
283
697
  "/services/mails": import("@withtyped/server").PathGuard<"/mails", unknown, {
284
698
  data: {
285
- type: TemplateType | VerificationCodeType;
699
+ type: TemplateType;
286
700
  payload: {
287
- code?: string | undefined;
288
701
  link?: string | undefined;
702
+ code?: string | undefined;
703
+ locale?: string | undefined;
704
+ } & {
705
+ [k: string]: unknown;
706
+ } & {
289
707
  senderName?: string | undefined;
290
708
  companyInformation?: string | undefined;
291
709
  appLogo?: string | undefined;
@@ -296,108 +714,252 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
296
714
  } & {
297
715
  "/services/send-sms": import("@withtyped/server").PathGuard<"/send-sms", unknown, {
298
716
  data: {
299
- type: TemplateType | VerificationCodeType;
717
+ type: TemplateType;
300
718
  to: string;
301
719
  payload: {
302
720
  code?: string | undefined;
303
721
  link?: string | undefined;
722
+ locale?: string | undefined;
723
+ } & {
724
+ [k: string]: unknown;
304
725
  };
305
726
  };
306
727
  }, unknown>;
728
+ } & {
729
+ "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
730
+ isTest?: string | undefined;
731
+ }, {
732
+ token: Record<string, Json>;
733
+ context: Record<string, Json>;
734
+ tokenType: LogtoJwtTokenKeyType.AccessToken;
735
+ script: string;
736
+ environmentVariables?: Record<string, string> | undefined;
737
+ } | {
738
+ token: Record<string, Json>;
739
+ tokenType: LogtoJwtTokenKeyType.ClientCredentials;
740
+ script: string;
741
+ environmentVariables?: Record<string, string> | undefined;
742
+ }, Record<string, unknown>>;
743
+ };
744
+ put: {
745
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, {
746
+ "jwt.accessToken"?: {
747
+ production?: string | undefined;
748
+ test?: string | undefined;
749
+ } | undefined;
750
+ "jwt.clientCredentials"?: {
751
+ production?: string | undefined;
752
+ test?: string | undefined;
753
+ } | undefined;
754
+ }, unknown>;
755
+ };
756
+ delete: {
757
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, unknown, unknown>;
307
758
  };
308
- put: {};
309
- delete: {};
310
759
  copy: {};
311
760
  head: {};
312
761
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
313
- options: {};
314
762
  patch: {};
763
+ options: {};
315
764
  get: {
316
- "/subscription-plans": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
317
- createdAt: Date;
765
+ "/skus": import("@withtyped/server").PathGuard<"/", {
766
+ type?: LogtoSkuType | undefined;
767
+ }, unknown, {
318
768
  id: string;
319
- name: string;
769
+ name: string | null;
770
+ createdAt: Date;
771
+ defaultPriceId: string | null;
772
+ unitPrice: number | null;
773
+ type: LogtoSkuType;
320
774
  quota: {
775
+ auditLogsRetentionDays?: number | null | undefined;
776
+ mauLimit?: number | null | undefined;
777
+ applicationsLimit?: number | null | undefined;
778
+ thirdPartyApplicationsLimit?: number | null | undefined;
779
+ scopesPerResourceLimit?: number | null | undefined;
780
+ socialConnectorsLimit?: number | null | undefined;
781
+ userRolesLimit?: number | null | undefined;
782
+ machineToMachineRolesLimit?: number | null | undefined;
783
+ scopesPerRoleLimit?: number | null | undefined;
784
+ hooksLimit?: number | null | undefined;
785
+ customJwtEnabled?: boolean | undefined;
786
+ subjectTokenEnabled?: boolean | undefined;
787
+ bringYourUiEnabled?: boolean | undefined;
788
+ collectUserProfileEnabled?: boolean | undefined;
789
+ tokenLimit?: number | null | undefined;
790
+ machineToMachineLimit?: number | null | undefined;
791
+ resourcesLimit?: number | null | undefined;
792
+ enterpriseSsoLimit?: number | null | undefined;
793
+ tenantMembersLimit?: number | null | undefined;
794
+ mfaEnabled?: boolean | undefined;
795
+ organizationsEnabled?: boolean | undefined;
796
+ organizationsLimit?: number | null | undefined;
797
+ securityFeaturesEnabled?: boolean | undefined;
798
+ idpInitiatedSsoEnabled?: boolean | undefined;
799
+ samlApplicationsLimit?: number | null | undefined;
800
+ };
801
+ isDefault: boolean;
802
+ updatedAt: Date;
803
+ productId: string | null;
804
+ }[]>;
805
+ };
806
+ post: {
807
+ "/skus": import("@withtyped/server").PathGuard<"/", unknown, {
808
+ type: LogtoSkuType.AddOn;
809
+ quota: {
810
+ tokenLimit?: number | null | undefined;
811
+ machineToMachineLimit?: number | null | undefined;
812
+ resourcesLimit?: number | null | undefined;
813
+ enterpriseSsoLimit?: number | null | undefined;
814
+ hooksLimit?: number | null | undefined;
815
+ tenantMembersLimit?: number | null | undefined;
816
+ mfaEnabled?: boolean | undefined;
817
+ organizationsEnabled?: boolean | undefined;
818
+ organizationsLimit?: number | null | undefined;
819
+ securityFeaturesEnabled?: boolean | undefined;
820
+ userRolesLimit?: number | null | undefined;
821
+ machineToMachineRolesLimit?: number | null | undefined;
822
+ thirdPartyApplicationsLimit?: number | null | undefined;
823
+ samlApplicationsLimit?: number | null | undefined;
824
+ auditLogsRetentionDays?: number | null | undefined;
825
+ mauLimit?: number | null | undefined;
826
+ applicationsLimit?: number | null | undefined;
827
+ scopesPerResourceLimit?: number | null | undefined;
828
+ socialConnectorsLimit?: number | null | undefined;
829
+ scopesPerRoleLimit?: number | null | undefined;
830
+ customJwtEnabled?: boolean | undefined;
831
+ subjectTokenEnabled?: boolean | undefined;
832
+ bringYourUiEnabled?: boolean | undefined;
833
+ collectUserProfileEnabled?: boolean | undefined;
834
+ idpInitiatedSsoEnabled?: boolean | undefined;
835
+ };
836
+ isDefault?: boolean | undefined;
837
+ } | {
838
+ type: LogtoSkuType.Basic;
839
+ quota: {
840
+ auditLogsRetentionDays: number | null;
321
841
  mauLimit: number | null;
322
- tokenLimit: number | null;
323
842
  applicationsLimit: number | null;
324
- machineToMachineLimit: number | null;
325
- resourcesLimit: number | null;
843
+ thirdPartyApplicationsLimit: number | null;
326
844
  scopesPerResourceLimit: number | null;
327
- customDomainEnabled: boolean;
328
- omniSignInEnabled: boolean;
329
- builtInEmailConnectorEnabled: boolean;
330
845
  socialConnectorsLimit: number | null;
331
- standardConnectorsLimit: number | null;
332
- rolesLimit: number | null;
846
+ userRolesLimit: number | null;
333
847
  machineToMachineRolesLimit: number | null;
334
848
  scopesPerRoleLimit: number | null;
335
849
  hooksLimit: number | null;
336
- auditLogsRetentionDays: number | null;
850
+ customJwtEnabled: boolean;
851
+ subjectTokenEnabled: boolean;
852
+ bringYourUiEnabled: boolean;
853
+ collectUserProfileEnabled: boolean;
854
+ tokenLimit: number | null;
855
+ machineToMachineLimit: number | null;
856
+ resourcesLimit: number | null;
857
+ enterpriseSsoLimit: number | null;
858
+ tenantMembersLimit: number | null;
337
859
  mfaEnabled: boolean;
338
860
  organizationsEnabled: boolean;
339
- ssoEnabled: boolean;
340
- thirdPartyApplicationsLimit: number | null;
861
+ organizationsLimit: number | null;
862
+ securityFeaturesEnabled: boolean;
863
+ idpInitiatedSsoEnabled: boolean;
864
+ samlApplicationsLimit: number | null;
341
865
  };
342
- stripeProducts: {
343
- type: "flat" | "tier1" | "tier2" | "tier3";
344
- id: string;
345
- name: string;
346
- price: {
347
- id: string;
348
- unitAmountDecimal: string;
349
- quantity?: 1 | undefined;
350
- unitAmount?: number | null | undefined;
351
- };
352
- description?: string | undefined;
353
- }[];
866
+ addOnRelations: {
867
+ tokenLimit?: string | undefined;
868
+ machineToMachineLimit?: string | undefined;
869
+ resourcesLimit?: string | undefined;
870
+ enterpriseSsoLimit?: string | undefined;
871
+ tenantMembersLimit?: string | undefined;
872
+ mfaEnabled?: string | undefined;
873
+ organizationsLimit?: string | undefined;
874
+ securityFeaturesEnabled?: string | undefined;
875
+ };
876
+ isDefault?: boolean | undefined;
877
+ }, {
878
+ id: string;
879
+ createdAt: Date;
880
+ type: LogtoSkuType;
881
+ isDefault: boolean;
354
882
  updatedAt: Date;
355
- }[]>;
356
- };
357
- post: {};
358
- put: {};
359
- delete: {};
360
- copy: {};
361
- head: {};
362
- }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
363
- options: {};
364
- patch: {};
365
- get: {
366
- "/my/tenant": import("@withtyped/server").PathGuard<"/tenant", unknown, unknown, {
883
+ quota: {
884
+ auditLogsRetentionDays?: number | null | undefined;
885
+ mauLimit?: number | null | undefined;
886
+ applicationsLimit?: number | null | undefined;
887
+ thirdPartyApplicationsLimit?: number | null | undefined;
888
+ scopesPerResourceLimit?: number | null | undefined;
889
+ socialConnectorsLimit?: number | null | undefined;
890
+ userRolesLimit?: number | null | undefined;
891
+ machineToMachineRolesLimit?: number | null | undefined;
892
+ scopesPerRoleLimit?: number | null | undefined;
893
+ hooksLimit?: number | null | undefined;
894
+ customJwtEnabled?: boolean | undefined;
895
+ subjectTokenEnabled?: boolean | undefined;
896
+ bringYourUiEnabled?: boolean | undefined;
897
+ collectUserProfileEnabled?: boolean | undefined;
898
+ tokenLimit?: number | null | undefined;
899
+ machineToMachineLimit?: number | null | undefined;
900
+ resourcesLimit?: number | null | undefined;
901
+ enterpriseSsoLimit?: number | null | undefined;
902
+ tenantMembersLimit?: number | null | undefined;
903
+ mfaEnabled?: boolean | undefined;
904
+ organizationsEnabled?: boolean | undefined;
905
+ organizationsLimit?: number | null | undefined;
906
+ securityFeaturesEnabled?: boolean | undefined;
907
+ idpInitiatedSsoEnabled?: boolean | undefined;
908
+ samlApplicationsLimit?: number | null | undefined;
909
+ };
910
+ }>;
911
+ } & {
912
+ "/skus/:skuId/products": import("@withtyped/server").PathGuard<"/:skuId/products", {
913
+ isOneTime?: string | undefined;
914
+ }, {
367
915
  name: string;
368
- id: string;
369
- indicator: string;
370
- isSuspended: boolean;
371
- tag: TenantTag;
916
+ unitPrice: number;
917
+ }, {
918
+ productId: string;
919
+ }>;
920
+ } & {
921
+ "/skus/basic-sku-usage-add-on-relations": import("@withtyped/server").PathGuard<"/basic-sku-usage-add-on-relations", unknown, {
922
+ basicSkuId: string;
923
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit";
924
+ addOnSkuId: string;
925
+ }, {
926
+ basicSkuId: string;
927
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled" | "organizationsLimit" | "securityFeaturesEnabled" | "userRolesLimit" | "machineToMachineRolesLimit" | "thirdPartyApplicationsLimit" | "samlApplicationsLimit";
928
+ addOnSkuId: string;
372
929
  }>;
373
930
  };
374
- post: {};
375
931
  put: {};
376
- delete: {};
932
+ delete: {
933
+ "/skus/:skuId": import("@withtyped/server").PathGuard<"/:skuId", unknown, unknown, unknown>;
934
+ } & {
935
+ "/skus/basic-sku-usage-add-on-relations/:basicSkuId/:usageKey": import("@withtyped/server").PathGuard<"/basic-sku-usage-add-on-relations/:basicSkuId/:usageKey", unknown, unknown, unknown>;
936
+ };
377
937
  copy: {};
378
938
  head: {};
379
939
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
380
- options: {};
381
940
  patch: {};
941
+ options: {};
382
942
  get: {
383
943
  "/checkout-session/:id": import("@withtyped/server").PathGuard<"/:id", unknown, unknown, {
384
- status: "open" | "complete" | "expired";
385
- createdAt: Date;
386
944
  id: string;
945
+ createdAt: Date;
387
946
  userId: string;
388
- updatedAt: Date;
947
+ status: "open" | "complete" | "expired";
389
948
  tenantId: string | null;
390
- planId: string;
949
+ updatedAt: Date;
950
+ skuId: string | null;
951
+ planId: string | null;
391
952
  }>;
392
953
  };
393
954
  post: {
394
955
  "/checkout-session": import("@withtyped/server").PathGuard<"/", unknown, {
395
- planId: string;
396
956
  successCallbackUrl: string;
397
957
  tenantId?: string | undefined;
398
- cancelCallbackUrl?: string | undefined;
399
- tenantTag?: TenantTag | undefined;
958
+ skuId?: string | undefined;
400
959
  tenantName?: string | undefined;
960
+ tenantTag?: TenantTag | undefined;
961
+ tenantRegionName?: string | undefined;
962
+ cancelCallbackUrl?: string | undefined;
401
963
  }, {
402
964
  sessionId: string;
403
965
  redirectUri?: string | null | undefined;
@@ -408,8 +970,8 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
408
970
  copy: {};
409
971
  head: {};
410
972
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
411
- options: {};
412
973
  patch: {};
974
+ options: {};
413
975
  get: {
414
976
  "/affiliates": import("@withtyped/server").PathGuard<"/", unknown, unknown, AffiliateData[]>;
415
977
  };
@@ -417,33 +979,33 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
417
979
  "/affiliates": import("@withtyped/server").PathGuard<"/", unknown, {
418
980
  name: string;
419
981
  }, {
420
- createdAt: Date;
421
982
  id: string;
983
+ createdAt: Date;
422
984
  name: string;
423
985
  }>;
424
986
  } & {
425
987
  "/affiliates/:id/properties": import("@withtyped/server").PathGuard<"/:id/properties", unknown, {
426
- value: string;
427
988
  type: "hostname" | "query";
428
- }, {
429
989
  value: string;
430
- type: "hostname" | "query";
990
+ }, {
431
991
  createdAt: Date;
432
992
  affiliateId: string;
993
+ type: "hostname" | "query";
994
+ value: string;
433
995
  }>;
434
996
  };
435
997
  put: {};
436
998
  delete: {
437
999
  "/affiliates/:id/properties": import("@withtyped/server").PathGuard<"/:id/properties", unknown, {
438
- value: string;
439
1000
  type: "hostname" | "query";
1001
+ value: string;
440
1002
  }, unknown>;
441
1003
  };
442
1004
  copy: {};
443
1005
  head: {};
444
1006
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
445
- options: {};
446
1007
  patch: {};
1008
+ options: {};
447
1009
  get: {};
448
1010
  post: {
449
1011
  "/affiliate-logs": import("@withtyped/server").PathGuard<"/", unknown, {
@@ -452,8 +1014,8 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
452
1014
  hostname?: string | undefined;
453
1015
  query?: string | undefined;
454
1016
  }, {
455
- createdAt: Date;
456
1017
  id: string;
1018
+ createdAt: Date;
457
1019
  affiliateId: string | null;
458
1020
  userId: string;
459
1021
  createdVia: {
@@ -468,60 +1030,97 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
468
1030
  copy: {};
469
1031
  head: {};
470
1032
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
1033
+ patch: {
1034
+ "/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:invitationId/status", unknown, {
1035
+ status: OrganizationInvitationStatus.Accepted;
1036
+ }, unknown>;
1037
+ };
471
1038
  options: {};
472
- patch: {};
473
- get: {};
474
- post: {};
475
- put: {};
476
- delete: {
477
- "/logs/expired": import("@withtyped/server").PathGuard<"/expired", {
478
- dryRun?: string | undefined;
479
- }, unknown, {
480
- affectedRows: number;
1039
+ get: {
1040
+ "/invitations": import("@withtyped/server").PathGuard<"/", unknown, unknown, ({
1041
+ id: string;
1042
+ createdAt: number;
1043
+ status: OrganizationInvitationStatus;
1044
+ tenantId: string;
1045
+ updatedAt: number;
1046
+ inviterId: string | null;
1047
+ invitee: string;
1048
+ acceptedUserId: string | null;
1049
+ organizationId: string;
1050
+ expiresAt: number;
1051
+ organizationRoles: OrganizationRoleEntity[];
1052
+ } & {
1053
+ tenantName: string;
1054
+ tenantTag: TenantTag;
1055
+ })[]>;
1056
+ } & {
1057
+ "/invitations/:invitationId": import("@withtyped/server").PathGuard<"/:invitationId", unknown, unknown, {
1058
+ id: string;
1059
+ createdAt: number;
1060
+ status: OrganizationInvitationStatus;
1061
+ tenantId: string;
1062
+ updatedAt: number;
1063
+ inviterId: string | null;
1064
+ invitee: string;
1065
+ acceptedUserId: string | null;
1066
+ organizationId: string;
1067
+ expiresAt: number;
1068
+ organizationRoles: OrganizationRoleEntity[];
481
1069
  }>;
482
1070
  };
1071
+ post: {};
1072
+ put: {};
1073
+ delete: {};
483
1074
  copy: {};
484
1075
  head: {};
485
1076
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
1077
+ patch: {};
486
1078
  options: {};
487
- patch: {
488
- "/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:invitationId/status", unknown, {
489
- status: OrganizationInvitationStatus.Accepted;
490
- }, unknown>;
1079
+ get: {
1080
+ "/me/regions": import("@withtyped/server").PathGuard<"/regions", unknown, unknown, {
1081
+ regions: {
1082
+ id: string;
1083
+ name: string;
1084
+ country: string;
1085
+ isPrivate: boolean;
1086
+ }[];
1087
+ }>;
491
1088
  };
492
- get: {};
493
1089
  post: {};
494
1090
  put: {};
495
- delete: {};
1091
+ delete: {
1092
+ "/me": import("@withtyped/server").PathGuard<"/", unknown, unknown, unknown>;
1093
+ };
496
1094
  copy: {};
497
1095
  head: {};
498
1096
  }, "/api">>, "/api">;
499
1097
  export declare const tenantAuthRouter: import("@withtyped/server").Router<RequestContext, import("@withtyped/server").WithBodyContext<import("@withtyped/server").BaseContext & {
500
1098
  request: {
1099
+ id?: string | undefined;
501
1100
  method?: import("@withtyped/server").RequestMethod | undefined;
502
1101
  headers: import("http").IncomingHttpHeaders;
503
1102
  url: URL;
504
1103
  body?: unknown;
505
1104
  };
506
1105
  }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
507
- options: {};
508
1106
  patch: {
509
1107
  "/:tenantId/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/status", unknown, {
510
1108
  status: OrganizationInvitationStatus.Revoked;
511
1109
  }, {
512
- status: OrganizationInvitationStatus;
513
- createdAt: number;
514
1110
  id: string;
515
- updatedAt: number;
1111
+ createdAt: number;
1112
+ status: OrganizationInvitationStatus;
516
1113
  tenantId: string;
517
- organizationId: string;
1114
+ updatedAt: number;
518
1115
  inviterId: string | null;
519
- expiresAt: number;
520
- organizationRoles: OrganizationRoleEntity[];
521
1116
  invitee: string;
522
1117
  acceptedUserId: string | null;
1118
+ organizationId: string;
1119
+ expiresAt: number;
1120
+ organizationRoles: OrganizationRoleEntity[];
523
1121
  }>;
524
1122
  };
1123
+ options: {};
525
1124
  get: {
526
1125
  "/:tenantId/members": import("@withtyped/server").PathGuard<"/:tenantId/members", unknown, unknown, {
527
1126
  id: string;
@@ -533,38 +1132,54 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
533
1132
  organizationRoles: OrganizationRoleEntity[];
534
1133
  }[]>;
535
1134
  } & {
536
- "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, {
537
- status: OrganizationInvitationStatus;
538
- createdAt: number;
1135
+ "/:tenantId/members/:userId/scopes": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId/scopes", unknown, unknown, OrganizationScope[]>;
1136
+ } & {
1137
+ "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, ({
539
1138
  id: string;
540
- updatedAt: number;
1139
+ createdAt: number;
1140
+ status: OrganizationInvitationStatus;
541
1141
  tenantId: string;
542
- organizationId: string;
1142
+ updatedAt: number;
543
1143
  inviterId: string | null;
544
- expiresAt: number;
545
- organizationRoles: OrganizationRoleEntity[];
546
1144
  invitee: string;
547
1145
  acceptedUserId: string | null;
548
- }[]>;
1146
+ organizationId: string;
1147
+ expiresAt: number;
1148
+ organizationRoles: OrganizationRoleEntity[];
1149
+ } & {
1150
+ inviterName?: string | undefined;
1151
+ })[]>;
549
1152
  };
550
1153
  post: {
551
1154
  "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, {
1155
+ invitee: string | string[];
552
1156
  roleName: TenantRole;
553
- invitee: string;
554
1157
  expiresAt?: number | undefined;
555
1158
  }, {
556
- status: OrganizationInvitationStatus;
557
- createdAt: number;
558
1159
  id: string;
559
- updatedAt: number;
1160
+ createdAt: number;
1161
+ status: OrganizationInvitationStatus;
560
1162
  tenantId: string;
561
- organizationId: string;
1163
+ updatedAt: number;
562
1164
  inviterId: string | null;
1165
+ invitee: string;
1166
+ acceptedUserId: string | null;
1167
+ organizationId: string;
563
1168
  expiresAt: number;
564
1169
  organizationRoles: OrganizationRoleEntity[];
1170
+ } | {
1171
+ id: string;
1172
+ createdAt: number;
1173
+ status: OrganizationInvitationStatus;
1174
+ tenantId: string;
1175
+ updatedAt: number;
1176
+ inviterId: string | null;
565
1177
  invitee: string;
566
1178
  acceptedUserId: string | null;
567
- }>;
1179
+ organizationId: string;
1180
+ expiresAt: number;
1181
+ organizationRoles: OrganizationRoleEntity[];
1182
+ }[]>;
568
1183
  } & {
569
1184
  "/:tenantId/invitations/:invitationId/message": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/message", unknown, unknown, unknown>;
570
1185
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/cloud",
3
- "version": "0.2.5-d9576f9",
3
+ "version": "0.2.5-e38aeec",
4
4
  "description": "Logto Cloud service.",
5
5
  "main": "build/index.js",
6
6
  "author": "Silverhand Inc. <contact@silverhand.io>",
@@ -16,26 +16,24 @@
16
16
  "#src/*": "./build/*"
17
17
  },
18
18
  "devDependencies": {
19
- "@silverhand/eslint-config": "5.0.0",
20
- "@silverhand/jest-config": "5.0.0",
21
- "@silverhand/ts-config": "5.0.0",
19
+ "@silverhand/eslint-config": "6.0.1",
20
+ "@silverhand/ts-config": "6.0.0",
22
21
  "@types/accepts": "^1.3.5",
23
22
  "@types/http-proxy": "^1.17.9",
24
- "@types/jest": "^29.4.0",
25
23
  "@types/mime-types": "^2.1.1",
26
- "@types/node": "^20.0.0",
24
+ "@types/node": "^22.14.0",
27
25
  "@types/yargs": "^17.0.24",
28
26
  "dts-bundle-generator": "^9.3.1",
29
- "eslint": "^8.44.0",
30
- "jest": "^29.5.0",
27
+ "eslint": "^8.57.0",
31
28
  "lint-staged": "^15.0.0",
32
29
  "nodemon": "^3.0.0",
33
- "p-map": "^7.0.1",
34
30
  "prettier": "^3.0.0",
35
- "typescript": "^5.3.3"
31
+ "typescript": "^5.3.3",
32
+ "vite-tsconfig-paths": "^5.0.0",
33
+ "vitest": "^3.1.1"
36
34
  },
37
35
  "engines": {
38
- "node": "^20.9.0"
36
+ "node": "^22.14.0"
39
37
  },
40
38
  "eslintConfig": {
41
39
  "extends": "@silverhand",
@@ -51,23 +49,21 @@
51
49
  "access": "public"
52
50
  },
53
51
  "dependencies": {
54
- "@silverhand/essentials": "^2.9.0",
55
- "@withtyped/server": "^0.13.3"
52
+ "@silverhand/essentials": "^2.9.2",
53
+ "@withtyped/server": "^0.14.0"
56
54
  },
57
55
  "scripts": {
58
56
  "precommit": "lint-staged",
59
57
  "build": "rm -rf build/ && tsc -p tsconfig.build.json && pnpm build:lib",
60
58
  "//": "It is not used to build the service itself.",
61
59
  "build:lib": "rm -rf lib/ && dts-bundle-generator src/routes/index.ts --project tsconfig.build.lib.json -o lib/routes/index.d.ts",
62
- "build:test": "rm -rf build/ && tsc -p tsconfig.test.json --sourcemap",
63
60
  "lint": "eslint --ext .ts src",
64
61
  "lint:report": "pnpm lint --format json --output-file report.json",
65
62
  "dev": "rm -rf build/ && nodemon",
66
63
  "start": "NODE_ENV=production node .",
67
- "test:only": "NODE_OPTIONS=\"--experimental-vm-modules --max_old_space_size=4096\" jest --logHeapUsage",
68
- "test": "pnpm build:test && pnpm test:only && pnpm build:lib && pnpm test:types",
69
- "test:ci": "pnpm test:only --coverage --silent",
64
+ "test": "vitest && pnpm build:lib && pnpm test:types",
70
65
  "test:types": "tsc -p tsconfig.test.types.json",
66
+ "test:only": "vitest",
71
67
  "cli": "node ./build/cli/index.js"
72
68
  }
73
69
  }