@logto/schemas 1.22.0 → 1.23.1

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 (47) hide show
  1. package/alterations/1.23.0-1732851150-rename-saml-application-constraints.ts +34 -0
  2. package/alterations/1.23.0-1733212543-add-saml-application-type-to-idp-initiated-sso-application-allow-list.ts +30 -0
  3. package/alterations/1.23.0-1735012422-add-saml-application-sessions-table.ts +37 -0
  4. package/alterations/1.23.1-1735274337-add-encryption-config-to-saml-apps.ts +35 -0
  5. package/alterations/1.23.1-1735292380-make-saml-app-first-party-app.ts +28 -0
  6. package/alterations-js/1.23.0-1732851150-rename-saml-application-constraints.js +28 -0
  7. package/alterations-js/1.23.0-1733212543-add-saml-application-type-to-idp-initiated-sso-application-allow-list.js +24 -0
  8. package/alterations-js/1.23.0-1735012422-add-saml-application-sessions-table.js +32 -0
  9. package/alterations-js/1.23.1-1735274337-add-encryption-config-to-saml-apps.js +31 -0
  10. package/alterations-js/1.23.1-1735292380-make-saml-app-first-party-app.js +24 -0
  11. package/lib/consts/subscriptions.d.ts +16 -15
  12. package/lib/consts/subscriptions.js +16 -14
  13. package/lib/db-entries/index.d.ts +1 -0
  14. package/lib/db-entries/index.js +1 -0
  15. package/lib/db-entries/saml-application-config.d.ts +28 -1
  16. package/lib/db-entries/saml-application-config.js +45 -1
  17. package/lib/db-entries/saml-application-session.d.ts +40 -0
  18. package/lib/db-entries/saml-application-session.js +53 -0
  19. package/lib/foundations/jsonb-types/index.d.ts +1 -0
  20. package/lib/foundations/jsonb-types/index.js +1 -0
  21. package/lib/foundations/jsonb-types/saml-application-configs.d.ts +46 -5
  22. package/lib/foundations/jsonb-types/saml-application-configs.js +35 -4
  23. package/lib/foundations/jsonb-types/saml-application-configs.test.d.ts +1 -0
  24. package/lib/foundations/jsonb-types/saml-application-configs.test.js +49 -0
  25. package/lib/foundations/jsonb-types/saml-application-sessions.d.ts +45 -0
  26. package/lib/foundations/jsonb-types/saml-application-sessions.js +10 -0
  27. package/lib/foundations/jsonb-types/sign-in-experience.d.ts +9 -1
  28. package/lib/foundations/jsonb-types/sign-in-experience.js +8 -0
  29. package/lib/types/index.d.ts +1 -0
  30. package/lib/types/index.js +1 -0
  31. package/lib/types/log/index.d.ts +5 -1
  32. package/lib/types/log/index.js +1 -0
  33. package/lib/types/log/saml.d.ts +7 -0
  34. package/lib/types/log/saml.js +6 -0
  35. package/lib/types/logto-config/index.d.ts +67 -67
  36. package/lib/types/logto-config/jwt-customizer.d.ts +117 -117
  37. package/lib/types/saml-application.d.ts +558 -0
  38. package/lib/types/saml-application.js +60 -0
  39. package/lib/types/system.d.ts +3 -0
  40. package/lib/types/system.js +1 -0
  41. package/lib/types/user.d.ts +7 -7
  42. package/package.json +6 -6
  43. package/tables/applications.sql +1 -4
  44. package/tables/saml_application_configs.sql +4 -6
  45. package/tables/saml_application_secrets.sql +1 -1
  46. package/tables/saml_application_sessions.sql +23 -0
  47. package/tables/sso_connector_idp_initiated_auth_configs.sql +1 -1
@@ -1,12 +1,20 @@
1
+ import { type UserClaim } from '@logto/core-kit';
1
2
  import { z } from 'zod';
