@logto/cloud 0.2.5-d9576f9 → 0.2.5-e14156b

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 +466 -84
  2. package/package.json +10 -15
@@ -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,12 @@ 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 enum LogtoSkuType {
73
+ Basic = "Basic",
74
+ AddOn = "AddOn"
57
75
  }
58
76
  declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js").default<"affiliate_properties", {
59
77
  createdAt: Date;
@@ -63,16 +81,21 @@ declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js"
63
81
  }, "createdAt", "createdAt">;
64
82
  export type AffiliateProperty = InferModelType<typeof AffiliateProperties>;
65
83
  declare const Affiliates: import("@withtyped/server/lib/model/index.js").default<"affiliates", {
66
- id: string;
67
- createdAt: Date;
68
84
  name: string;
69
- }, "createdAt" | "id", "createdAt" | "id">;
85
+ createdAt: Date;
86
+ id: string;
87
+ }, "id" | "createdAt", "id" | "createdAt">;
70
88
  export type Affiliate = InferModelType<typeof Affiliates>;
89
+ declare enum RegionName {
90
+ EU = "EU",
91
+ US = "US"
92
+ }
71
93
  export type AffiliateData = Affiliate & {
72
94
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
73
95
  };
74
96
  declare const router: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
75
97
  request: {
98
+ id?: string | undefined;
76
99
  method?: import("@withtyped/server").RequestMethod | undefined;
77
100
  headers: import("http").IncomingHttpHeaders;
78
101
  url: URL;
@@ -80,6 +103,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
80
103
  };
81
104
  }, "request"> & {
82
105
  request: Record<string, unknown> & {
106
+ id?: string | undefined;
83
107
  method?: import("@withtyped/server").RequestMethod | undefined;
84
108
  headers: import("http").IncomingHttpHeaders;
85
109
  url: URL;
@@ -89,16 +113,19 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
89
113
  bodyRaw?: Buffer | undefined;
90
114
  };
91
115
  }>, 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
116
  patch: {
94
117
  "/tenants/:tenantId": import("@withtyped/server").PathGuard<"/:tenantId", unknown, {
95
118
  name?: string | undefined;
96
119
  }, {
97
120
  id: string;
98
121
  name: string;
122
+ quota: {
123
+ mauLimit: number | null;
124
+ tokenLimit: number | null;
125
+ };
126
+ createdAt: Date;
99
127
  usage: {
100
128
  activeUsers: number;
101
- cost: number;
102
129
  tokenUsage: number;
103
130
  };
104
131
  indicator: string;
@@ -109,12 +136,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
109
136
  planId: string;
110
137
  currentPeriodStart: Date;
111
138
  currentPeriodEnd: Date;
139
+ id?: string | undefined;
140
+ upcomingInvoice?: {
141
+ subtotal: number;
142
+ subtotalExcludingTax: number | null;
143
+ total: number;
144
+ totalExcludingTax: number | null;
145
+ } | null | undefined;
146
+ isAddOnAvailable?: boolean | undefined;
112
147
  };
148
+ regionName: RegionName;
113
149
  tag: TenantTag;
114
150
  openInvoices: {
115
151
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
116
- createdAt: Date;
117
152
  id: string;
153
+ createdAt: Date;
118
154
  updatedAt: Date;
119
155
  customerId: string | null;
120
156
  billingReason: string | null;
@@ -128,13 +164,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
128
164
  }[];
129
165
  }>;
130
166
  };
167
+ options: {};
131
168
  get: {
132
169
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
133
170
  id: string;
134
171
  name: string;
172
+ quota: {
173
+ mauLimit: number | null;
174
+ tokenLimit: number | null;
175
+ };
176
+ createdAt: Date;
135
177
  usage: {
136
178
  activeUsers: number;
137
- cost: number;
138
179
  tokenUsage: number;
139
180
  };
140
181
  indicator: string;
@@ -145,12 +186,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
145
186
  planId: string;
146
187
  currentPeriodStart: Date;
147
188
  currentPeriodEnd: Date;
189
+ id?: string | undefined;
190
+ upcomingInvoice?: {
191
+ subtotal: number;
192
+ subtotalExcludingTax: number | null;
193
+ total: number;
194
+ totalExcludingTax: number | null;
195
+ } | null | undefined;
196
+ isAddOnAvailable?: boolean | undefined;
148
197
  };
