@robelest/convex-auth 0.0.4-preview.29 → 0.0.4-preview.30
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.
- package/dist/bin.js +34 -1
- package/dist/browser/passkey.js +2 -2
- package/dist/client/core/types.d.ts +4 -15
- package/dist/client/factors/device.js +3 -3
- package/dist/client/factors/totp.js +8 -8
- package/dist/client/index.js +7 -7
- package/dist/component/convex.config.d.ts +2 -2
- package/dist/component/model.d.ts +25 -25
- package/dist/component/schema.d.ts +289 -289
- package/dist/core/index.d.ts +5 -24
- package/dist/core/index.js +3 -16
- package/dist/server/auth-context.d.ts +1 -1
- package/dist/server/auth-context.js +14 -1
- package/dist/server/auth.d.ts +3 -17
- package/dist/server/auth.js +2 -7
- package/dist/server/config.js +10 -0
- package/dist/server/context.js +2 -4
- package/dist/server/contract.d.ts +1 -1
- package/dist/server/convexIdentity.d.ts +15 -0
- package/dist/server/convexIdentity.js +1 -0
- package/dist/server/core.js +0 -13
- package/dist/server/device.js +13 -12
- package/dist/server/env.js +10 -2
- package/dist/server/http.d.ts +1 -1
- package/dist/server/identity.js +30 -4
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/server/mounts.d.ts +79 -79
- package/dist/server/mutations/refresh.js +38 -7
- package/dist/server/mutations/signin.js +12 -2
- package/dist/server/mutations/signout.js +27 -10
- package/dist/server/mutations/store.js +1 -1
- package/dist/server/oauth/factory.js +2 -1
- package/dist/server/passkey.js +12 -13
- package/dist/server/prefetch.js +8 -8
- package/dist/server/runtime.d.ts +19 -25
- package/dist/server/runtime.js +7 -40
- package/dist/server/sessions.d.ts +2 -1
- package/dist/server/sessions.js +21 -11
- package/dist/server/signin.js +17 -16
- package/dist/server/sso/domain.d.ts +1 -1
- package/dist/server/telemetry.js +58 -0
- package/dist/server/tokens.js +24 -4
- package/dist/server/totp.js +13 -11
- package/dist/server/types.d.ts +58 -2
- package/dist/server/utils/span.js +10 -1
- package/dist/shared/authResults.d.ts +16 -0
- package/package.json +6 -3
- package/dist/server/constants.js +0 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
1
|
+
import * as convex_values91 from "convex/values";
|
|
2
|
+
import * as convex_server89 from "convex/server";
|
|
3
3
|
|
|
4
4
|
//#region src/component/schema.d.ts
|
|
5
5
|
/**
|
|
@@ -9,32 +9,32 @@ import * as convex_server83 from "convex/server";
|
|
|
9
9
|
* verification codes, PKCE verifiers, rate limits) and hierarchical group
|
|
10
10
|
* management (groups, members, invites).
|
|
11
11
|
*/
|
|
12
|
-
declare const _default:
|
|
12
|
+
declare const _default: convex_server89.SchemaDefinition<{
|
|
13
13
|
/**
|
|
14
14
|
* Authenticated users. A user may have multiple linked accounts
|
|
15
15
|
* and multiple concurrent sessions.
|
|
16
16
|
*/
|
|
17
|
-
User:
|
|
17
|
+
User: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
18
18
|
name?: string | undefined;
|
|
19
19
|
email?: string | undefined;
|
|
20
|
+
image?: string | undefined;
|
|
20
21
|
phone?: string | undefined;
|
|
21
22
|
extend?: any;
|
|
22
|
-
image?: string | undefined;
|
|
23
23
|
emailVerificationTime?: number | undefined;
|
|
24
24
|
phoneVerificationTime?: number | undefined;
|
|
25
25
|
isAnonymous?: boolean | undefined;
|
|
26
26
|
hasTotp?: boolean | undefined;
|
|
27
27
|
}, {
|
|
28
|
-
name:
|
|
29
|
-
image:
|
|
30
|
-
email:
|
|
31
|
-
emailVerificationTime:
|
|
32
|
-
phone:
|
|
33
|
-
phoneVerificationTime:
|
|
34
|
-
isAnonymous:
|
|
35
|
-
hasTotp:
|
|
36
|
-
extend:
|
|
37
|
-
}, "required", "name" | "email" | "
|
|
28
|
+
name: convex_values91.VString<string | undefined, "optional">;
|
|
29
|
+
image: convex_values91.VString<string | undefined, "optional">;
|
|
30
|
+
email: convex_values91.VString<string | undefined, "optional">;
|
|
31
|
+
emailVerificationTime: convex_values91.VFloat64<number | undefined, "optional">;
|
|
32
|
+
phone: convex_values91.VString<string | undefined, "optional">;
|
|
33
|
+
phoneVerificationTime: convex_values91.VFloat64<number | undefined, "optional">;
|
|
34
|
+
isAnonymous: convex_values91.VBoolean<boolean | undefined, "optional">;
|
|
35
|
+
hasTotp: convex_values91.VBoolean<boolean | undefined, "optional">;
|
|
36
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
37
|
+
}, "required", "name" | "email" | "image" | "phone" | "extend" | "emailVerificationTime" | "phoneVerificationTime" | "isAnonymous" | "hasTotp" | `extend.${string}`>, {
|
|
38
38
|
email: ["email", "_creationTime"];
|
|
39
39
|
email_verified: ["email", "emailVerificationTime", "_creationTime"];
|
|
40
40
|
phone: ["phone", "_creationTime"];
|
|
@@ -45,12 +45,12 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
45
45
|
* across different devices or browsers. Sessions expire after a
|
|
46
46
|
* configurable duration.
|
|
47
47
|
*/
|
|
48
|
-
Session:
|
|
49
|
-
userId:
|
|
48
|
+
Session: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
49
|
+
userId: convex_values91.GenericId<"User">;
|
|
50
50
|
expirationTime: number;
|
|
51
51
|
}, {
|
|
52
|
-
userId:
|
|
53
|
-
expirationTime:
|
|
52
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User">, "required">;
|
|
53
|
+
expirationTime: convex_values91.VFloat64<number, "required">;
|
|
54
54
|
}, "required", "userId" | "expirationTime">, {
|
|
55
55
|
user_id: ["userId", "_creationTime"];
|
|
56
56
|
}, {}, {}>;
|
|
@@ -59,23 +59,23 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
59
59
|
* authentication provider (e.g. Google OAuth, email/password).
|
|
60
60
|
* A user can have multiple accounts linked.
|
|
61
61
|
*/
|
|
62
|
-
Account:
|
|
62
|
+
Account: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
63
|
+
emailVerified?: string | undefined;
|
|
63
64
|
extend?: any;
|
|
64
65
|
secret?: string | undefined;
|
|
65
|
-
emailVerified?: string | undefined;
|
|
66
66
|
phoneVerified?: string | undefined;
|
|
67
|
-
userId:
|
|
67
|
+
userId: convex_values91.GenericId<"User">;
|
|
68
68
|
provider: string;
|
|
69
69
|
providerAccountId: string;
|
|
70
70
|
}, {
|
|
71
|
-
userId:
|
|
72
|
-
provider:
|
|
73
|
-
providerAccountId:
|
|
74
|
-
secret:
|
|
75
|
-
emailVerified:
|
|
76
|
-
phoneVerified:
|
|
77
|
-
extend:
|
|
78
|
-
}, "required", "userId" | "extend" | `extend.${string}` | "provider" | "providerAccountId" | "secret" | "
|
|
71
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User">, "required">;
|
|
72
|
+
provider: convex_values91.VString<string, "required">;
|
|
73
|
+
providerAccountId: convex_values91.VString<string, "required">;
|
|
74
|
+
secret: convex_values91.VString<string | undefined, "optional">;
|
|
75
|
+
emailVerified: convex_values91.VString<string | undefined, "optional">;
|
|
76
|
+
phoneVerified: convex_values91.VString<string | undefined, "optional">;
|
|
77
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
78
|
+
}, "required", "emailVerified" | "userId" | "extend" | `extend.${string}` | "provider" | "providerAccountId" | "secret" | "phoneVerified">, {
|
|
79
79
|
user_id_provider: ["userId", "provider", "_creationTime"];
|
|
80
80
|
provider_account_id: ["provider", "providerAccountId", "_creationTime"];
|
|
81
81
|
}, {}, {}>;
|
|
@@ -87,16 +87,16 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
87
87
|
* been used yet. A 10-second reuse window allows for concurrent requests.
|
|
88
88
|
* Any invalid use of a token invalidates the entire chain.
|
|
89
89
|
*/
|
|
90
|
-
RefreshToken:
|
|
90
|
+
RefreshToken: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
91
91
|
firstUsedTime?: number | undefined;
|
|
92
|
-
parentRefreshTokenId?:
|
|
92
|
+
parentRefreshTokenId?: convex_values91.GenericId<"RefreshToken"> | undefined;
|
|
93
93
|
expirationTime: number;
|
|
94
|
-
sessionId:
|
|
94
|
+
sessionId: convex_values91.GenericId<"Session">;
|
|
95
95
|
}, {
|
|
96
|
-
sessionId:
|
|
97
|
-
expirationTime:
|
|
98
|
-
firstUsedTime:
|
|
99
|
-
parentRefreshTokenId:
|
|
96
|
+
sessionId: convex_values91.VId<convex_values91.GenericId<"Session">, "required">;
|
|
97
|
+
expirationTime: convex_values91.VFloat64<number, "required">;
|
|
98
|
+
firstUsedTime: convex_values91.VFloat64<number | undefined, "optional">;
|
|
99
|
+
parentRefreshTokenId: convex_values91.VId<convex_values91.GenericId<"RefreshToken"> | undefined, "optional">;
|
|
100
100
|
}, "required", "expirationTime" | "sessionId" | "firstUsedTime" | "parentRefreshTokenId">, {
|
|
101
101
|
session_id: ["sessionId", "_creationTime"];
|
|
102
102
|
session_id_first_used: ["sessionId", "firstUsedTime", "_creationTime"];
|
|
@@ -105,23 +105,23 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
105
105
|
/**
|
|
106
106
|
* Verification codes for OTP tokens, magic link tokens, and OAuth codes.
|
|
107
107
|
*/
|
|
108
|
-
VerificationCode:
|
|
108
|
+
VerificationCode: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
109
109
|
emailVerified?: string | undefined;
|
|
110
110
|
phoneVerified?: string | undefined;
|
|
111
111
|
verifier?: string | undefined;
|
|
112
112
|
expirationTime: number;
|
|
113
113
|
provider: string;
|
|
114
|
-
accountId:
|
|
114
|
+
accountId: convex_values91.GenericId<"Account">;
|
|
115
115
|
code: string;
|
|
116
116
|
}, {
|
|
117
|
-
accountId:
|
|
118
|
-
provider:
|
|
119
|
-
code:
|
|
120
|
-
expirationTime:
|
|
121
|
-
verifier:
|
|
122
|
-
emailVerified:
|
|
123
|
-
phoneVerified:
|
|
124
|
-
}, "required", "
|
|
117
|
+
accountId: convex_values91.VId<convex_values91.GenericId<"Account">, "required">;
|
|
118
|
+
provider: convex_values91.VString<string, "required">;
|
|
119
|
+
code: convex_values91.VString<string, "required">;
|
|
120
|
+
expirationTime: convex_values91.VFloat64<number, "required">;
|
|
121
|
+
verifier: convex_values91.VString<string | undefined, "optional">;
|
|
122
|
+
emailVerified: convex_values91.VString<string | undefined, "optional">;
|
|
123
|
+
phoneVerified: convex_values91.VString<string | undefined, "optional">;
|
|
124
|
+
}, "required", "emailVerified" | "expirationTime" | "provider" | "phoneVerified" | "accountId" | "code" | "verifier">, {
|
|
125
125
|
account_id: ["accountId", "_creationTime"];
|
|
126
126
|
code: ["code", "_creationTime"];
|
|
127
127
|
}, {}, {}>;
|
|
@@ -129,12 +129,12 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
129
129
|
* PKCE verifiers for OAuth flows. Stores the cryptographic verifier
|
|
130
130
|
* used to prove the authorization request originated from this client.
|
|
131
131
|
*/
|
|
132
|
-
AuthVerifier:
|
|
133
|
-
sessionId?:
|
|
132
|
+
AuthVerifier: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
133
|
+
sessionId?: convex_values91.GenericId<"Session"> | undefined;
|
|
134
134
|
signature?: string | undefined;
|
|
135
135
|
}, {
|
|
136
|
-
sessionId:
|
|
137
|
-
signature:
|
|
136
|
+
sessionId: convex_values91.VId<convex_values91.GenericId<"Session"> | undefined, "optional">;
|
|
137
|
+
signature: convex_values91.VString<string | undefined, "optional">;
|
|
138
138
|
}, "required", "sessionId" | "signature">, {
|
|
139
139
|
signature: ["signature", "_creationTime"];
|
|
140
140
|
}, {}, {}>;
|
|
@@ -143,11 +143,11 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
143
143
|
* registered authenticator (Touch ID, Face ID, security key, etc.).
|
|
144
144
|
* A user can have multiple passkeys across different devices.
|
|
145
145
|
*/
|
|
146
|
-
Passkey:
|
|
146
|
+
Passkey: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
147
147
|
name?: string | undefined;
|
|
148
148
|
lastUsedAt?: number | undefined;
|
|
149
149
|
transports?: string[] | undefined;
|
|
150
|
-
userId:
|
|
150
|
+
userId: convex_values91.GenericId<"User">;
|
|
151
151
|
createdAt: number;
|
|
152
152
|
credentialId: string;
|
|
153
153
|
publicKey: ArrayBuffer;
|
|
@@ -156,17 +156,17 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
156
156
|
deviceType: string;
|
|
157
157
|
backedUp: boolean;
|
|
158
158
|
}, {
|
|
159
|
-
userId:
|
|
160
|
-
credentialId:
|
|
161
|
-
publicKey:
|
|
162
|
-
algorithm:
|
|
163
|
-
counter:
|
|
164
|
-
transports:
|
|
165
|
-
deviceType:
|
|
166
|
-
backedUp:
|
|
167
|
-
name:
|
|
168
|
-
createdAt:
|
|
169
|
-
lastUsedAt:
|
|
159
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User">, "required">; /** Base64url-encoded credential ID from the authenticator. */
|
|
160
|
+
credentialId: convex_values91.VString<string, "required">; /** Public key bytes (SEC1 uncompressed for EC, SPKI for RSA). */
|
|
161
|
+
publicKey: convex_values91.VBytes<ArrayBuffer, "required">; /** COSE algorithm identifier (-7 for ES256, -257 for RS256, -8 for EdDSA). */
|
|
162
|
+
algorithm: convex_values91.VFloat64<number, "required">; /** Signature counter for clone detection. Many authenticators return 0. */
|
|
163
|
+
counter: convex_values91.VFloat64<number, "required">; /** Authenticator transport hints (e.g. "internal", "hybrid", "usb", "ble", "nfc"). */
|
|
164
|
+
transports: convex_values91.VArray<string[] | undefined, convex_values91.VString<string, "required">, "optional">; /** Whether this is a single-device or multi-device (synced) credential. */
|
|
165
|
+
deviceType: convex_values91.VString<string, "required">; /** Whether the credential is backed up (synced passkey). */
|
|
166
|
+
backedUp: convex_values91.VBoolean<boolean, "required">; /** User-assigned friendly name (e.g. "MacBook Touch ID"). */
|
|
167
|
+
name: convex_values91.VString<string | undefined, "optional">;
|
|
168
|
+
createdAt: convex_values91.VFloat64<number, "required">;
|
|
169
|
+
lastUsedAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
170
170
|
}, "required", "name" | "lastUsedAt" | "userId" | "createdAt" | "credentialId" | "publicKey" | "algorithm" | "counter" | "transports" | "deviceType" | "backedUp">, {
|
|
171
171
|
user_id: ["userId", "_creationTime"];
|
|
172
172
|
credential_id: ["credentialId", "_creationTime"];
|
|
@@ -180,24 +180,24 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
180
180
|
* by successfully entering a code from their authenticator app.
|
|
181
181
|
* Unverified enrollments are in-progress setup that can be discarded.
|
|
182
182
|
*/
|
|
183
|
-
TotpFactor:
|
|
183
|
+
TotpFactor: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
184
184
|
name?: string | undefined;
|
|
185
185
|
lastUsedAt?: number | undefined;
|
|
186
|
-
userId:
|
|
186
|
+
userId: convex_values91.GenericId<"User">;
|
|
187
187
|
createdAt: number;
|
|
188
188
|
secret: ArrayBuffer;
|
|
189
189
|
digits: number;
|
|
190
190
|
period: number;
|
|
191
191
|
verified: boolean;
|
|
192
192
|
}, {
|
|
193
|
-
userId:
|
|
194
|
-
secret:
|
|
195
|
-
digits:
|
|
196
|
-
period:
|
|
197
|
-
verified:
|
|
198
|
-
name:
|
|
199
|
-
createdAt:
|
|
200
|
-
lastUsedAt:
|
|
193
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User">, "required">; /** Raw TOTP secret key bytes. */
|
|
194
|
+
secret: convex_values91.VBytes<ArrayBuffer, "required">; /** Number of digits in each code (typically 6). */
|
|
195
|
+
digits: convex_values91.VFloat64<number, "required">; /** Time period in seconds for code rotation (typically 30). */
|
|
196
|
+
period: convex_values91.VFloat64<number, "required">; /** Whether setup has been confirmed with a valid code. */
|
|
197
|
+
verified: convex_values91.VBoolean<boolean, "required">; /** User-assigned friendly name (e.g. "Google Authenticator"). */
|
|
198
|
+
name: convex_values91.VString<string | undefined, "optional">;
|
|
199
|
+
createdAt: convex_values91.VFloat64<number, "required">;
|
|
200
|
+
lastUsedAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
201
201
|
}, "required", "name" | "lastUsedAt" | "userId" | "createdAt" | "secret" | "digits" | "period" | "verified">, {
|
|
202
202
|
user_id: ["userId", "_creationTime"];
|
|
203
203
|
user_id_verified: ["userId", "verified", "_creationTime"];
|
|
@@ -207,9 +207,9 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
207
207
|
* device auth session — the device polls with `deviceCode` while the
|
|
208
208
|
* user authorizes via `userCode` on a secondary device.
|
|
209
209
|
*/
|
|
210
|
-
DeviceCode:
|
|
211
|
-
userId?:
|
|
212
|
-
sessionId?:
|
|
210
|
+
DeviceCode: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
211
|
+
userId?: convex_values91.GenericId<"User"> | undefined;
|
|
212
|
+
sessionId?: convex_values91.GenericId<"Session"> | undefined;
|
|
213
213
|
lastPolledAt?: number | undefined;
|
|
214
214
|
status: "pending" | "authorized" | "denied";
|
|
215
215
|
expiresAt: number;
|
|
@@ -217,14 +217,14 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
217
217
|
userCode: string;
|
|
218
218
|
interval: number;
|
|
219
219
|
}, {
|
|
220
|
-
/** High-entropy code used by the device for polling. Stored as SHA-256 hash. */deviceCodeHash:
|
|
221
|
-
userCode:
|
|
222
|
-
expiresAt:
|
|
223
|
-
interval:
|
|
224
|
-
status:
|
|
225
|
-
userId:
|
|
226
|
-
sessionId:
|
|
227
|
-
lastPolledAt:
|
|
220
|
+
/** High-entropy code used by the device for polling. Stored as SHA-256 hash. */deviceCodeHash: convex_values91.VString<string, "required">; /** Short human-readable code the user enters (e.g. "WDJB-MJHT"). */
|
|
221
|
+
userCode: convex_values91.VString<string, "required">; /** Expiration timestamp (ms since epoch). */
|
|
222
|
+
expiresAt: convex_values91.VFloat64<number, "required">; /** Minimum polling interval in seconds. */
|
|
223
|
+
interval: convex_values91.VFloat64<number, "required">; /** Current status of this device authorization session. */
|
|
224
|
+
status: convex_values91.VUnion<"pending" | "authorized" | "denied", [convex_values91.VLiteral<"pending", "required">, convex_values91.VLiteral<"authorized", "required">, convex_values91.VLiteral<"denied", "required">], "required", never>; /** Set when the user authorizes — links to the authorizing user. */
|
|
225
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User"> | undefined, "optional">; /** Set when the user authorizes — the session created for the device. */
|
|
226
|
+
sessionId: convex_values91.VId<convex_values91.GenericId<"Session"> | undefined, "optional">; /** Timestamp of the last poll request (for slow_down enforcement). */
|
|
227
|
+
lastPolledAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
228
228
|
}, "required", "status" | "expiresAt" | "userId" | "sessionId" | "deviceCodeHash" | "userCode" | "interval" | "lastPolledAt">, {
|
|
229
229
|
device_code_hash: ["deviceCodeHash", "_creationTime"];
|
|
230
230
|
user_code_status: ["userCode", "status", "_creationTime"];
|
|
@@ -232,14 +232,14 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
232
232
|
/**
|
|
233
233
|
* Rate limit tracking for OTP and password sign-in attempts.
|
|
234
234
|
*/
|
|
235
|
-
RateLimit:
|
|
235
|
+
RateLimit: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
236
236
|
identifier: string;
|
|
237
237
|
last_attempt_time: number;
|
|
238
238
|
attempts_left: number;
|
|
239
239
|
}, {
|
|
240
|
-
identifier:
|
|
241
|
-
last_attempt_time:
|
|
242
|
-
attempts_left:
|
|
240
|
+
identifier: convex_values91.VString<string, "required">;
|
|
241
|
+
last_attempt_time: convex_values91.VFloat64<number, "required">;
|
|
242
|
+
attempts_left: convex_values91.VFloat64<number, "required">;
|
|
243
243
|
}, "required", "identifier" | "last_attempt_time" | "attempts_left">, {
|
|
244
244
|
by_identifier: ["identifier", "_creationTime"];
|
|
245
245
|
}, {}, {}>;
|
|
@@ -248,12 +248,12 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
248
248
|
* Groups can nest arbitrarily deep via `parentGroupId` for modeling
|
|
249
249
|
* organizations, teams, departments, or any tree structure.
|
|
250
250
|
*/
|
|
251
|
-
Group:
|
|
251
|
+
Group: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
252
252
|
slug?: string | undefined;
|
|
253
253
|
type?: string | undefined;
|
|
254
254
|
extend?: any;
|
|
255
|
-
parentGroupId?:
|
|
256
|
-
rootGroupId?:
|
|
255
|
+
parentGroupId?: convex_values91.GenericId<"Group"> | undefined;
|
|
256
|
+
rootGroupId?: convex_values91.GenericId<"Group"> | undefined;
|
|
257
257
|
isRoot?: boolean | undefined;
|
|
258
258
|
tags?: {
|
|
259
259
|
key: string;
|
|
@@ -300,23 +300,23 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
300
300
|
} | undefined;
|
|
301
301
|
name: string;
|
|
302
302
|
}, {
|
|
303
|
-
name:
|
|
304
|
-
slug:
|
|
305
|
-
type:
|
|
306
|
-
parentGroupId:
|
|
307
|
-
rootGroupId:
|
|
308
|
-
isRoot:
|
|
309
|
-
tags:
|
|
303
|
+
name: convex_values91.VString<string, "required">;
|
|
304
|
+
slug: convex_values91.VString<string | undefined, "optional">;
|
|
305
|
+
type: convex_values91.VString<string | undefined, "optional">;
|
|
306
|
+
parentGroupId: convex_values91.VId<convex_values91.GenericId<"Group"> | undefined, "optional">; /** Denormalized root group ID. Self-referencing for root groups. */
|
|
307
|
+
rootGroupId: convex_values91.VId<convex_values91.GenericId<"Group"> | undefined, "optional">; /** Denormalized flag: `true` when `parentGroupId` is absent. */
|
|
308
|
+
isRoot: convex_values91.VBoolean<boolean | undefined, "optional">; /** Faceted classification tags. Normalized at write time (trimmed, lowercased). */
|
|
309
|
+
tags: convex_values91.VArray<{
|
|
310
310
|
key: string;
|
|
311
311
|
value: string;
|
|
312
|
-
}[] | undefined,
|
|
312
|
+
}[] | undefined, convex_values91.VObject<{
|
|
313
313
|
key: string;
|
|
314
314
|
value: string;
|
|
315
315
|
}, {
|
|
316
|
-
key:
|
|
317
|
-
value:
|
|
316
|
+
key: convex_values91.VString<string, "required">;
|
|
317
|
+
value: convex_values91.VString<string, "required">;
|
|
318
318
|
}, "required", "key" | "value">, "optional">;
|
|
319
|
-
policy:
|
|
319
|
+
policy: convex_values91.VObject<{
|
|
320
320
|
extend?: any;
|
|
321
321
|
version: 1;
|
|
322
322
|
identity: {
|
|
@@ -355,22 +355,22 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
355
355
|
};
|
|
356
356
|
};
|
|
357
357
|
} | undefined, {
|
|
358
|
-
version:
|
|
359
|
-
identity:
|
|
358
|
+
version: convex_values91.VLiteral<1, "required">;
|
|
359
|
+
identity: convex_values91.VObject<{
|
|
360
360
|
accountLinking: {
|
|
361
361
|
oidc: "verifiedEmail" | "none";
|
|
362
362
|
saml: "verifiedEmail" | "none";
|
|
363
363
|
};
|
|
364
364
|
}, {
|
|
365
|
-
accountLinking:
|
|
365
|
+
accountLinking: convex_values91.VObject<{
|
|
366
366
|
oidc: "verifiedEmail" | "none";
|
|
367
367
|
saml: "verifiedEmail" | "none";
|
|
368
368
|
}, {
|
|
369
|
-
oidc:
|
|
370
|
-
saml:
|
|
369
|
+
oidc: convex_values91.VUnion<"verifiedEmail" | "none", [convex_values91.VLiteral<"verifiedEmail", "required">, convex_values91.VLiteral<"none", "required">], "required", never>;
|
|
370
|
+
saml: convex_values91.VUnion<"verifiedEmail" | "none", [convex_values91.VLiteral<"verifiedEmail", "required">, convex_values91.VLiteral<"none", "required">], "required", never>;
|
|
371
371
|
}, "required", "oidc" | "saml">;
|
|
372
372
|
}, "required", "accountLinking" | "accountLinking.oidc" | "accountLinking.saml">;
|
|
373
|
-
provisioning:
|
|
373
|
+
provisioning: convex_values91.VObject<{
|
|
374
374
|
user: {
|
|
375
375
|
createOnSignIn: boolean;
|
|
376
376
|
updateProfileOnLogin: "never" | "missing" | "always";
|
|
@@ -399,58 +399,58 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
399
399
|
source: "protocol";
|
|
400
400
|
};
|
|
401
401
|
}, {
|
|
402
|
-
user:
|
|
402
|
+
user: convex_values91.VObject<{
|
|
403
403
|
createOnSignIn: boolean;
|
|
404
404
|
updateProfileOnLogin: "never" | "missing" | "always";
|
|
405
405
|
updateProfileFromScim: "never" | "missing" | "always";
|
|
406
406
|
authority: "app" | "sso" | "scim";
|
|
407
407
|
}, {
|
|
408
|
-
createOnSignIn:
|
|
409
|
-
updateProfileOnLogin:
|
|
410
|
-
updateProfileFromScim:
|
|
411
|
-
authority:
|
|
408
|
+
createOnSignIn: convex_values91.VBoolean<boolean, "required">;
|
|
409
|
+
updateProfileOnLogin: convex_values91.VUnion<"never" | "missing" | "always", [convex_values91.VLiteral<"never", "required">, convex_values91.VLiteral<"missing", "required">, convex_values91.VLiteral<"always", "required">], "required", never>;
|
|
410
|
+
updateProfileFromScim: convex_values91.VUnion<"never" | "missing" | "always", [convex_values91.VLiteral<"never", "required">, convex_values91.VLiteral<"missing", "required">, convex_values91.VLiteral<"always", "required">], "required", never>;
|
|
411
|
+
authority: convex_values91.VUnion<"app" | "sso" | "scim", [convex_values91.VLiteral<"app", "required">, convex_values91.VLiteral<"sso", "required">, convex_values91.VLiteral<"scim", "required">], "required", never>;
|
|
412
412
|
}, "required", "createOnSignIn" | "updateProfileOnLogin" | "updateProfileFromScim" | "authority">;
|
|
413
|
-
scimReuse:
|
|
413
|
+
scimReuse: convex_values91.VObject<{
|
|
414
414
|
user: "none" | "externalId";
|
|
415
415
|
}, {
|
|
416
|
-
user:
|
|
416
|
+
user: convex_values91.VUnion<"none" | "externalId", [convex_values91.VLiteral<"externalId", "required">, convex_values91.VLiteral<"none", "required">], "required", never>;
|
|
417
417
|
}, "required", "user">;
|
|
418
|
-
jit:
|
|
418
|
+
jit: convex_values91.VObject<{
|
|
419
419
|
defaultRole?: string | undefined;
|
|
420
420
|
defaultRoleIds?: string[] | undefined;
|
|
421
421
|
mode: "off" | "createUser" | "createUserAndMembership";
|
|
422
422
|
}, {
|
|
423
|
-
mode:
|
|
424
|
-
defaultRole:
|
|
425
|
-
defaultRoleIds:
|
|
423
|
+
mode: convex_values91.VUnion<"off" | "createUser" | "createUserAndMembership", [convex_values91.VLiteral<"off", "required">, convex_values91.VLiteral<"createUser", "required">, convex_values91.VLiteral<"createUserAndMembership", "required">], "required", never>;
|
|
424
|
+
defaultRole: convex_values91.VString<string | undefined, "optional">;
|
|
425
|
+
defaultRoleIds: convex_values91.VArray<string[] | undefined, convex_values91.VString<string, "required">, "optional">;
|
|
426
426
|
}, "required", "mode" | "defaultRole" | "defaultRoleIds">;
|
|
427
|
-
deprovision:
|
|
427
|
+
deprovision: convex_values91.VObject<{
|
|
428
428
|
mode: "soft" | "hard";
|
|
429
429
|
}, {
|
|
430
|
-
mode:
|
|
430
|
+
mode: convex_values91.VUnion<"soft" | "hard", [convex_values91.VLiteral<"soft", "required">, convex_values91.VLiteral<"hard", "required">], "required", never>;
|
|
431
431
|
}, "required", "mode">;
|
|
432
|
-
groups:
|
|
432
|
+
groups: convex_values91.VObject<{
|
|
433
433
|
mapping?: Record<string, string[]> | undefined;
|
|
434
434
|
mode: "ignore" | "sync";
|
|
435
435
|
source: "protocol";
|
|
436
436
|
}, {
|
|
437
|
-
mode:
|
|
438
|
-
source:
|
|
439
|
-
mapping:
|
|
437
|
+
mode: convex_values91.VUnion<"ignore" | "sync", [convex_values91.VLiteral<"ignore", "required">, convex_values91.VLiteral<"sync", "required">], "required", never>;
|
|
438
|
+
source: convex_values91.VLiteral<"protocol", "required">;
|
|
439
|
+
mapping: convex_values91.VRecord<Record<string, string[]> | undefined, convex_values91.VString<string, "required">, convex_values91.VArray<string[], convex_values91.VString<string, "required">, "required">, "optional", string>;
|
|
440
440
|
}, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
|
|
441
|
-
roles:
|
|
441
|
+
roles: convex_values91.VObject<{
|
|
442
442
|
mapping?: Record<string, string[]> | undefined;
|
|
443
443
|
mode: "map" | "ignore";
|
|
444
444
|
source: "protocol";
|
|
445
445
|
}, {
|
|
446
|
-
mode:
|
|
447
|
-
source:
|
|
448
|
-
mapping:
|
|
446
|
+
mode: convex_values91.VUnion<"map" | "ignore", [convex_values91.VLiteral<"ignore", "required">, convex_values91.VLiteral<"map", "required">], "required", never>;
|
|
447
|
+
source: convex_values91.VLiteral<"protocol", "required">;
|
|
448
|
+
mapping: convex_values91.VRecord<Record<string, string[]> | undefined, convex_values91.VString<string, "required">, convex_values91.VArray<string[], convex_values91.VString<string, "required">, "required">, "optional", string>;
|
|
449
449
|
}, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
|
|
450
450
|
}, "required", "user" | "scimReuse" | "jit" | "deprovision" | "groups" | "roles" | "user.createOnSignIn" | "user.updateProfileOnLogin" | "user.updateProfileFromScim" | "user.authority" | "scimReuse.user" | "jit.mode" | "jit.defaultRole" | "jit.defaultRoleIds" | "deprovision.mode" | "groups.mode" | "groups.source" | "groups.mapping" | `groups.mapping.${string}` | "roles.mode" | "roles.source" | "roles.mapping" | `roles.mapping.${string}`>;
|
|
451
|
-
extend:
|
|
451
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
452
452
|
}, "optional", "extend" | `extend.${string}` | "version" | "identity" | "provisioning" | "identity.accountLinking" | "identity.accountLinking.oidc" | "identity.accountLinking.saml" | "provisioning.user" | "provisioning.scimReuse" | "provisioning.jit" | "provisioning.deprovision" | "provisioning.groups" | "provisioning.roles" | "provisioning.user.createOnSignIn" | "provisioning.user.updateProfileOnLogin" | "provisioning.user.updateProfileFromScim" | "provisioning.user.authority" | "provisioning.scimReuse.user" | "provisioning.jit.mode" | "provisioning.jit.defaultRole" | "provisioning.jit.defaultRoleIds" | "provisioning.deprovision.mode" | "provisioning.groups.mode" | "provisioning.groups.source" | "provisioning.groups.mapping" | `provisioning.groups.mapping.${string}` | "provisioning.roles.mode" | "provisioning.roles.source" | "provisioning.roles.mapping" | `provisioning.roles.mapping.${string}`>;
|
|
453
|
-
extend:
|
|
453
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
454
454
|
}, "required", "name" | "slug" | "type" | "extend" | `extend.${string}` | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | "policy.extend" | `policy.extend.${string}` | "policy.version" | "policy.identity" | "policy.provisioning" | "policy.identity.accountLinking" | "policy.identity.accountLinking.oidc" | "policy.identity.accountLinking.saml" | "policy.provisioning.user" | "policy.provisioning.scimReuse" | "policy.provisioning.jit" | "policy.provisioning.deprovision" | "policy.provisioning.groups" | "policy.provisioning.roles" | "policy.provisioning.user.createOnSignIn" | "policy.provisioning.user.updateProfileOnLogin" | "policy.provisioning.user.updateProfileFromScim" | "policy.provisioning.user.authority" | "policy.provisioning.scimReuse.user" | "policy.provisioning.jit.mode" | "policy.provisioning.jit.defaultRole" | "policy.provisioning.jit.defaultRoleIds" | "policy.provisioning.deprovision.mode" | "policy.provisioning.groups.mode" | "policy.provisioning.groups.source" | "policy.provisioning.groups.mapping" | `policy.provisioning.groups.mapping.${string}` | "policy.provisioning.roles.mode" | "policy.provisioning.roles.source" | "policy.provisioning.roles.mapping" | `policy.provisioning.roles.mapping.${string}`>, {
|
|
455
455
|
slug: ["slug", "_creationTime"];
|
|
456
456
|
parent_group_id: ["parentGroupId", "_creationTime"];
|
|
@@ -464,14 +464,14 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
464
464
|
* Each row maps one `(key, value)` pair to a group. Kept in sync by
|
|
465
465
|
* `groupCreate`, `groupUpdate`, and `groupDelete`.
|
|
466
466
|
*/
|
|
467
|
-
GroupTag:
|
|
467
|
+
GroupTag: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
468
468
|
key: string;
|
|
469
469
|
value: string;
|
|
470
|
-
group_id:
|
|
470
|
+
group_id: convex_values91.GenericId<"Group">;
|
|
471
471
|
}, {
|
|
472
|
-
group_id:
|
|
473
|
-
key:
|
|
474
|
-
value:
|
|
472
|
+
group_id: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
473
|
+
key: convex_values91.VString<string, "required">;
|
|
474
|
+
value: convex_values91.VString<string, "required">;
|
|
475
475
|
}, "required", "key" | "value" | "group_id">, {
|
|
476
476
|
by_group: ["group_id", "_creationTime"];
|
|
477
477
|
by_key_value: ["key", "value", "_creationTime"];
|
|
@@ -482,20 +482,20 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
482
482
|
* role (e.g. "owner", "admin", "member", "viewer"). A user can be a
|
|
483
483
|
* member of multiple groups with different roles in each.
|
|
484
484
|
*/
|
|
485
|
-
GroupMember:
|
|
485
|
+
GroupMember: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
486
486
|
status?: string | undefined;
|
|
487
487
|
extend?: any;
|
|
488
488
|
role?: string | undefined;
|
|
489
489
|
roleIds?: string[] | undefined;
|
|
490
|
-
userId:
|
|
491
|
-
groupId:
|
|
490
|
+
userId: convex_values91.GenericId<"User">;
|
|
491
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
492
492
|
}, {
|
|
493
|
-
groupId:
|
|
494
|
-
userId:
|
|
495
|
-
role:
|
|
496
|
-
roleIds:
|
|
497
|
-
status:
|
|
498
|
-
extend:
|
|
493
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
494
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User">, "required">;
|
|
495
|
+
role: convex_values91.VString<string | undefined, "optional">;
|
|
496
|
+
roleIds: convex_values91.VArray<string[] | undefined, convex_values91.VString<string, "required">, "optional">;
|
|
497
|
+
status: convex_values91.VString<string | undefined, "optional">;
|
|
498
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
499
499
|
}, "required", "status" | "userId" | "extend" | `extend.${string}` | "groupId" | "role" | "roleIds">, {
|
|
500
500
|
group_id: ["groupId", "_creationTime"];
|
|
501
501
|
group_id_user_id: ["groupId", "userId", "_creationTime"];
|
|
@@ -510,30 +510,30 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
510
510
|
* `email` and `invitedByUserId` are optional to support CLI-generated
|
|
511
511
|
* invite links where neither is known upfront.
|
|
512
512
|
*/
|
|
513
|
-
GroupInvite:
|
|
513
|
+
GroupInvite: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
514
514
|
email?: string | undefined;
|
|
515
515
|
expiresTime?: number | undefined;
|
|
516
516
|
acceptedTime?: number | undefined;
|
|
517
517
|
extend?: any;
|
|
518
|
-
groupId?:
|
|
518
|
+
groupId?: convex_values91.GenericId<"Group"> | undefined;
|
|
519
519
|
role?: string | undefined;
|
|
520
520
|
roleIds?: string[] | undefined;
|
|
521
|
-
invitedByUserId?:
|
|
522
|
-
acceptedByUserId?:
|
|
521
|
+
invitedByUserId?: convex_values91.GenericId<"User"> | undefined;
|
|
522
|
+
acceptedByUserId?: convex_values91.GenericId<"User"> | undefined;
|
|
523
523
|
status: "pending" | "accepted" | "revoked" | "expired";
|
|
524
524
|
tokenHash: string;
|
|
525
525
|
}, {
|
|
526
|
-
groupId:
|
|
527
|
-
invitedByUserId:
|
|
528
|
-
email:
|
|
529
|
-
tokenHash:
|
|
530
|
-
role:
|
|
531
|
-
roleIds:
|
|
532
|
-
status:
|
|
533
|
-
expiresTime:
|
|
534
|
-
acceptedByUserId:
|
|
535
|
-
acceptedTime:
|
|
536
|
-
extend:
|
|
526
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group"> | undefined, "optional">;
|
|
527
|
+
invitedByUserId: convex_values91.VId<convex_values91.GenericId<"User"> | undefined, "optional">;
|
|
528
|
+
email: convex_values91.VString<string | undefined, "optional">;
|
|
529
|
+
tokenHash: convex_values91.VString<string, "required">;
|
|
530
|
+
role: convex_values91.VString<string | undefined, "optional">;
|
|
531
|
+
roleIds: convex_values91.VArray<string[] | undefined, convex_values91.VString<string, "required">, "optional">;
|
|
532
|
+
status: convex_values91.VUnion<"pending" | "accepted" | "revoked" | "expired", [convex_values91.VLiteral<"pending", "required">, convex_values91.VLiteral<"accepted", "required">, convex_values91.VLiteral<"revoked", "required">, convex_values91.VLiteral<"expired", "required">], "required", never>;
|
|
533
|
+
expiresTime: convex_values91.VFloat64<number | undefined, "optional">;
|
|
534
|
+
acceptedByUserId: convex_values91.VId<convex_values91.GenericId<"User"> | undefined, "optional">;
|
|
535
|
+
acceptedTime: convex_values91.VFloat64<number | undefined, "optional">;
|
|
536
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
537
537
|
}, "required", "email" | "status" | "expiresTime" | "acceptedTime" | "extend" | `extend.${string}` | "groupId" | "role" | "roleIds" | "invitedByUserId" | "tokenHash" | "acceptedByUserId">, {
|
|
538
538
|
token_hash: ["tokenHash", "_creationTime"];
|
|
539
539
|
status: ["status", "_creationTime"];
|
|
@@ -549,22 +549,22 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
549
549
|
* SDK can evolve without forcing schema churn for every protocol-specific
|
|
550
550
|
* field addition.
|
|
551
551
|
*/
|
|
552
|
-
GroupConnection:
|
|
552
|
+
GroupConnection: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
553
553
|
name?: string | undefined;
|
|
554
554
|
slug?: string | undefined;
|
|
555
555
|
extend?: any;
|
|
556
556
|
config?: any;
|
|
557
557
|
status: "draft" | "active" | "disabled";
|
|
558
558
|
protocol: "oidc" | "saml";
|
|
559
|
-
groupId:
|
|
559
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
560
560
|
}, {
|
|
561
|
-
groupId:
|
|
562
|
-
slug:
|
|
563
|
-
name:
|
|
564
|
-
protocol:
|
|
565
|
-
status:
|
|
566
|
-
config:
|
|
567
|
-
extend:
|
|
561
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
562
|
+
slug: convex_values91.VString<string | undefined, "optional">;
|
|
563
|
+
name: convex_values91.VString<string | undefined, "optional">;
|
|
564
|
+
protocol: convex_values91.VUnion<"oidc" | "saml", [convex_values91.VLiteral<"oidc", "required">, convex_values91.VLiteral<"saml", "required">], "required", never>;
|
|
565
|
+
status: convex_values91.VUnion<"draft" | "active" | "disabled", [convex_values91.VLiteral<"draft", "required">, convex_values91.VLiteral<"active", "required">, convex_values91.VLiteral<"disabled", "required">], "required", never>;
|
|
566
|
+
config: convex_values91.VAny<any, "optional", string>;
|
|
567
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
568
568
|
}, "required", "name" | "slug" | "status" | "extend" | `extend.${string}` | "protocol" | "groupId" | "config" | `config.${string}`>, {
|
|
569
569
|
group_id: ["groupId", "_creationTime"];
|
|
570
570
|
slug: ["slug", "_creationTime"];
|
|
@@ -575,18 +575,18 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
575
575
|
/**
|
|
576
576
|
* Verified or pending domains linked to an group connection record.
|
|
577
577
|
*/
|
|
578
|
-
GroupConnectionDomain:
|
|
578
|
+
GroupConnectionDomain: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
579
579
|
verifiedAt?: number | undefined;
|
|
580
|
-
groupId:
|
|
581
|
-
connectionId:
|
|
580
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
581
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
582
582
|
domain: string;
|
|
583
583
|
isPrimary: boolean;
|
|
584
584
|
}, {
|
|
585
|
-
connectionId:
|
|
586
|
-
groupId:
|
|
587
|
-
domain:
|
|
588
|
-
isPrimary:
|
|
589
|
-
verifiedAt:
|
|
585
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
586
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
587
|
+
domain: convex_values91.VString<string, "required">;
|
|
588
|
+
isPrimary: convex_values91.VBoolean<boolean, "required">;
|
|
589
|
+
verifiedAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
590
590
|
}, "required", "groupId" | "connectionId" | "domain" | "isPrimary" | "verifiedAt">, {
|
|
591
591
|
connection_id: ["connectionId", "_creationTime"];
|
|
592
592
|
group_id: ["groupId", "_creationTime"];
|
|
@@ -595,26 +595,26 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
595
595
|
/**
|
|
596
596
|
* Pending DNS TXT verification challenges for group connection domains.
|
|
597
597
|
*/
|
|
598
|
-
GroupConnectionDomainVerification:
|
|
598
|
+
GroupConnectionDomainVerification: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
599
599
|
expiresAt: number;
|
|
600
|
-
groupId:
|
|
600
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
601
601
|
tokenHash: string;
|
|
602
|
-
connectionId:
|
|
602
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
603
603
|
domain: string;
|
|
604
|
-
domainId:
|
|
604
|
+
domainId: convex_values91.GenericId<"GroupConnectionDomain">;
|
|
605
605
|
recordName: string;
|
|
606
606
|
token: string;
|
|
607
607
|
requestedAt: number;
|
|
608
608
|
}, {
|
|
609
|
-
connectionId:
|
|
610
|
-
groupId:
|
|
611
|
-
domainId:
|
|
612
|
-
domain:
|
|
613
|
-
recordName:
|
|
614
|
-
token:
|
|
615
|
-
tokenHash:
|
|
616
|
-
requestedAt:
|
|
617
|
-
expiresAt:
|
|
609
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
610
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
611
|
+
domainId: convex_values91.VId<convex_values91.GenericId<"GroupConnectionDomain">, "required">;
|
|
612
|
+
domain: convex_values91.VString<string, "required">;
|
|
613
|
+
recordName: convex_values91.VString<string, "required">;
|
|
614
|
+
token: convex_values91.VString<string, "required">;
|
|
615
|
+
tokenHash: convex_values91.VString<string, "required">;
|
|
616
|
+
requestedAt: convex_values91.VFloat64<number, "required">;
|
|
617
|
+
expiresAt: convex_values91.VFloat64<number, "required">;
|
|
618
618
|
}, "required", "expiresAt" | "groupId" | "tokenHash" | "connectionId" | "domain" | "domainId" | "recordName" | "token" | "requestedAt">, {
|
|
619
619
|
connection_id: ["connectionId", "_creationTime"];
|
|
620
620
|
domain_id: ["domainId", "_creationTime"];
|
|
@@ -623,18 +623,18 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
623
623
|
/**
|
|
624
624
|
* Encrypted group connection secrets stored separately from protocol config.
|
|
625
625
|
*/
|
|
626
|
-
GroupConnectionSecret:
|
|
627
|
-
groupId:
|
|
628
|
-
connectionId:
|
|
626
|
+
GroupConnectionSecret: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
627
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
628
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
629
629
|
ciphertext: string;
|
|
630
630
|
updatedAt: number;
|
|
631
631
|
kind: "oidc_client_secret";
|
|
632
632
|
}, {
|
|
633
|
-
connectionId:
|
|
634
|
-
groupId:
|
|
635
|
-
kind:
|
|
636
|
-
ciphertext:
|
|
637
|
-
updatedAt:
|
|
633
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
634
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
635
|
+
kind: convex_values91.VUnion<"oidc_client_secret", [convex_values91.VLiteral<"oidc_client_secret", "required">], "required", never>;
|
|
636
|
+
ciphertext: convex_values91.VString<string, "required">;
|
|
637
|
+
updatedAt: convex_values91.VFloat64<number, "required">;
|
|
638
638
|
}, "required", "groupId" | "connectionId" | "ciphertext" | "updatedAt" | "kind">, {
|
|
639
639
|
connection_id: ["connectionId", "_creationTime"];
|
|
640
640
|
connection_id_kind: ["connectionId", "kind", "_creationTime"];
|
|
@@ -643,22 +643,22 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
643
643
|
/**
|
|
644
644
|
* SCIM configuration for an group connection tenant.
|
|
645
645
|
*/
|
|
646
|
-
GroupConnectionScimConfig:
|
|
646
|
+
GroupConnectionScimConfig: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
647
647
|
extend?: any;
|
|
648
648
|
lastRotatedAt?: number | undefined;
|
|
649
649
|
status: "draft" | "active" | "disabled";
|
|
650
|
-
groupId:
|
|
650
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
651
651
|
tokenHash: string;
|
|
652
|
-
connectionId:
|
|
652
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
653
653
|
basePath: string;
|
|
654
654
|
}, {
|
|
655
|
-
connectionId:
|
|
656
|
-
groupId:
|
|
657
|
-
status:
|
|
658
|
-
basePath:
|
|
659
|
-
tokenHash:
|
|
660
|
-
lastRotatedAt:
|
|
661
|
-
extend:
|
|
655
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
656
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
657
|
+
status: convex_values91.VUnion<"draft" | "active" | "disabled", [convex_values91.VLiteral<"draft", "required">, convex_values91.VLiteral<"active", "required">, convex_values91.VLiteral<"disabled", "required">], "required", never>;
|
|
658
|
+
basePath: convex_values91.VString<string, "required">;
|
|
659
|
+
tokenHash: convex_values91.VString<string, "required">;
|
|
660
|
+
lastRotatedAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
661
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
662
662
|
}, "required", "status" | "extend" | `extend.${string}` | "groupId" | "tokenHash" | "connectionId" | "basePath" | "lastRotatedAt">, {
|
|
663
663
|
group_connection_id: ["connectionId", "_creationTime"];
|
|
664
664
|
group_id: ["groupId", "_creationTime"];
|
|
@@ -668,26 +668,26 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
668
668
|
/**
|
|
669
669
|
* External SCIM identities mapped into local users/groups.
|
|
670
670
|
*/
|
|
671
|
-
GroupConnectionScimIdentity:
|
|
672
|
-
userId?:
|
|
671
|
+
GroupConnectionScimIdentity: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
672
|
+
userId?: convex_values91.GenericId<"User"> | undefined;
|
|
673
673
|
active?: boolean | undefined;
|
|
674
|
-
mappedGroupId?:
|
|
674
|
+
mappedGroupId?: convex_values91.GenericId<"Group"> | undefined;
|
|
675
675
|
lastProvisionedAt?: number | undefined;
|
|
676
676
|
raw?: any;
|
|
677
677
|
externalId: string;
|
|
678
|
-
groupId:
|
|
679
|
-
connectionId:
|
|
678
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
679
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
680
680
|
resourceType: "user" | "group";
|
|
681
681
|
}, {
|
|
682
|
-
connectionId:
|
|
683
|
-
groupId:
|
|
684
|
-
resourceType:
|
|
685
|
-
externalId:
|
|
686
|
-
userId:
|
|
687
|
-
mappedGroupId:
|
|
688
|
-
lastProvisionedAt:
|
|
689
|
-
active:
|
|
690
|
-
raw:
|
|
682
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
683
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
684
|
+
resourceType: convex_values91.VUnion<"user" | "group", [convex_values91.VLiteral<"user", "required">, convex_values91.VLiteral<"group", "required">], "required", never>;
|
|
685
|
+
externalId: convex_values91.VString<string, "required">;
|
|
686
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User"> | undefined, "optional">;
|
|
687
|
+
mappedGroupId: convex_values91.VId<convex_values91.GenericId<"Group"> | undefined, "optional">;
|
|
688
|
+
lastProvisionedAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
689
|
+
active: convex_values91.VBoolean<boolean | undefined, "optional">;
|
|
690
|
+
raw: convex_values91.VAny<any, "optional", string>;
|
|
691
691
|
}, "required", "userId" | "externalId" | "groupId" | "active" | "connectionId" | "resourceType" | "mappedGroupId" | "lastProvisionedAt" | "raw" | `raw.${string}`>, {
|
|
692
692
|
group_connection_id: ["connectionId", "_creationTime"];
|
|
693
693
|
group_id: ["groupId", "_creationTime"];
|
|
@@ -699,32 +699,32 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
699
699
|
/**
|
|
700
700
|
* Immutable audit trail for group connection operations.
|
|
701
701
|
*/
|
|
702
|
-
GroupAuditEvent:
|
|
702
|
+
GroupAuditEvent: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
703
703
|
metadata?: any;
|
|
704
|
-
connectionId?:
|
|
704
|
+
connectionId?: convex_values91.GenericId<"GroupConnection"> | undefined;
|
|
705
705
|
actorId?: string | undefined;
|
|
706
706
|
subjectId?: string | undefined;
|
|
707
707
|
requestId?: string | undefined;
|
|
708
708
|
ip?: string | undefined;
|
|
709
709
|
status: "success" | "failure";
|
|
710
|
-
groupId:
|
|
710
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
711
711
|
actorType: "user" | "scim" | "system" | "api_key" | "webhook";
|
|
712
712
|
eventType: string;
|
|
713
713
|
subjectType: string;
|
|
714
714
|
occurredAt: number;
|
|
715
715
|
}, {
|
|
716
|
-
connectionId:
|
|
717
|
-
groupId:
|
|
718
|
-
eventType:
|
|
719
|
-
actorType:
|
|
720
|
-
actorId:
|
|
721
|
-
subjectType:
|
|
722
|
-
subjectId:
|
|
723
|
-
status:
|
|
724
|
-
occurredAt:
|
|
725
|
-
requestId:
|
|
726
|
-
ip:
|
|
727
|
-
metadata:
|
|
716
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection"> | undefined, "optional">;
|
|
717
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
718
|
+
eventType: convex_values91.VString<string, "required">;
|
|
719
|
+
actorType: convex_values91.VUnion<"user" | "scim" | "system" | "api_key" | "webhook", [convex_values91.VLiteral<"user", "required">, convex_values91.VLiteral<"system", "required">, convex_values91.VLiteral<"scim", "required">, convex_values91.VLiteral<"api_key", "required">, convex_values91.VLiteral<"webhook", "required">], "required", never>;
|
|
720
|
+
actorId: convex_values91.VString<string | undefined, "optional">;
|
|
721
|
+
subjectType: convex_values91.VString<string, "required">;
|
|
722
|
+
subjectId: convex_values91.VString<string | undefined, "optional">;
|
|
723
|
+
status: convex_values91.VUnion<"success" | "failure", [convex_values91.VLiteral<"success", "required">, convex_values91.VLiteral<"failure", "required">], "required", never>;
|
|
724
|
+
occurredAt: convex_values91.VFloat64<number, "required">;
|
|
725
|
+
requestId: convex_values91.VString<string | undefined, "optional">;
|
|
726
|
+
ip: convex_values91.VString<string | undefined, "optional">;
|
|
727
|
+
metadata: convex_values91.VAny<any, "optional", string>;
|
|
728
728
|
}, "required", "status" | "metadata" | `metadata.${string}` | "groupId" | "connectionId" | "actorType" | "eventType" | "actorId" | "subjectType" | "subjectId" | "occurredAt" | "requestId" | "ip">, {
|
|
729
729
|
group_connection_id_occurred_at: ["connectionId", "occurredAt", "_creationTime"];
|
|
730
730
|
group_id_occurred_at: ["groupId", "occurredAt", "_creationTime"];
|
|
@@ -733,30 +733,30 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
733
733
|
/**
|
|
734
734
|
* Webhook endpoints subscribed to group audit and lifecycle events.
|
|
735
735
|
*/
|
|
736
|
-
GroupWebhookEndpoint:
|
|
736
|
+
GroupWebhookEndpoint: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
737
737
|
extend?: any;
|
|
738
|
-
createdByUserId?:
|
|
738
|
+
createdByUserId?: convex_values91.GenericId<"User"> | undefined;
|
|
739
739
|
lastSuccessAt?: number | undefined;
|
|
740
740
|
lastFailureAt?: number | undefined;
|
|
741
741
|
status: "active" | "disabled";
|
|
742
|
-
groupId:
|
|
743
|
-
connectionId:
|
|
742
|
+
groupId: convex_values91.GenericId<"Group">;
|
|
743
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
744
744
|
url: string;
|
|
745
745
|
secretHash: string;
|
|
746
746
|
subscriptions: string[];
|
|
747
747
|
failureCount: number;
|
|
748
748
|
}, {
|
|
749
|
-
connectionId:
|
|
750
|
-
groupId:
|
|
751
|
-
url:
|
|
752
|
-
status:
|
|
753
|
-
secretHash:
|
|
754
|
-
subscriptions:
|
|
755
|
-
createdByUserId:
|
|
756
|
-
lastSuccessAt:
|
|
757
|
-
lastFailureAt:
|
|
758
|
-
failureCount:
|
|
759
|
-
extend:
|
|
749
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
750
|
+
groupId: convex_values91.VId<convex_values91.GenericId<"Group">, "required">;
|
|
751
|
+
url: convex_values91.VString<string, "required">;
|
|
752
|
+
status: convex_values91.VUnion<"active" | "disabled", [convex_values91.VLiteral<"active", "required">, convex_values91.VLiteral<"disabled", "required">], "required", never>;
|
|
753
|
+
secretHash: convex_values91.VString<string, "required">;
|
|
754
|
+
subscriptions: convex_values91.VArray<string[], convex_values91.VString<string, "required">, "required">;
|
|
755
|
+
createdByUserId: convex_values91.VId<convex_values91.GenericId<"User"> | undefined, "optional">;
|
|
756
|
+
lastSuccessAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
757
|
+
lastFailureAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
758
|
+
failureCount: convex_values91.VFloat64<number, "required">;
|
|
759
|
+
extend: convex_values91.VAny<any, "optional", string>;
|
|
760
760
|
}, "required", "status" | "extend" | `extend.${string}` | "groupId" | "connectionId" | "url" | "secretHash" | "subscriptions" | "createdByUserId" | "lastSuccessAt" | "lastFailureAt" | "failureCount">, {
|
|
761
761
|
group_connection_id: ["connectionId", "_creationTime"];
|
|
762
762
|
group_id: ["groupId", "_creationTime"];
|
|
@@ -765,30 +765,30 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
765
765
|
/**
|
|
766
766
|
* Delivery queue for outbound group webhooks.
|
|
767
767
|
*/
|
|
768
|
-
GroupWebhookDelivery:
|
|
769
|
-
auditEventId?:
|
|
768
|
+
GroupWebhookDelivery: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
769
|
+
auditEventId?: convex_values91.GenericId<"GroupAuditEvent"> | undefined;
|
|
770
770
|
lastAttemptAt?: number | undefined;
|
|
771
771
|
lastResponseStatus?: number | undefined;
|
|
772
772
|
lastError?: string | undefined;
|
|
773
773
|
status: "pending" | "processing" | "delivered" | "failed";
|
|
774
|
-
connectionId:
|
|
774
|
+
connectionId: convex_values91.GenericId<"GroupConnection">;
|
|
775
775
|
eventType: string;
|
|
776
|
-
endpointId:
|
|
776
|
+
endpointId: convex_values91.GenericId<"GroupWebhookEndpoint">;
|
|
777
777
|
attemptCount: number;
|
|
778
778
|
nextAttemptAt: number;
|
|
779
779
|
payload: any;
|
|
780
780
|
}, {
|
|
781
|
-
connectionId:
|
|
782
|
-
endpointId:
|
|
783
|
-
auditEventId:
|
|
784
|
-
eventType:
|
|
785
|
-
status:
|
|
786
|
-
attemptCount:
|
|
787
|
-
nextAttemptAt:
|
|
788
|
-
lastAttemptAt:
|
|
789
|
-
lastResponseStatus:
|
|
790
|
-
lastError:
|
|
791
|
-
payload:
|
|
781
|
+
connectionId: convex_values91.VId<convex_values91.GenericId<"GroupConnection">, "required">;
|
|
782
|
+
endpointId: convex_values91.VId<convex_values91.GenericId<"GroupWebhookEndpoint">, "required">;
|
|
783
|
+
auditEventId: convex_values91.VId<convex_values91.GenericId<"GroupAuditEvent"> | undefined, "optional">;
|
|
784
|
+
eventType: convex_values91.VString<string, "required">;
|
|
785
|
+
status: convex_values91.VUnion<"pending" | "processing" | "delivered" | "failed", [convex_values91.VLiteral<"pending", "required">, convex_values91.VLiteral<"processing", "required">, convex_values91.VLiteral<"delivered", "required">, convex_values91.VLiteral<"failed", "required">], "required", never>;
|
|
786
|
+
attemptCount: convex_values91.VFloat64<number, "required">;
|
|
787
|
+
nextAttemptAt: convex_values91.VFloat64<number, "required">;
|
|
788
|
+
lastAttemptAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
789
|
+
lastResponseStatus: convex_values91.VFloat64<number | undefined, "optional">;
|
|
790
|
+
lastError: convex_values91.VString<string | undefined, "optional">;
|
|
791
|
+
payload: convex_values91.VAny<any, "required", string>;
|
|
792
792
|
}, "required", "status" | "connectionId" | "eventType" | "endpointId" | "auditEventId" | "attemptCount" | "nextAttemptAt" | "lastAttemptAt" | "lastResponseStatus" | "lastError" | "payload" | `payload.${string}`>, {
|
|
793
793
|
group_connection_id: ["connectionId", "_creationTime"];
|
|
794
794
|
status_next_attempt_at: ["status", "nextAttemptAt", "_creationTime"];
|
|
@@ -808,7 +808,7 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
808
808
|
* - **Expiration**: optional TTL
|
|
809
809
|
* - **Soft revocation**: `revoked` flag preserves audit trail
|
|
810
810
|
*/
|
|
811
|
-
ApiKey:
|
|
811
|
+
ApiKey: convex_server89.TableDefinition<convex_values91.VObject<{
|
|
812
812
|
lastUsedAt?: number | undefined;
|
|
813
813
|
expiresAt?: number | undefined;
|
|
814
814
|
rateLimit?: {
|
|
@@ -822,7 +822,7 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
822
822
|
metadata?: any;
|
|
823
823
|
name: string;
|
|
824
824
|
revoked: boolean;
|
|
825
|
-
userId:
|
|
825
|
+
userId: convex_values91.GenericId<"User">;
|
|
826
826
|
prefix: string;
|
|
827
827
|
hashedKey: string;
|
|
828
828
|
scopes: {
|
|
@@ -831,39 +831,39 @@ declare const _default: convex_server83.SchemaDefinition<{
|
|
|
831
831
|
}[];
|
|
832
832
|
createdAt: number;
|
|
833
833
|
}, {
|
|
834
|
-
userId:
|
|
835
|
-
prefix:
|
|
836
|
-
hashedKey:
|
|
837
|
-
name:
|
|
838
|
-
scopes:
|
|
834
|
+
userId: convex_values91.VId<convex_values91.GenericId<"User">, "required">; /** First chars of the key for display (e.g. "sk_abc1..."). */
|
|
835
|
+
prefix: convex_values91.VString<string, "required">; /** SHA-256 hex hash of the full raw key. */
|
|
836
|
+
hashedKey: convex_values91.VString<string, "required">; /** User-assigned name (e.g. "CI Pipeline", "Production API"). */
|
|
837
|
+
name: convex_values91.VString<string, "required">; /** Scoped permissions: [{ resource: "users", actions: ["read", "list"] }]. */
|
|
838
|
+
scopes: convex_values91.VArray<{
|
|
839
839
|
resource: string;
|
|
840
840
|
actions: string[];
|
|
841
|
-
}[],
|
|
841
|
+
}[], convex_values91.VObject<{
|
|
842
842
|
resource: string;
|
|
843
843
|
actions: string[];
|
|
844
844
|
}, {
|
|
845
|
-
resource:
|
|
846
|
-
actions:
|
|
845
|
+
resource: convex_values91.VString<string, "required">;
|
|
846
|
+
actions: convex_values91.VArray<string[], convex_values91.VString<string, "required">, "required">;
|
|
847
847
|
}, "required", "resource" | "actions">, "required">; /** Optional per-key rate limit configuration. */
|
|
848
|
-
rateLimit:
|
|
848
|
+
rateLimit: convex_values91.VObject<{
|
|
849
849
|
maxRequests: number;
|
|
850
850
|
windowMs: number;
|
|
851
851
|
} | undefined, {
|
|
852
|
-
maxRequests:
|
|
853
|
-
windowMs:
|
|
852
|
+
maxRequests: convex_values91.VFloat64<number, "required">;
|
|
853
|
+
windowMs: convex_values91.VFloat64<number, "required">;
|
|
854
854
|
}, "optional", "maxRequests" | "windowMs">; /** Rate limit state tracking (token-bucket). */
|
|
855
|
-
rateLimitState:
|
|
855
|
+
rateLimitState: convex_values91.VObject<{
|
|
856
856
|
attemptsLeft: number;
|
|
857
857
|
lastAttemptTime: number;
|
|
858
858
|
} | undefined, {
|
|
859
|
-
attemptsLeft:
|
|
860
|
-
lastAttemptTime:
|
|
859
|
+
attemptsLeft: convex_values91.VFloat64<number, "required">;
|
|
860
|
+
lastAttemptTime: convex_values91.VFloat64<number, "required">;
|
|
861
861
|
}, "optional", "attemptsLeft" | "lastAttemptTime">; /** Expiration timestamp. Null/undefined = never expires. */
|
|
862
|
-
expiresAt:
|
|
863
|
-
lastUsedAt:
|
|
864
|
-
createdAt:
|
|
865
|
-
revoked:
|
|
866
|
-
metadata:
|
|
862
|
+
expiresAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
863
|
+
lastUsedAt: convex_values91.VFloat64<number | undefined, "optional">;
|
|
864
|
+
createdAt: convex_values91.VFloat64<number, "required">; /** Soft-revoke flag. Revoked keys are kept for audit trail. */
|
|
865
|
+
revoked: convex_values91.VBoolean<boolean, "required">; /** Arbitrary app-specific metadata attached to the key. */
|
|
866
|
+
metadata: convex_values91.VAny<any, "optional", string>;
|
|
867
867
|
}, "required", "name" | "revoked" | "lastUsedAt" | "expiresAt" | "userId" | "prefix" | "hashedKey" | "scopes" | "rateLimit" | "rateLimitState" | "createdAt" | "metadata" | "rateLimit.maxRequests" | "rateLimit.windowMs" | "rateLimitState.attemptsLeft" | "rateLimitState.lastAttemptTime" | `metadata.${string}`>, {
|
|
868
868
|
user_id: ["userId", "_creationTime"];
|
|
869
869
|
hashed_key: ["hashedKey", "_creationTime"];
|