2
- export type SamlAttributeMapping = Record<string, string>;
3
- export declare const samlAttributeMappingGuard: z.ZodRecord<z.ZodString, z.ZodString>;
3
+ export type SamlAttributeMapping = Partial<Record<UserClaim | 'id', string>>;
4
+ export declare const samlAttributeMappingKeys: readonly ("name" | "id" | "username" | "email" | "nickname" | "profile" | "website" | "gender" | "birthdate" | "zoneinfo" | "locale" | "address" | "given_name" | "family_name" | "middle_name" | "preferred_username" | "picture" | "email_verified" | "phone_number" | "phone_number_verified" | "updated_at" | "roles" | "organizations" | "organization_data" | "organization_roles" | "custom_data" | "identities" | "sso_identities" | "created_at")[];
5
+ export declare const samlAttributeMappingGuard: z.ZodObject<{
6
+ [x: string]: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ [x: string]: string | undefined;
9
+ }, {
10
+ [x: string]: string | undefined;
11
+ }>;
4
12
  export declare enum BindingType {
5
- POST = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
6
- REDIRECT = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
13
+ Post = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
14
+ Redirect = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
7
15
  }
8
16
  export type SamlAcsUrl = {
9
- binding?: BindingType;
17
+ binding: BindingType;
10
18
  url: string;
11
19
  };