198
+ regionName: RegionName;
149
199
  tag: TenantTag;
150
200
  openInvoices: {
151
201
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
152
- createdAt: Date;
153
202
  id: string;
203
+ createdAt: Date;
154
204
  updatedAt: Date;
155
205
  customerId: string | null;
156
206
  billingReason: string | null;
@@ -168,12 +218,17 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
168
218
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
169
219
  name?: string | undefined;
170
220
  tag?: TenantTag | undefined;
221
+ regionName?: RegionName | undefined;
171
222
  }, {
172
223
  id: string;
173
224
  name: string;
225
+ quota: {
226
+ mauLimit: number | null;
227
+ tokenLimit: number | null;
228
+ };
229
+ createdAt: Date;
174
230
  usage: {
175
231
  activeUsers: number;
176
- cost: number;
177
232
  tokenUsage: number;
178
233
  };
179
234
  indicator: string;
@@ -184,12 +239,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
184
239
  planId: string;
185
240
  currentPeriodStart: Date;
186
241
  currentPeriodEnd: Date;
242
+ id?: string | undefined;
243
+ upcomingInvoice?: {
244
+ subtotal: number;
245
+ subtotalExcludingTax: number | null;
246
+ total: number;
247
+ totalExcludingTax: number | null;
248
+ } | null | undefined;
249
+ isAddOnAvailable?: boolean | undefined;
187
250
  };
251
+ regionName: RegionName;
188
252
  tag: TenantTag;
189
253
  openInvoices: {
190
254
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
191
- createdAt: Date;
192
255
  id: string;
256
+ createdAt: Date;
193
257
  updatedAt: Date;
194
258
  customerId: string | null;
195
259
  billingReason: string | null;
@@ -210,14 +274,120 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
210
274
  copy: {};
211
275
  head: {};
212
276
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
213
- options: {};
214
277
  patch: {};
278
+ options: {};
215
279
  get: {
216
280
  "/tenants/my/subscription": import("@withtyped/server").PathGuard<"/my/subscription", unknown, unknown, {
217
281
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
218
282
  planId: string;
219
283
  currentPeriodStart: Date;
220
284
  currentPeriodEnd: Date;
285
+ id?: string | undefined;
286
+ upcomingInvoice?: {
287
+ subtotal: number;
288
+ subtotalExcludingTax: number | null;
289
+ total: number;
290
+ totalExcludingTax: number | null;
291
+ } | null | undefined;
292
+ isAddOnAvailable?: boolean | undefined;
293
+ }>;
294
+ } & {
295
+ "/tenants/my/subscription/quota": import("@withtyped/server").PathGuard<"/my/subscription/quota", unknown, unknown, {
296
+ mauLimit: number | null;
297
+ tokenLimit: number | null;
298
+ applicationsLimit: number | null;
299
+ machineToMachineLimit: number | null;
300
+ resourcesLimit: number | null;
301
+ scopesPerResourceLimit: number | null;
302
+ socialConnectorsLimit: number | null;
303
+ machineToMachineRolesLimit: number | null;
304
+ scopesPerRoleLimit: number | null;
305
+ hooksLimit: number | null;
306
+ auditLogsRetentionDays: number | null;
307
+ mfaEnabled: boolean;
308
+ organizationsEnabled: boolean;
309
+ thirdPartyApplicationsLimit: number | null;
310
+ tenantMembersLimit: number | null;
311
+ customJwtEnabled: boolean;
312
+ subjectTokenEnabled: boolean;
313
+ bringYourUiEnabled: boolean;
314
+ userRolesLimit: number | null;
315
+ enterpriseSsoLimit: number | null;
316
+ }>;
317
+ } & {
318
+ "/tenants/my/subscription/usage": import("@withtyped/server").PathGuard<"/my/subscription/usage", unknown, unknown, {
319
+ applicationsLimit: number;
320
+ machineToMachineLimit: number;
321
+ resourcesLimit: number;
322
+ scopesPerResourceLimit: number;
323
+ socialConnectorsLimit: number;
324
+ machineToMachineRolesLimit: number;
325
+ scopesPerRoleLimit: number;
326
+ hooksLimit: number;
327
+ mfaEnabled: boolean;
328
+ organizationsEnabled: boolean;
329
+ thirdPartyApplicationsLimit: number;
330
+ tenantMembersLimit: number;
331
+ customJwtEnabled: boolean;
332
+ subjectTokenEnabled: boolean;
333
+ bringYourUiEnabled: boolean;
334
+ userRolesLimit: number;
335
+ enterpriseSsoLimit: number;
336
+ }>;
337
+ } & {
338
+ "/tenants/my/subscription/usage/:entityName/scopes": import("@withtyped/server").PathGuard<"/my/subscription/usage/:entityName/scopes", {
339
+ entityId?: string | undefined;
340
+ }, unknown, Record<string, number>>;
341
+ } & {
342
+ "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
343
+ usage: {
344
+ applicationsLimit: number;
345
+ machineToMachineLimit: number;
346
+ resourcesLimit: number;
347
+ scopesPerResourceLimit: number;
348
+ socialConnectorsLimit: number;
349
+ machineToMachineRolesLimit: number;
350
+ scopesPerRoleLimit: number;
351
+ hooksLimit: number;
352
+ mfaEnabled: boolean;
353
+ organizationsEnabled: boolean;
354
+ thirdPartyApplicationsLimit: number;
355
+ tenantMembersLimit: number;
356
+ customJwtEnabled: boolean;
357
+ subjectTokenEnabled: boolean;
358
+ bringYourUiEnabled: boolean;
359
+ userRolesLimit: number;
360
+ enterpriseSsoLimit: number;
361
+ };
362
+ resources: Record<string, number>;
363
+ roles: Record<string, number>;
364
+ quota: {
365
+ mauLimit: number | null;
366
+ tokenLimit: number | null;
367
+ applicationsLimit: number | null;
368
+ machineToMachineLimit: number | null;
369
+ resourcesLimit: number | null;
370
+ scopesPerResourceLimit: number | null;
371
+ socialConnectorsLimit: number | null;
372
+ machineToMachineRolesLimit: number | null;
373
+ scopesPerRoleLimit: number | null;
374
+ hooksLimit: number | null;
375
+ auditLogsRetentionDays: number | null;
376
+ mfaEnabled: boolean;
377
+ organizationsEnabled: boolean;
378
+ thirdPartyApplicationsLimit: number | null;
379
+ tenantMembersLimit: number | null;
380
+ customJwtEnabled: boolean;
381
+ subjectTokenEnabled: boolean;
382
+ bringYourUiEnabled: boolean;
383
+ userRolesLimit: number | null;
384
+ enterpriseSsoLimit: number | null;
385
+ };
386
+ }>;
387
+ } & {
388
+ "/tenants/my/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/my/subscription/periodic-usage", unknown, unknown, {
389
+ mauLimit: number;
390
+ tokenLimit: number;
221
391
  }>;
222
392
  } & {
223
393
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
@@ -225,13 +395,119 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
225
395
  planId: string;
226
396
  currentPeriodStart: Date;
227
397
  currentPeriodEnd: Date;
398
+ id?: string | undefined;
399
+ upcomingInvoice?: {
400
+ subtotal: number;
401
+ subtotalExcludingTax: number | null;
402
+ total: number;
403
+ totalExcludingTax: number | null;
404
+ } | null | undefined;
405
+ isAddOnAvailable?: boolean | undefined;
406
+ }>;
407
+ } & {
408
+ "/tenants/:tenantId/subscription/quota": import("@withtyped/server").PathGuard<"/:tenantId/subscription/quota", unknown, unknown, {
409
+ mauLimit: number | null;
410
+ tokenLimit: number | null;
411
+ applicationsLimit: number | null;
412
+ machineToMachineLimit: number | null;
413
+ resourcesLimit: number | null;
414
+ scopesPerResourceLimit: number | null;
415
+ socialConnectorsLimit: number | null;
416
+ machineToMachineRolesLimit: number | null;
417
+ scopesPerRoleLimit: number | null;
418
+ hooksLimit: number | null;
419
+ auditLogsRetentionDays: number | null;
420
+ mfaEnabled: boolean;
421
+ organizationsEnabled: boolean;
422
+ thirdPartyApplicationsLimit: number | null;
423
+ tenantMembersLimit: number | null;
424
+ customJwtEnabled: boolean;
425
+ subjectTokenEnabled: boolean;
426
+ bringYourUiEnabled: boolean;
427
+ userRolesLimit: number | null;
428
+ enterpriseSsoLimit: number | null;
429
+ }>;
430
+ } & {
431
+ "/tenants/:tenantId/subscription/usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/usage", unknown, unknown, {
432
+ applicationsLimit: number;
433
+ machineToMachineLimit: number;
434
+ resourcesLimit: number;
435
+ scopesPerResourceLimit: number;
436
+ socialConnectorsLimit: number;
437
+ machineToMachineRolesLimit: number;
438
+ scopesPerRoleLimit: number;
439
+ hooksLimit: number;
440
+ mfaEnabled: boolean;
441
+ organizationsEnabled: boolean;
442
+ thirdPartyApplicationsLimit: number;
443
+ tenantMembersLimit: number;
444
+ customJwtEnabled: boolean;
445
+ subjectTokenEnabled: boolean;
446
+ bringYourUiEnabled: boolean;
447
+ userRolesLimit: number;
448
+ enterpriseSsoLimit: number;
449
+ }>;
450
+ } & {
451
+ "/tenants/:tenantId/subscription/usage/:entityName/scopes": import("@withtyped/server").PathGuard<"/:tenantId/subscription/usage/:entityName/scopes", {
452
+ entityId?: string | undefined;
453
+ }, unknown, Record<string, number>>;
454
+ } & {
455
+ "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
456
+ usage: {
457
+ applicationsLimit: number;
458
+ machineToMachineLimit: number;
459
+ resourcesLimit: number;
460
+ scopesPerResourceLimit: number;
461
+ socialConnectorsLimit: number;
462
+ machineToMachineRolesLimit: number;
463
+ scopesPerRoleLimit: number;
464
+ hooksLimit: number;
465
+ mfaEnabled: boolean;
466
+ organizationsEnabled: boolean;
467
+ thirdPartyApplicationsLimit: number;
468
+ tenantMembersLimit: number;
469
+ customJwtEnabled: boolean;
470
+ subjectTokenEnabled: boolean;
471
+ bringYourUiEnabled: boolean;
472
+ userRolesLimit: number;
473
+ enterpriseSsoLimit: number;
474
+ };
475
+ resources: Record<string, number>;
476
+ roles: Record<string, number>;
477
+ quota: {
478
+ mauLimit: number | null;
479
+ tokenLimit: number | null;
480
+ applicationsLimit: number | null;
481
+ machineToMachineLimit: number | null;
482
+ resourcesLimit: number | null;
483
+ scopesPerResourceLimit: number | null;
484
+ socialConnectorsLimit: number | null;
485
+ machineToMachineRolesLimit: number | null;
486
+ scopesPerRoleLimit: number | null;
487
+ hooksLimit: number | null;
488
+ auditLogsRetentionDays: number | null;
489
+ mfaEnabled: boolean;
490
+ organizationsEnabled: boolean;
491
+ thirdPartyApplicationsLimit: number | null;
492
+ tenantMembersLimit: number | null;
493
+ customJwtEnabled: boolean;
494
+ subjectTokenEnabled: boolean;
495
+ bringYourUiEnabled: boolean;
496
+ userRolesLimit: number | null;
497
+ enterpriseSsoLimit: number | null;
498
+ };
499
+ }>;
500
+ } & {
501
+ "/tenants/:tenantId/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/periodic-usage", unknown, unknown, {
502
+ mauLimit: number;
503
+ tokenLimit: number;
228
504
  }>;
229
505
  } & {
230
506
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
231
507
  invoices: {
232
508
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
233
- createdAt: Date;
234
509
  id: string;
510
+ createdAt: Date;
235
511
  updatedAt: Date;
236
512
  customerId: string | null;
237
513
  billingReason: string | null;
@@ -243,20 +519,21 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
243
519
  hostedInvoiceUrl: string | null;
244
520
  invoicePdf: string | null;
245
521
  planName: string | null;
522
+ skuId?: string | null | undefined;
246
523
  }[];
247
524
  }>;