12
20
  export declare const samlAcsUrlGuard: z.ZodObject<{
@@ -19,3 +27,36 @@ export declare const samlAcsUrlGuard: z.ZodObject<{
19
27
  url: string;
20
28
  binding: BindingType;
21
29
  }>;
30
+ export declare const samlEncryptionGuard: z.ZodEffects<z.ZodObject<{
31
+ encryptAssertion: z.ZodOptional<z.ZodBoolean>;
32
+ encryptThenSign: z.ZodOptional<z.ZodBoolean>;
33
+ certificate: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ encryptAssertion?: boolean | undefined;
36
+ encryptThenSign?: boolean | undefined;
37
+ certificate?: string | undefined;
38
+ }, {
39
+ encryptAssertion?: boolean | undefined;
40
+ encryptThenSign?: boolean | undefined;
41
+ certificate?: string | undefined;
42
+ }>, {
43
+ encryptAssertion?: boolean | undefined;
44
+ encryptThenSign?: boolean | undefined;
45
+ certificate?: string | undefined;
46
+ }, {
47
+ encryptAssertion?: boolean | undefined;
48
+ encryptThenSign?: boolean | undefined;
49
+ certificate?: string | undefined;
50
+ }>;
51
+ export type SamlEncryption = z.input<typeof samlEncryptionGuard>;
52
+ export declare enum NameIdFormat {
53
+ /** Uses unique and persistent identifiers for the user. */
54
+ Persistent = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
55
+ /** Returns the email address of the user. */
56
+ EmailAddress = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
57
+ /** Uses unique and transient identifiers for the user, which can be different for each session. */
58
+ Transient = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
59
+ /** The Identity Provider can determine the format. */
60
+ Unspecified = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
61
+ }
62
+ export declare const nameIdFormatGuard: z.ZodNativeEnum<typeof NameIdFormat>;
@@ -1,11 +1,42 @@
1
+ import { completeUserClaims } from '@logto/core-kit';
1
2
  import { z } from 'zod';
2
- export const samlAttributeMappingGuard = z.record(z.string());
3
+ export const samlAttributeMappingKeys = Object.freeze(['id', ...completeUserClaims]);
4
+ export const samlAttributeMappingGuard = z
5
+ .object(Object.fromEntries(samlAttributeMappingKeys.map((claim) => [claim, z.string()])))
6
+ .partial();
3
7
  export var BindingType;
4
8
  (function (BindingType) {
5
- BindingType["POST"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST";
6
- BindingType["REDIRECT"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect";
9
+ BindingType["Post"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST";
10
+ BindingType["Redirect"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect";
7
11
  })(BindingType || (BindingType = {}));
8
12
  export const samlAcsUrlGuard = z.object({
9
13
  binding: z.nativeEnum(BindingType),
10
- url: z.string(),
14
+ url: z.string().url(),
11
15
  });
16
+ export const samlEncryptionGuard = z
17
+ .object({
18
+ encryptAssertion: z.boolean().optional(),
19
+ encryptThenSign: z.boolean().optional(),
20
+ certificate: z.string().optional(),
21
+ })
22
+ .superRefine(({ encryptAssertion, encryptThenSign, certificate }, ctx) => {
23
+ if (encryptAssertion && (encryptThenSign === undefined || certificate === undefined)) {
24
+ ctx.addIssue({
25
+ code: z.ZodIssueCode.custom,
26
+ message: '`encryptThenSign` and `certificate` are required when `encryptAssertion` is `true`',
27
+ });
28
+ return z.NEVER;
29
+ }
30
+ });
31
+ export var NameIdFormat;
32
+ (function (NameIdFormat) {
33
+ /** Uses unique and persistent identifiers for the user. */
34
+ NameIdFormat["Persistent"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent";
35
+ /** Returns the email address of the user. */
36
+ NameIdFormat["EmailAddress"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress";
37
+ /** Uses unique and transient identifiers for the user, which can be different for each session. */
38
+ NameIdFormat["Transient"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient";
39
+ /** The Identity Provider can determine the format. */
40
+ NameIdFormat["Unspecified"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
41
+ })(NameIdFormat || (NameIdFormat = {}));
42
+ export const nameIdFormatGuard = z.nativeEnum(NameIdFormat);
@@ -0,0 +1,49 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { samlEncryptionGuard } from './saml-application-configs.js';
3
+ describe('samlEncryptionGuard', () => {
4
+ // Test valid configurations
5
+ it('should pass when encryption is disabled', () => {
6
+ const result = samlEncryptionGuard.safeParse({
7
+ encryptAssertion: false,
8
+ });
9
+ expect(result.success).toBe(true);
10
+ });
11
+ it('should pass when encryption is enabled with all required fields', () => {
12
+ const result = samlEncryptionGuard.safeParse({
13
+ encryptAssertion: true,
14
+ encryptThenSign: true,
15
+ certificate: '-----BEGIN CERTIFICATE-----\nMIICYDCCAcmgAwIBA...',
16
+ });
17
+ expect(result.success).toBe(true);
18
+ });
19
+ // Test invalid configurations
20
+ it('should fail when encryptAssertion is true but missing encryptThenSign', () => {
21
+ const result = samlEncryptionGuard.safeParse({
22
+ encryptAssertion: true,
23
+ certificate: '-----BEGIN CERTIFICATE-----\nMIICYDCCAcmgAwIBA...',
24
+ });
25
+ expect(result.success).toBe(false);
26
+ if (!result.success) {
27
+ expect(result.error.issues[0]?.message).toBe('`encryptThenSign` and `certificate` are required when `encryptAssertion` is `true`');
28
+ }
29
+ });
30
+ it('should fail when encryptAssertion is true but missing certificate', () => {
31
+ const result = samlEncryptionGuard.safeParse({
32
+ encryptAssertion: true,
33
+ encryptThenSign: true,
34
+ });
35
+ expect(result.success).toBe(false);
36
+ if (!result.success) {
37
+ expect(result.error.issues[0]?.message).toBe('`encryptThenSign` and `certificate` are required when `encryptAssertion` is `true`');
38
+ }
39
+ });
40
+ it('should fail when encryptAssertion is true but missing both encryptThenSign and certificate', () => {
41
+ const result = samlEncryptionGuard.safeParse({
42
+ encryptAssertion: true,
43
+ });
44
+ expect(result.success).toBe(false);
45
+ if (!result.success) {
46
+ expect(result.error.issues[0]?.message).toBe('`encryptThenSign` and `certificate` are required when `encryptAssertion` is `true`');
47
+ }
48
+ });
49
+ });
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ export type AuthRequestInfo = {
3
+ issuer: string;
4
+ request: {
5
+ id: string;
6
+ destination: string;
7
+ issueInstant: string;
8
+ assertionConsumerServiceUrl: string;
9
+ };
10
+ };
11
+ export declare const authRequestInfoGuard: z.ZodObject<{
12
+ issuer: z.ZodString;
13
+ request: z.ZodObject<{
14
+ id: z.ZodString;
15
+ destination: z.ZodString;
16
+ issueInstant: z.ZodString;
17
+ assertionConsumerServiceUrl: z.ZodString;
18
+ }, "strip", z.ZodTypeAny, {
19
+ id: string;
20
+ destination: string;
21
+ issueInstant: string;
22
+ assertionConsumerServiceUrl: string;
23
+ }, {
24
+ id: string;
25
+ destination: string;
26
+ issueInstant: string;
27
+ assertionConsumerServiceUrl: string;
28
+ }>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ issuer: string;
31
+ request: {
32
+ id: string;
33
+ destination: string;
34
+ issueInstant: string;
35
+ assertionConsumerServiceUrl: string;
36
+ };
37
+ }, {
38
+ issuer: string;
39
+ request: {
40
+ id: string;
41
+ destination: string;
42
+ issueInstant: string;
43
+ assertionConsumerServiceUrl: string;
44
+ };
45
+ }>;
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export const authRequestInfoGuard = z.object({
3
+ issuer: z.string(),
4
+ request: z.object({
5
+ id: z.string(),
6
+ destination: z.string(),
7
+ issueInstant: z.string(),
8
+ assertionConsumerServiceUrl: z.string(),
9
+ }),
10
+ });
@@ -142,8 +142,16 @@ export declare enum MfaFactor {
142
142
  export declare const mfaFactorsGuard: z.ZodArray<z.ZodNativeEnum<typeof MfaFactor>, "many">;
143
143
  export type MfaFactors = z.infer<typeof mfaFactorsGuard>;
144
144
  export declare enum MfaPolicy {
145
+ /** @deprecated, use `PromptAtSignInAndSignUp` instead */
145
146
  UserControlled = "UserControlled",
146
- Mandatory = "Mandatory"
147
+ /** MFA is required for all users */
148
+ Mandatory = "Mandatory",
149
+ /** Ask users to set up MFA on their sign-in after registration (skippable, one-time prompt) */
150
+ PromptOnlyAtSignIn = "PromptOnlyAtSignIn",
151
+ /** Ask users to set up MFA during registration (skippable, one-time prompt) */
152
+ PromptAtSignInAndSignUp = "PromptAtSignInAndSignUp",
153
+ /** Do not ask users to set up MFA */
154
+ NoPrompt = "NoPrompt"
147
155
  }
148
156
  export declare const mfaGuard: z.ZodObject<{
149
157
  factors: z.ZodArray<z.ZodNativeEnum<typeof MfaFactor>, "many">;
@@ -65,8 +65,16 @@ export var MfaFactor;
65
65
  export const mfaFactorsGuard = z.nativeEnum(MfaFactor).array();
66
66
  export var MfaPolicy;
67
67
  (function (MfaPolicy) {
68
+ /** @deprecated, use `PromptAtSignInAndSignUp` instead */
68
69
  MfaPolicy["UserControlled"] = "UserControlled";
70
+ /** MFA is required for all users */
69
71
  MfaPolicy["Mandatory"] = "Mandatory";
72
+ /** Ask users to set up MFA on their sign-in after registration (skippable, one-time prompt) */
73
+ MfaPolicy["PromptOnlyAtSignIn"] = "PromptOnlyAtSignIn";
74
+ /** Ask users to set up MFA during registration (skippable, one-time prompt) */
75
+ MfaPolicy["PromptAtSignInAndSignUp"] = "PromptAtSignInAndSignUp";
76
+ /** Do not ask users to set up MFA */
77
+ MfaPolicy["NoPrompt"] = "NoPrompt";
70
78
  })(MfaPolicy || (MfaPolicy = {}));
71
79
  export const mfaGuard = z.object({
72
80
  factors: mfaFactorsGuard,
@@ -30,3 +30,4 @@ export * from './onboarding.js';
30
30
  export * from './sign-in-experience.js';
31
31
  export * from './subject-token.js';
32
32
  export * from './ssr.js';
33
+ export * from './saml-application.js';
@@ -30,3 +30,4 @@ export * from './onboarding.js';
30
30
  export * from './sign-in-experience.js';
31
31
  export * from './subject-token.js';
32
32
  export * from './ssr.js';
33
+ export * from './saml-application.js';
@@ -1,21 +1,25 @@
1
1
  import type * as hook from './hook.js';
2
2
  import type * as interaction from './interaction.js';
3
3
  import type * as jwtCustomizer from './jwt-customizer.js';
4
+ import type * as saml from './saml.js';
4
5
  import type * as token from './token.js';
5
6
  export * as interaction from './interaction.js';
6
7
  export * as token from './token.js';
7
8
  export * as hook from './hook.js';
8
9
  export * as jwtCustomizer from './jwt-customizer.js';
10
+ export * as saml from './saml.js';
9
11
  /** Fallback for empty or unrecognized log keys. */
10
12
  export declare const LogKeyUnknown = "Unknown";
11
- export type AuditLogKey = typeof LogKeyUnknown | interaction.LogKey | token.LogKey;
13
+ export type AuditLogKey = typeof LogKeyUnknown | interaction.LogKey | token.LogKey | saml.LogKey;
12
14
  export type WebhookLogKey = hook.LogKey;
13
15
  export type JwtCustomizerLogKey = jwtCustomizer.LogKey;
16
+ export type SamlLogKey = saml.LogKey;
14
17
  /**
15
18
  * The union type of all available log keys.
16
19
  * Note duplicate keys are allowed but should be avoided.
17
20
  *
18
21
  * @see {@link interaction.LogKey} for interaction log keys.
19
22
  * @see {@link token.LogKey} for token log keys.
23
+ * @see {@link saml.LogKey} for SAML application log keys.
20
24
  **/
21
25
  export type LogKey = AuditLogKey | WebhookLogKey | JwtCustomizerLogKey;
@@ -2,5 +2,6 @@ export * as interaction from './interaction.js';
2
2
  export * as token from './token.js';
3
3
  export * as hook from './hook.js';
4
4
  export * as jwtCustomizer from './jwt-customizer.js';
5
+ export * as saml from './saml.js';
5
6
  /** Fallback for empty or unrecognized log keys. */
6
7
  export const LogKeyUnknown = 'Unknown';
@@ -0,0 +1,7 @@
1
+ export type Prefix = 'SamlApplication';
2
+ export declare const prefix: Prefix;
3
+ export declare enum Scenario {
4
+ Callback = "Callback",
5
+ AuthnRequest = "AuthnRequest"
6
+ }
7
+ export type LogKey = `${Prefix}.${Scenario}`;
@@ -0,0 +1,6 @@
1
+ export const prefix = 'SamlApplication';
2
+ export var Scenario;
3
+ (function (Scenario) {
4
+ Scenario["Callback"] = "Callback";
5
+ Scenario["AuthnRequest"] = "AuthnRequest";
6
+ })(Scenario || (Scenario = {}));
@@ -150,9 +150,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
150
150
  }>>>;
151
151
  avatar: z.ZodOptional<ZodType<string | null, z.ZodTypeDef, string | null>>;
152
152
  customData: z.ZodOptional<ZodType<import("@withtyped/server").JsonObject, z.ZodTypeDef, import("@withtyped/server").JsonObject>>;
153
- updatedAt: z.ZodOptional<ZodType<number, z.ZodTypeDef, number>>;
154
- primaryEmail: z.ZodOptional<ZodType<string | null, z.ZodTypeDef, string | null>>;
155
- primaryPhone: z.ZodOptional<ZodType<string | null, z.ZodTypeDef, string | null>>;
156
153
  identities: z.ZodOptional<ZodType<Record<string, {
157
154
  userId: string;
158
155
  details?: Record<string, import("@withtyped/server").Json> | undefined;
@@ -160,6 +157,9 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
160
157
  userId: string;
161
158
  details?: Record<string, import("@withtyped/server").Json> | undefined;
162
159
  }>>>;
160
+ updatedAt: z.ZodOptional<ZodType<number, z.ZodTypeDef, number>>;
161
+ primaryEmail: z.ZodOptional<ZodType<string | null, z.ZodTypeDef, string | null>>;
162
+ primaryPhone: z.ZodOptional<ZodType<string | null, z.ZodTypeDef, string | null>>;
163
163
  isSuspended: z.ZodOptional<ZodType<boolean, z.ZodTypeDef, boolean>>;
164
164
  lastSignInAt: z.ZodOptional<ZodType<number | null, z.ZodTypeDef, number | null>>;
165
165
  hasPassword: z.ZodOptional<z.ZodBoolean>;
@@ -305,12 +305,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
305
305
  }> | undefined;
306
306
  avatar?: string | null | undefined;
307
307
  customData?: import("@withtyped/server").JsonObject | undefined;
308
- updatedAt?: number | undefined;
309
- organizations?: {
310
- name: string;
311
- id: string;
312
- description: string | null;
313
- }[] | undefined;
314
308
  roles?: {
315
309
  name: string;
316
310
  id: string;
@@ -323,12 +317,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
323
317
  resourceId: string;
324
318
  }[];
325
319
  }[] | undefined;
326
- primaryEmail?: string | null | undefined;
327
- primaryPhone?: string | null | undefined;
320
+ organizations?: {
321
+ name: string;
322
+ id: string;
323
+ description: string | null;
324
+ }[] | undefined;
328
325
  identities?: Record<string, {
329
326
  userId: string;
330
327
  details?: Record<string, import("@withtyped/server").Json> | undefined;
331
328
  }> | undefined;
329
+ updatedAt?: number | undefined;
330
+ primaryEmail?: string | null | undefined;
331
+ primaryPhone?: string | null | undefined;
332
332
  isSuspended?: boolean | undefined;
333
333
  lastSignInAt?: number | null | undefined;
334
334
  hasPassword?: boolean | undefined;
@@ -372,12 +372,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
372
372
  }> | undefined;
373
373
  avatar?: string | null | undefined;
374
374
  customData?: import("@withtyped/server").JsonObject | undefined;
375
- updatedAt?: number | undefined;
376
- organizations?: {
377
- name: string;
378
- id: string;
379
- description: string | null;
380
- }[] | undefined;
381
375
  roles?: {
382
376
  name: string;
383
377
  id: string;
@@ -390,12 +384,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
390
384
  resourceId: string;
391
385
  }[];
392
386
  }[] | undefined;
393
- primaryEmail?: string | null | undefined;
394
- primaryPhone?: string | null | undefined;
387
+ organizations?: {
388
+ name: string;
389
+ id: string;
390
+ description: string | null;
391
+ }[] | undefined;
395
392
  identities?: Record<string, {
396
393
  userId: string;
397
394
  details?: Record<string, import("@withtyped/server").Json> | undefined;
398
395
  }> | undefined;
396
+ updatedAt?: number | undefined;
397
+ primaryEmail?: string | null | undefined;
398
+ primaryPhone?: string | null | undefined;
399
399
  isSuspended?: boolean | undefined;
400
400
  lastSignInAt?: number | null | undefined;
401
401
  hasPassword?: boolean | undefined;
@@ -451,12 +451,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
451
451
  }> | undefined;
452
452
  avatar?: string | null | undefined;
453
453
  customData?: import("@withtyped/server").JsonObject | undefined;
454
- updatedAt?: number | undefined;
455
- organizations?: {
456
- name: string;
457
- id: string;
458
- description: string | null;
459
- }[] | undefined;
460
454
  roles?: {
461
455
  name: string;
462
456
  id: string;
@@ -469,12 +463,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
469
463
  resourceId: string;
470
464
  }[];
471
465
  }[] | undefined;
472
- primaryEmail?: string | null | undefined;
473
- primaryPhone?: string | null | undefined;
466
+ organizations?: {
467
+ name: string;
468
+ id: string;
469
+ description: string | null;
470
+ }[] | undefined;
474
471
  identities?: Record<string, {
475
472
  userId: string;
476
473
  details?: Record<string, import("@withtyped/server").Json> | undefined;
477
474
  }> | undefined;
475
+ updatedAt?: number | undefined;
476
+ primaryEmail?: string | null | undefined;
477
+ primaryPhone?: string | null | undefined;
478
478
  isSuspended?: boolean | undefined;
479
479
  lastSignInAt?: number | null | undefined;
480
480
  hasPassword?: boolean | undefined;
@@ -524,12 +524,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
524
524
  }> | undefined;
525
525
  avatar?: string | null | undefined;
526
526
  customData?: import("@withtyped/server").JsonObject | undefined;
527
- updatedAt?: number | undefined;
528
- organizations?: {
529
- name: string;
530
- id: string;
531
- description: string | null;
532
- }[] | undefined;
533
527
  roles?: {
534
528
  name: string;
535
529
  id: string;
@@ -542,12 +536,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
542
536
  resourceId: string;
543
537
  }[];
544
538
  }[] | undefined;
545
- primaryEmail?: string | null | undefined;
546
- primaryPhone?: string | null | undefined;
539
+ organizations?: {
540
+ name: string;
541
+ id: string;
542
+ description: string | null;
543
+ }[] | undefined;
547
544
  identities?: Record<string, {
548
545
  userId: string;
549
546
  details?: Record<string, import("@withtyped/server").Json> | undefined;
550
547
  }> | undefined;
548
+ updatedAt?: number | undefined;
549
+ primaryEmail?: string | null | undefined;
550
+ primaryPhone?: string | null | undefined;
551
551
  isSuspended?: boolean | undefined;
552
552
  lastSignInAt?: number | null | undefined;
553
553
  hasPassword?: boolean | undefined;
@@ -601,12 +601,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
601
601
  }> | undefined;
602
602
  avatar?: string | null | undefined;
603
603
  customData?: import("@withtyped/server").JsonObject | undefined;
604
- updatedAt?: number | undefined;
605
- organizations?: {
606
- name: string;
607
- id: string;
608
- description: string | null;
609
- }[] | undefined;
610
604
  roles?: {
611
605
  name: string;
612
606
  id: string;
@@ -619,12 +613,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
619
613
  resourceId: string;
620
614
  }[];
621
615
  }[] | undefined;
622
- primaryEmail?: string | null | undefined;
623
- primaryPhone?: string | null | undefined;
616
+ organizations?: {
617
+ name: string;
618
+ id: string;
619
+ description: string | null;
620
+ }[] | undefined;
624
621
  identities?: Record<string, {
625
622
  userId: string;
626
623
  details?: Record<string, import("@withtyped/server").Json> | undefined;
627
624
  }> | undefined;
625
+ updatedAt?: number | undefined;
626
+ primaryEmail?: string | null | undefined;
627
+ primaryPhone?: string | null | undefined;
628
628
  isSuspended?: boolean | undefined;
629
629
  lastSignInAt?: number | null | undefined;
630
630
  hasPassword?: boolean | undefined;
@@ -691,12 +691,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
691
691
  }> | undefined;
692
692
  avatar?: string | null | undefined;
693
693
  customData?: import("@withtyped/server").JsonObject | undefined;
694
- updatedAt?: number | undefined;
695
- organizations?: {
696
- name: string;
697
- id: string;
698
- description: string | null;
699
- }[] | undefined;
700
694
  roles?: {
701
695
  name: string;
702
696
  id: string;
@@ -709,12 +703,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
709
703
  resourceId: string;
710
704
  }[];
711
705
  }[] | undefined;