248
525
  } & {
249
526
  "/tenants/:tenantId/invoices/:invoiceId/hosted-invoice-url": import("@withtyped/server").PathGuard<"/:tenantId/invoices/:invoiceId/hosted-invoice-url", unknown, unknown, {
250
527
  hostedInvoiceUrl: string;
251
528
  }>;
252
- } & {
253
- "/tenants/:tenantId/usage": import("@withtyped/server").PathGuard<"/:tenantId/usage", unknown, unknown, {
254
- activeUsers: number;
255
- cost: number;
256
- tokenUsage: number;
257
- }>;
258
529
  };
259
530
  post: {
531
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
532
+ usageKey: "tokenLimit" | "machineToMachineLimit" | "resourcesLimit" | "enterpriseSsoLimit" | "hooksLimit" | "tenantMembersLimit" | "mfaEnabled" | "organizationsEnabled";
533
+ }, {
534
+ message: string;
535
+ }>;
536
+ } & {
260
537
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
261
538
  callbackUrl?: string | undefined;
262
539
  }, {
@@ -270,8 +547,8 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
270
547
  copy: {};
271
548
  head: {};
272
549
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
273
- options: {};
274
550
  patch: {};
551
+ options: {};
275
552
  get: {
276
553
  "/services/mails/usage": import("@withtyped/server").PathGuard<"/mails/usage", {
277
554
  from?: string | undefined;
@@ -286,6 +563,7 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
286
563
  payload: {
287
564
  code?: string | undefined;
288
565
  link?: string | undefined;
566
+ } & Record<string, string> & {
289
567
  senderName?: string | undefined;
290
568
  companyInformation?: string | undefined;
291
569
  appLogo?: string | undefined;
@@ -301,22 +579,51 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
301
579
  payload: {
302
580
  code?: string | undefined;
303
581
  link?: string | undefined;
304
- };
582
+ } & Record<string, string>;
305
583
  };
306
584
  }, unknown>;
585
+ } & {
586
+ "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
587
+ isTest?: string | undefined;
588
+ }, {
589
+ context: Record<string, Json>;
590
+ script: string;
591
+ tokenType: LogtoJwtTokenKeyType.AccessToken;
592
+ token: Record<string, Json>;
593
+ environmentVariables?: Record<string, string> | undefined;
594
+ } | {
595
+ script: string;
596
+ tokenType: LogtoJwtTokenKeyType.ClientCredentials;
597
+ token: Record<string, Json>;
598
+ environmentVariables?: Record<string, string> | undefined;
599
+ }, Record<string, unknown>>;
600
+ };
601
+ put: {
602
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, {
603
+ "jwt.accessToken"?: {
604
+ production?: string | undefined;
605
+ test?: string | undefined;
606
+ } | undefined;
607
+ "jwt.clientCredentials"?: {
608
+ production?: string | undefined;
609
+ test?: string | undefined;
610
+ } | undefined;
611
+ }, unknown>;
612
+ };
613
+ delete: {
614
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, unknown, unknown>;
307
615
  };
308
- put: {};
309
- delete: {};
310
616
  copy: {};
311
617
  head: {};
312
618
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
313
- options: {};
314
619
  patch: {};
620
+ options: {};
315
621
  get: {
316
622
  "/subscription-plans": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
317
- createdAt: Date;
318
623
  id: string;
624
+ createdAt: Date;
319
625
  name: string;
626
+ updatedAt: Date;
320
627
  quota: {
321
628
  mauLimit: number | null;
322
629
  tokenLimit: number | null;
@@ -338,6 +645,10 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
338
645
  organizationsEnabled: boolean;
339
646
  ssoEnabled: boolean;
340
647
  thirdPartyApplicationsLimit: number | null;
648
+ tenantMembersLimit: number | null;
649
+ customJwtEnabled: boolean;
650
+ subjectTokenEnabled: boolean;
651
+ bringYourUiEnabled: boolean;
341
652
  };
342
653
  stripeProducts: {
343
654
  type: "flat" | "tier1" | "tier2" | "tier3";
@@ -351,7 +662,6 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
351
662
  };
352
663
  description?: string | undefined;
353
664
  }[];
354
- updatedAt: Date;
355
665
  }[]>;
356
666
  };
357
667
  post: {};
@@ -360,16 +670,41 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
360
670
  copy: {};