712
- primaryEmail?: string | null | undefined;
713
- primaryPhone?: string | null | undefined;
706
+ organizations?: {
707
+ name: string;
708
+ id: string;
709
+ description: string | null;
710
+ }[] | undefined;
714
711
  identities?: Record<string, {
715
712
  userId: string;
716
713
  details?: Record<string, import("@withtyped/server").Json> | undefined;
717
714
  }> | undefined;
715
+ updatedAt?: number | undefined;
716
+ primaryEmail?: string | null | undefined;
717
+ primaryPhone?: string | null | undefined;
718
718
  isSuspended?: boolean | undefined;
719
719
  lastSignInAt?: number | null | undefined;
720
720
  hasPassword?: boolean | undefined;
@@ -783,12 +783,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
783
783
  }> | undefined;
784
784
  avatar?: string | null | undefined;
785
785
  customData?: import("@withtyped/server").JsonObject | undefined;
786
- updatedAt?: number | undefined;
787
- organizations?: {
788
- name: string;
789
- id: string;
790
- description: string | null;
791
- }[] | undefined;
792
786
  roles?: {
793
787
  name: string;
794
788
  id: string;
@@ -801,12 +795,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
801
795
  resourceId: string;
802
796
  }[];
803
797
  }[] | undefined;
804
- primaryEmail?: string | null | undefined;
805
- primaryPhone?: string | null | undefined;
798
+ organizations?: {
799
+ name: string;
800
+ id: string;
801
+ description: string | null;
802
+ }[] | undefined;
806
803
  identities?: Record<string, {
807
804
  userId: string;
808
805
  details?: Record<string, import("@withtyped/server").Json> | undefined;
809
806
  }> | undefined;