361
671
  head: {};
362
672
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
363
- options: {};
364
673
  patch: {};
674
+ options: {};
365
675
  get: {
366
- "/my/tenant": import("@withtyped/server").PathGuard<"/tenant", unknown, unknown, {
367
- name: string;
676
+ "/skus": import("@withtyped/server").PathGuard<"/", {
677
+ type?: LogtoSkuType | undefined;
678
+ }, unknown, {
679
+ type: LogtoSkuType;
368
680
  id: string;
369
- indicator: string;
370
- isSuspended: boolean;
371
- tag: TenantTag;
372
- }>;
681
+ name: string | null;
682
+ quota: {
683
+ mauLimit?: number | null | undefined;
684
+ tokenLimit?: number | null | undefined;
685
+ applicationsLimit?: number | null | undefined;
686
+ machineToMachineLimit?: number | null | undefined;
687
+ resourcesLimit?: number | null | undefined;
688
+ scopesPerResourceLimit?: number | null | undefined;
689
+ socialConnectorsLimit?: number | null | undefined;
690
+ machineToMachineRolesLimit?: number | null | undefined;
691
+ scopesPerRoleLimit?: number | null | undefined;
692
+ hooksLimit?: number | null | undefined;
693
+ auditLogsRetentionDays?: number | null | undefined;
694
+ mfaEnabled?: boolean | undefined;
695
+ organizationsEnabled?: boolean | undefined;
696
+ thirdPartyApplicationsLimit?: number | null | undefined;
697
+ tenantMembersLimit?: number | null | undefined;
698
+ customJwtEnabled?: boolean | undefined;
699
+ subjectTokenEnabled?: boolean | undefined;
700
+ bringYourUiEnabled?: boolean | undefined;
701
+ userRolesLimit?: number | null | undefined;
702
+ enterpriseSsoLimit?: number | null | undefined;
703
+ };
704
+ createdAt: Date;
705
+ updatedAt: Date;
706
+ unitPrice: number | null;
707
+ }[]>;
373
708
  };
374
709
  post: {};
375
710
  put: {};
@@ -377,17 +712,18 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
377
712
  copy: {};
378
713
  head: {};
379
714
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
380
- options: {};
381
715
  patch: {};
716
+ options: {};
382
717
  get: {
383
718
  "/checkout-session/:id": import("@withtyped/server").PathGuard<"/:id", unknown, unknown, {
384
- status: "open" | "complete" | "expired";
385
- createdAt: Date;
386
719
  id: string;
720
+ createdAt: Date;
387
721
  userId: string;
388
- updatedAt: Date;
722
+ status: "open" | "complete" | "expired";
389
723
  tenantId: string | null;
724
+ updatedAt: Date;
390
725
  planId: string;
726
+ skuId: string | null;
391
727
  }>;
392
728
  };
393
729
  post: {
@@ -395,9 +731,11 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
395
731
  planId: string;
396
732
  successCallbackUrl: string;
397
733
  tenantId?: string | undefined;
398
- cancelCallbackUrl?: string | undefined;
399
- tenantTag?: TenantTag | undefined;
734
+ skuId?: string | undefined;
400
735
  tenantName?: string | undefined;
736
+ tenantTag?: TenantTag | undefined;
737
+ tenantRegionName?: RegionName | undefined;
738
+ cancelCallbackUrl?: string | undefined;
401
739
  }, {
402
740
  sessionId: string;
403
741
  redirectUri?: string | null | undefined;
@@ -408,8 +746,8 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
408
746
  copy: {};
409
747
  head: {};
410
748
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
411
- options: {};
412
749
  patch: {};
750
+ options: {};
413
751
  get: {
414
752
  "/affiliates": import("@withtyped/server").PathGuard<"/", unknown, unknown, AffiliateData[]>;
415
753
  };
@@ -417,33 +755,33 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
417
755
  "/affiliates": import("@withtyped/server").PathGuard<"/", unknown, {
418
756
  name: string;
419
757
  }, {
420
- createdAt: Date;
421
758
  id: string;
759
+ createdAt: Date;
422
760
  name: string;
423
761
  }>;
424
762
  } & {
425
763
  "/affiliates/:id/properties": import("@withtyped/server").PathGuard<"/:id/properties", unknown, {
426
- value: string;
427
764
  type: "hostname" | "query";
428
- }, {
429
765
  value: string;
430
- type: "hostname" | "query";
766
+ }, {
431
767
  createdAt: Date;
432
768
  affiliateId: string;
769
+ type: "hostname" | "query";
770
+ value: string;
433
771
  }>;
434
772
  };
435
773
  put: {};
436
774
  delete: {
437
775
  "/affiliates/:id/properties": import("@withtyped/server").PathGuard<"/:id/properties", unknown, {
438
- value: string;
439
776
  type: "hostname" | "query";
777
+ value: string;
440
778
  }, unknown>;
441
779
  };
442
780
  copy: {};
443
781
  head: {};
444
782
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
445
- options: {};
446
783
  patch: {};
784
+ options: {};
447
785
  get: {};
448
786
  post: {
449
787
  "/affiliate-logs": import("@withtyped/server").PathGuard<"/", unknown, {
@@ -452,8 +790,8 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
452
790
  hostname?: string | undefined;
453
791
  query?: string | undefined;
454
792
  }, {
455
- createdAt: Date;
456
793
  id: string;
794
+ createdAt: Date;
457
795
  affiliateId: string | null;
458
796
  userId: string;
459
797
  createdVia: {
@@ -468,60 +806,88 @@ declare const router: import("@withtyped/server").Router<RequestContext, WithAut
468
806
  copy: {};
469
807
  head: {};
470
808
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
809
+ patch: {
810
+ "/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:invitationId/status", unknown, {
811
+ status: OrganizationInvitationStatus.Accepted;
812
+ }, unknown>;
813
+ };
471
814
  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;
815
+ get: {
816
+ "/invitations": import("@withtyped/server").PathGuard<"/", unknown, unknown, ({
817
+ id: string;
818
+ createdAt: number;
819
+ status: OrganizationInvitationStatus;
820
+ tenantId: string;
821
+ updatedAt: number;
822
+ inviterId: string | null;
823
+ invitee: string;
824
+ acceptedUserId: string | null;
825
+ organizationId: string;
826
+ expiresAt: number;
827
+ organizationRoles: OrganizationRoleEntity[];
828
+ } & {
829
+ tenantName: string;
830
+ tenantTag: TenantTag;
831
+ })[]>;
832
+ } & {
833
+ "/invitations/:invitationId": import("@withtyped/server").PathGuard<"/:invitationId", unknown, unknown, {
834
+ id: string;
835
+ createdAt: number;
836
+ status: OrganizationInvitationStatus;
837
+ tenantId: string;
838
+ updatedAt: number;
839
+ inviterId: string | null;
840
+ invitee: string;
841
+ acceptedUserId: string | null;
842
+ organizationId: string;
843
+ expiresAt: number;
844
+ organizationRoles: OrganizationRoleEntity[];
481
845
  }>;
482
846
  };
847
+ post: {};
848
+ put: {};
849
+ delete: {};
483
850
  copy: {};
484
851
  head: {};
485
852
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
853
+ patch: {};
486
854
  options: {};
487
- patch: {
488
- "/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:invitationId/status", unknown, {
489
- status: OrganizationInvitationStatus.Accepted;
490
- }, unknown>;
491
- };
492
855
  get: {};
493
856
  post: {};
494
857
  put: {};
495
- delete: {};
858
+ delete: {
859
+ "/me": import("@withtyped/server").PathGuard<"/", unknown, unknown, unknown>;
860
+ };
496
861
  copy: {};
497
862
  head: {};
498
863
  }, "/api">>, "/api">;
499
864
  export declare const tenantAuthRouter: import("@withtyped/server").Router<RequestContext, import("@withtyped/server").WithBodyContext<import("@withtyped/server").BaseContext & {
500
865
  request: {
866
+ id?: string | undefined;
501
867
  method?: import("@withtyped/server").RequestMethod | undefined;
502
868
  headers: import("http").IncomingHttpHeaders;
503
869
  url: URL;
504
870
  body?: unknown;
505
871
  };
506
872
  }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
507
- options: {};
508
873
  patch: {
509
874
  "/:tenantId/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/status", unknown, {
510
875
  status: OrganizationInvitationStatus.Revoked;
511
876
  }, {
512
- status: OrganizationInvitationStatus;
513
- createdAt: number;
514
877
  id: string;
515
- updatedAt: number;
878
+ createdAt: number;
879
+ status: OrganizationInvitationStatus;
516
880
  tenantId: string;
517
- organizationId: string;
881
+ updatedAt: number;
518
882
  inviterId: string | null;
519
- expiresAt: number;
520
- organizationRoles: OrganizationRoleEntity[];
521
883
  invitee: string;
522
884
  acceptedUserId: string | null;
885
+ organizationId: string;
886
+ expiresAt: number;
887
+ organizationRoles: OrganizationRoleEntity[];
523
888
  }>;
524
889
  };
890
+ options: {};
525
891
  get: {
526
892
  "/:tenantId/members": import("@withtyped/server").PathGuard<"/:tenantId/members", unknown, unknown, {
527
893
  id: string;
@@ -533,38 +899,54 @@ export declare const tenantAuthRouter: import("@withtyped/server").Router<Reques
533
899
  organizationRoles: OrganizationRoleEntity[];
534
900
  }[]>;
535
901
  } & {
536
- "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, {
537
- status: OrganizationInvitationStatus;
538
- createdAt: number;
902
+ "/:tenantId/members/:userId/scopes": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId/scopes", unknown, unknown, OrganizationScope[]>;
903
+ } & {
904
+ "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, ({
539
905
  id: string;
540
- updatedAt: number;
906
+ createdAt: number;
907
+ status: OrganizationInvitationStatus;
541
908
  tenantId: string;
542
- organizationId: string;
909
+ updatedAt: number;
543
910
  inviterId: string | null;
544
- expiresAt: number;
545
- organizationRoles: OrganizationRoleEntity[];
546
911
  invitee: string;
547
912
  acceptedUserId: string | null;
548
- }[]>;
913
+ organizationId: string;
914
+ expiresAt: number;
915
+ organizationRoles: OrganizationRoleEntity[];
916
+ } & {
917
+ inviterName?: string | undefined;
918
+ })[]>;
549
919
  };