807
+ updatedAt?: number | undefined;
808
+ primaryEmail?: string | null | undefined;
809
+ primaryPhone?: string | null | undefined;
810
810
  isSuspended?: boolean | undefined;
811
811
  lastSignInAt?: number | null | undefined;
812
812
  hasPassword?: boolean | undefined;
@@ -876,12 +876,6 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
876
876
  }> | undefined;
877
877
  avatar?: string | null | undefined;
878
878
  customData?: import("@withtyped/server").JsonObject | undefined;
879
- updatedAt?: number | undefined;
880
- organizations?: {
881
- name: string;
882
- id: string;
883
- description: string | null;
884
- }[] | undefined;
885
879
  roles?: {
886
880
  name: string;
887
881
  id: string;
@@ -894,12 +888,18 @@ export declare const jwtCustomizerConfigsGuard: z.ZodDiscriminatedUnion<"key", [
894
888
  resourceId: string;
895
889
  }[];
896
890
  }[] | undefined;
897
- primaryEmail?: string | null | undefined;
898
- primaryPhone?: string | null | undefined;
891
+ organizations?: {
892
+ name: string;
893
+ id: string;
894
+ description: string | null;
895
+ }[] | undefined;
899
896
  identities?: Record<string, {
900
897
  userId: string;
901
898
  details?: Record<string, import("@withtyped/server").Json> | undefined;
902
899
  }> | undefined;
900
+ updatedAt?: number | undefined;
901
+ primaryEmail?: string | null | undefined;
902
+ primaryPhone?: string | null | undefined;
903
903
  isSuspended?: boolean | undefined;
904
904
  lastSignInAt?: number | null | undefined;
905
905
  hasPassword?: boolean | undefined;