550
920
  post: {
551
921
  "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, {
922
+ invitee: string | string[];
552
923
  roleName: TenantRole;
553
- invitee: string;
554
924
  expiresAt?: number | undefined;
555
925
  }, {
556
- status: OrganizationInvitationStatus;
557
- createdAt: number;
558
926
  id: string;
559
- updatedAt: number;
927
+ createdAt: number;
928
+ status: OrganizationInvitationStatus;
560
929
  tenantId: string;
561
- organizationId: string;
930
+ updatedAt: number;
562
931
  inviterId: string | null;
932
+ invitee: string;
933
+ acceptedUserId: string | null;
934
+ organizationId: string;
563
935
  expiresAt: number;
564
936
  organizationRoles: OrganizationRoleEntity[];
937
+ } | {
938
+ id: string;
939
+ createdAt: number;
940
+ status: OrganizationInvitationStatus;
941
+ tenantId: string;
942
+ updatedAt: number;
943
+ inviterId: string | null;
565
944
  invitee: string;
566
945
  acceptedUserId: string | null;
567
- }>;
946
+ organizationId: string;
947
+ expiresAt: number;
948
+ organizationRoles: OrganizationRoleEntity[];
949
+ }[]>;
568
950
  } & {
569
951
  "/:tenantId/invitations/:invitationId/message": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/message", unknown, unknown, unknown>;
570
952
  };
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-e14156b",
4
4
  "description": "Logto Cloud service.",
5
5
  "main": "build/index.js",
6
6
  "author": "Silverhand Inc. <contact@silverhand.io>",
@@ -16,23 +16,21 @@
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
24
  "@types/node": "^20.0.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": "^4.3.1",
33
+ "vitest": "^2.0.0"
36
34
  },
37
35
  "engines": {
38
36
  "node": "^20.9.0"
@@ -51,22 +49,19 @@
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.1",
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",
71
66
  "cli": "node ./build/cli/index.js"
72
67
  }