@authowl/core 0.10.0

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.
@@ -0,0 +1,2757 @@
1
+ import { O as OrganizationMembership, a as TransportErrorKind, H as HasParams } from './transport-BObDKlIh.js';
2
+ export { A as AuthConfig, R as ResolvedAuthConfig, r as resolveConfig, s as sessionCookieName } from './transport-BObDKlIh.js';
3
+
4
+ /**
5
+ * Stateless verification of an AuthOwl project JWT for SERVER-side authorization
6
+ * (plan §5). This is the REAL enforcement primitive: unlike the client
7
+ * `<Protect>`/`has()` (advisory, over the browser session), this verifies the
8
+ * token's ES256 signature against the project's published JWKS and checks
9
+ * issuer / audience / expiry before reading any claim. A forged or tampered
10
+ * token fails verification, so no permission is ever granted off an unverified
11
+ * claim.
12
+ *
13
+ * Dependency-free: uses WebCrypto (`globalThis.crypto.subtle`), available in
14
+ * Node 18+ and the Edge runtime, so `@authowl/next` stays lean and Edge-safe.
15
+ */
16
+
17
+ interface VerifiedProjectToken {
18
+ /** The token subject (the signed-in user id), or null if absent. */
19
+ sub: string | null;
20
+ /** The active-org membership carried by the token, or null if none/absent. */
21
+ membership: OrganizationMembership | null;
22
+ /** The full verified claim set, for callers that read additional claims. */
23
+ claims: Record<string, unknown>;
24
+ }
25
+ interface VerifyProjectTokenOptions {
26
+ /** Expected `iss` - the project's AuthOwl auth base URL. */
27
+ issuer: string;
28
+ /** The project's published JWKS URL. */
29
+ jwksUri: string;
30
+ /** Expected `aud` - the project id. */
31
+ audience: string;
32
+ /** Clock skew tolerance for exp/nbf, in seconds (default 60). */
33
+ clockToleranceSeconds?: number;
34
+ }
35
+ declare class TokenVerificationError extends Error {
36
+ readonly code: TokenVerificationErrorCode;
37
+ constructor(message: string, code?: TokenVerificationErrorCode);
38
+ }
39
+ type TokenVerificationErrorCode = 'TOKEN_VERIFICATION_FAILED' | 'TOKEN_CONFIG_INVALID' | 'TOKEN_MALFORMED' | 'TOKEN_ALGORITHM_UNSUPPORTED' | 'TOKEN_SIGNATURE_INVALID' | 'TOKEN_CLAIM_INVALID' | 'JWKS_FETCH_FAILED' | 'JWKS_FETCH_TIMEOUT' | 'JWKS_HTTP_ERROR' | 'JWKS_RESPONSE_TOO_LARGE' | 'JWKS_DOCUMENT_INVALID' | 'JWKS_TOO_MANY_KEYS' | 'JWKS_KEY_INVALID' | 'JWKS_DUPLICATE_KID' | 'JWKS_KEY_NOT_FOUND' | 'WEBCRYPTO_UNAVAILABLE';
40
+ /**
41
+ * Verify an AuthOwl project JWT and return its subject, membership, and claims.
42
+ * Throws {@link TokenVerificationError} on any failure (bad signature, wrong
43
+ * issuer/audience, expired, unsupported alg, missing key).
44
+ */
45
+ declare function verifyProjectToken(token: string, options: VerifyProjectTokenOptions): Promise<VerifiedProjectToken>;
46
+
47
+ interface paths {
48
+ readonly "/openapi.json": {
49
+ readonly parameters: {
50
+ readonly query?: never;
51
+ readonly header?: never;
52
+ readonly path?: never;
53
+ readonly cookie?: never;
54
+ };
55
+ /** Get this OpenAPI document */
56
+ readonly get: operations["getOpenApiDocument"];
57
+ readonly put?: never;
58
+ readonly post?: never;
59
+ readonly delete?: never;
60
+ readonly options?: never;
61
+ readonly head?: never;
62
+ readonly patch?: never;
63
+ readonly trace?: never;
64
+ };
65
+ readonly "/users": {
66
+ readonly parameters: {
67
+ readonly query?: never;
68
+ readonly header?: never;
69
+ readonly path?: never;
70
+ readonly cookie?: never;
71
+ };
72
+ /** List or search users */
73
+ readonly get: operations["listUsers"];
74
+ readonly put?: never;
75
+ /** Create a user */
76
+ readonly post: operations["createUser"];
77
+ readonly delete?: never;
78
+ readonly options?: never;
79
+ readonly head?: never;
80
+ readonly patch?: never;
81
+ readonly trace?: never;
82
+ };
83
+ readonly "/users/export": {
84
+ readonly parameters: {
85
+ readonly query?: never;
86
+ readonly header?: never;
87
+ readonly path?: never;
88
+ readonly cookie?: never;
89
+ };
90
+ readonly get?: never;
91
+ readonly put?: never;
92
+ /** Start a project user export */
93
+ readonly post: operations["startUserExport"];
94
+ readonly delete?: never;
95
+ readonly options?: never;
96
+ readonly head?: never;
97
+ readonly patch?: never;
98
+ readonly trace?: never;
99
+ };
100
+ readonly "/users/{userId}": {
101
+ readonly parameters: {
102
+ readonly query?: never;
103
+ readonly header?: never;
104
+ readonly path: {
105
+ readonly userId: components["parameters"]["UserId"];
106
+ };
107
+ readonly cookie?: never;
108
+ };
109
+ /** Get a user */
110
+ readonly get: operations["getUser"];
111
+ readonly put?: never;
112
+ readonly post?: never;
113
+ /** Delete a user */
114
+ readonly delete: operations["deleteUser"];
115
+ readonly options?: never;
116
+ readonly head?: never;
117
+ /** Update a user */
118
+ readonly patch: operations["updateUser"];
119
+ readonly trace?: never;
120
+ };
121
+ readonly "/users/{userId}/sessions": {
122
+ readonly parameters: {
123
+ readonly query?: never;
124
+ readonly header?: never;
125
+ readonly path: {
126
+ readonly userId: components["parameters"]["UserId"];
127
+ };
128
+ readonly cookie?: never;
129
+ };
130
+ /** List a user's sessions */
131
+ readonly get: operations["listUserSessions"];
132
+ readonly put?: never;
133
+ readonly post?: never;
134
+ /** Revoke all sessions for a user */
135
+ readonly delete: operations["revokeUserSessions"];
136
+ readonly options?: never;
137
+ readonly head?: never;
138
+ readonly patch?: never;
139
+ readonly trace?: never;
140
+ };
141
+ readonly "/users/{userId}/metadata": {
142
+ readonly parameters: {
143
+ readonly query?: never;
144
+ readonly header?: never;
145
+ readonly path: {
146
+ readonly userId: components["parameters"]["UserId"];
147
+ };
148
+ readonly cookie?: never;
149
+ };
150
+ readonly get?: never;
151
+ readonly put?: never;
152
+ readonly post?: never;
153
+ readonly delete?: never;
154
+ readonly options?: never;
155
+ readonly head?: never;
156
+ /** Patch user metadata with optimistic concurrency */
157
+ readonly patch: operations["updateUserMetadata"];
158
+ readonly trace?: never;
159
+ };
160
+ readonly "/sessions/verify": {
161
+ readonly parameters: {
162
+ readonly query?: never;
163
+ readonly header?: never;
164
+ readonly path?: never;
165
+ readonly cookie?: never;
166
+ };
167
+ readonly get?: never;
168
+ readonly put?: never;
169
+ /** Verify a session token */
170
+ readonly post: operations["verifySession"];
171
+ readonly delete?: never;
172
+ readonly options?: never;
173
+ readonly head?: never;
174
+ readonly patch?: never;
175
+ readonly trace?: never;
176
+ };
177
+ readonly "/sessions/{sessionId}": {
178
+ readonly parameters: {
179
+ readonly query?: never;
180
+ readonly header?: never;
181
+ readonly path: {
182
+ readonly sessionId: components["parameters"]["SessionId"];
183
+ };
184
+ readonly cookie?: never;
185
+ };
186
+ /** Get one session */
187
+ readonly get: operations["getSession"];
188
+ readonly put?: never;
189
+ readonly post?: never;
190
+ /** Revoke one session */
191
+ readonly delete: operations["revokeSession"];
192
+ readonly options?: never;
193
+ readonly head?: never;
194
+ /** Patch server-authored session metadata with optimistic concurrency */
195
+ readonly patch: operations["updateSessionMetadata"];
196
+ readonly trace?: never;
197
+ };
198
+ readonly "/organizations": {
199
+ readonly parameters: {
200
+ readonly query?: never;
201
+ readonly header?: never;
202
+ readonly path?: never;
203
+ readonly cookie?: never;
204
+ };
205
+ /** List organizations */
206
+ readonly get: operations["listOrganizations"];
207
+ readonly put?: never;
208
+ /** Create an organization */
209
+ readonly post: operations["createOrganization"];
210
+ readonly delete?: never;
211
+ readonly options?: never;
212
+ readonly head?: never;
213
+ readonly patch?: never;
214
+ readonly trace?: never;
215
+ };
216
+ readonly "/organizations/{organizationId}": {
217
+ readonly parameters: {
218
+ readonly query?: never;
219
+ readonly header?: never;
220
+ readonly path: {
221
+ readonly organizationId: components["parameters"]["OrganizationId"];
222
+ };
223
+ readonly cookie?: never;
224
+ };
225
+ /** Get an organization */
226
+ readonly get: operations["getOrganization"];
227
+ readonly put?: never;
228
+ readonly post?: never;
229
+ /** Delete an organization */
230
+ readonly delete: operations["deleteOrganization"];
231
+ readonly options?: never;
232
+ readonly head?: never;
233
+ /** Update an organization */
234
+ readonly patch: operations["updateOrganization"];
235
+ readonly trace?: never;
236
+ };
237
+ readonly "/organizations/{organizationId}/members": {
238
+ readonly parameters: {
239
+ readonly query?: never;
240
+ readonly header?: never;
241
+ readonly path: {
242
+ readonly organizationId: components["parameters"]["OrganizationId"];
243
+ };
244
+ readonly cookie?: never;
245
+ };
246
+ /** List organization members */
247
+ readonly get: operations["listOrganizationMembers"];
248
+ readonly put?: never;
249
+ /** Add an organization member */
250
+ readonly post: operations["addOrganizationMember"];
251
+ readonly delete?: never;
252
+ readonly options?: never;
253
+ readonly head?: never;
254
+ readonly patch?: never;
255
+ readonly trace?: never;
256
+ };
257
+ readonly "/organizations/{organizationId}/members/{userId}": {
258
+ readonly parameters: {
259
+ readonly query?: never;
260
+ readonly header?: never;
261
+ readonly path: {
262
+ readonly organizationId: components["parameters"]["OrganizationId"];
263
+ readonly userId: components["parameters"]["UserId"];
264
+ };
265
+ readonly cookie?: never;
266
+ };
267
+ readonly get?: never;
268
+ readonly put?: never;
269
+ readonly post?: never;
270
+ /** Remove an organization member */
271
+ readonly delete: operations["removeOrganizationMember"];
272
+ readonly options?: never;
273
+ readonly head?: never;
274
+ /** Change an organization member's role */
275
+ readonly patch: operations["updateOrganizationMember"];
276
+ readonly trace?: never;
277
+ };
278
+ readonly "/organizations/{organizationId}/roles": {
279
+ readonly parameters: {
280
+ readonly query?: never;
281
+ readonly header?: never;
282
+ readonly path: {
283
+ readonly organizationId: components["parameters"]["OrganizationId"];
284
+ };
285
+ readonly cookie?: never;
286
+ };
287
+ /** List custom roles */
288
+ readonly get: operations["listOrganizationRoles"];
289
+ readonly put?: never;
290
+ /** Create a custom role */
291
+ readonly post: operations["createOrganizationRole"];
292
+ readonly delete?: never;
293
+ readonly options?: never;
294
+ readonly head?: never;
295
+ readonly patch?: never;
296
+ readonly trace?: never;
297
+ };
298
+ readonly "/organizations/{organizationId}/roles/{roleId}": {
299
+ readonly parameters: {
300
+ readonly query?: never;
301
+ readonly header?: never;
302
+ readonly path: {
303
+ readonly organizationId: components["parameters"]["OrganizationId"];
304
+ readonly roleId: components["parameters"]["RoleId"];
305
+ };
306
+ readonly cookie?: never;
307
+ };
308
+ readonly get?: never;
309
+ readonly put?: never;
310
+ readonly post?: never;
311
+ /** Delete a custom role */
312
+ readonly delete: operations["deleteOrganizationRole"];
313
+ readonly options?: never;
314
+ readonly head?: never;
315
+ /** Update a custom role */
316
+ readonly patch: operations["updateOrganizationRole"];
317
+ readonly trace?: never;
318
+ };
319
+ readonly "/invitations": {
320
+ readonly parameters: {
321
+ readonly query?: never;
322
+ readonly header?: never;
323
+ readonly path?: never;
324
+ readonly cookie?: never;
325
+ };
326
+ /** List invitations */
327
+ readonly get: operations["listInvitations"];
328
+ readonly put?: never;
329
+ /** Invite a user to an organization */
330
+ readonly post: operations["createInvitation"];
331
+ readonly delete?: never;
332
+ readonly options?: never;
333
+ readonly head?: never;
334
+ readonly patch?: never;
335
+ readonly trace?: never;
336
+ };
337
+ readonly "/invitations/{invitationId}": {
338
+ readonly parameters: {
339
+ readonly query?: never;
340
+ readonly header?: never;
341
+ readonly path: {
342
+ readonly invitationId: components["parameters"]["InvitationId"];
343
+ };
344
+ readonly cookie?: never;
345
+ };
346
+ /** Get an invitation */
347
+ readonly get: operations["getInvitation"];
348
+ readonly put?: never;
349
+ readonly post?: never;
350
+ /** Revoke an invitation */
351
+ readonly delete: operations["revokeInvitation"];
352
+ readonly options?: never;
353
+ readonly head?: never;
354
+ readonly patch?: never;
355
+ readonly trace?: never;
356
+ };
357
+ readonly "/events": {
358
+ readonly parameters: {
359
+ readonly query?: never;
360
+ readonly header?: never;
361
+ readonly path?: never;
362
+ readonly cookie?: never;
363
+ };
364
+ /** List audit events */
365
+ readonly get: operations["listEvents"];
366
+ readonly put?: never;
367
+ readonly post?: never;
368
+ readonly delete?: never;
369
+ readonly options?: never;
370
+ readonly head?: never;
371
+ readonly patch?: never;
372
+ readonly trace?: never;
373
+ };
374
+ readonly "/stats/overview": {
375
+ readonly parameters: {
376
+ readonly query?: never;
377
+ readonly header?: never;
378
+ readonly path?: never;
379
+ readonly cookie?: never;
380
+ };
381
+ /** Get project usage statistics */
382
+ readonly get: operations["getStatsOverview"];
383
+ readonly put?: never;
384
+ readonly post?: never;
385
+ readonly delete?: never;
386
+ readonly options?: never;
387
+ readonly head?: never;
388
+ readonly patch?: never;
389
+ readonly trace?: never;
390
+ };
391
+ readonly "/webhooks": {
392
+ readonly parameters: {
393
+ readonly query?: never;
394
+ readonly header?: never;
395
+ readonly path?: never;
396
+ readonly cookie?: never;
397
+ };
398
+ /** List webhook endpoints */
399
+ readonly get: operations["listWebhookEndpoints"];
400
+ readonly put?: never;
401
+ /**
402
+ * Create a webhook endpoint
403
+ * @description The signing secret is returned only in this response.
404
+ */
405
+ readonly post: operations["createWebhookEndpoint"];
406
+ readonly delete?: never;
407
+ readonly options?: never;
408
+ readonly head?: never;
409
+ readonly patch?: never;
410
+ readonly trace?: never;
411
+ };
412
+ readonly "/webhooks/{webhookId}": {
413
+ readonly parameters: {
414
+ readonly query?: never;
415
+ readonly header?: never;
416
+ readonly path: {
417
+ readonly webhookId: components["parameters"]["WebhookId"];
418
+ };
419
+ readonly cookie?: never;
420
+ };
421
+ /** Get a webhook endpoint */
422
+ readonly get: operations["getWebhookEndpoint"];
423
+ readonly put?: never;
424
+ readonly post?: never;
425
+ /** Delete a webhook endpoint */
426
+ readonly delete: operations["deleteWebhookEndpoint"];
427
+ readonly options?: never;
428
+ readonly head?: never;
429
+ /** Update a webhook endpoint */
430
+ readonly patch: operations["updateWebhookEndpoint"];
431
+ readonly trace?: never;
432
+ };
433
+ readonly "/webhooks/{webhookId}/rotate-secret": {
434
+ readonly parameters: {
435
+ readonly query?: never;
436
+ readonly header?: never;
437
+ readonly path: {
438
+ readonly webhookId: components["parameters"]["WebhookId"];
439
+ };
440
+ readonly cookie?: never;
441
+ };
442
+ readonly get?: never;
443
+ readonly put?: never;
444
+ /**
445
+ * Rotate a webhook signing secret
446
+ * @description During the returned overlap window, deliveries include signatures from both the new and previous secret.
447
+ */
448
+ readonly post: operations["rotateWebhookSecret"];
449
+ readonly delete?: never;
450
+ readonly options?: never;
451
+ readonly head?: never;
452
+ readonly patch?: never;
453
+ readonly trace?: never;
454
+ };
455
+ readonly "/webhooks/{webhookId}/pause": {
456
+ readonly parameters: {
457
+ readonly query?: never;
458
+ readonly header?: never;
459
+ readonly path: {
460
+ readonly webhookId: components["parameters"]["WebhookId"];
461
+ };
462
+ readonly cookie?: never;
463
+ };
464
+ readonly get?: never;
465
+ readonly put?: never;
466
+ /** Pause a webhook endpoint */
467
+ readonly post: operations["pauseWebhookEndpoint"];
468
+ readonly delete?: never;
469
+ readonly options?: never;
470
+ readonly head?: never;
471
+ readonly patch?: never;
472
+ readonly trace?: never;
473
+ };
474
+ readonly "/webhooks/{webhookId}/resume": {
475
+ readonly parameters: {
476
+ readonly query?: never;
477
+ readonly header?: never;
478
+ readonly path: {
479
+ readonly webhookId: components["parameters"]["WebhookId"];
480
+ };
481
+ readonly cookie?: never;
482
+ };
483
+ readonly get?: never;
484
+ readonly put?: never;
485
+ /** Resume a webhook endpoint */
486
+ readonly post: operations["resumeWebhookEndpoint"];
487
+ readonly delete?: never;
488
+ readonly options?: never;
489
+ readonly head?: never;
490
+ readonly patch?: never;
491
+ readonly trace?: never;
492
+ };
493
+ readonly "/webhooks/{webhookId}/test": {
494
+ readonly parameters: {
495
+ readonly query?: never;
496
+ readonly header?: never;
497
+ readonly path: {
498
+ readonly webhookId: components["parameters"]["WebhookId"];
499
+ };
500
+ readonly cookie?: never;
501
+ };
502
+ readonly get?: never;
503
+ readonly put?: never;
504
+ /**
505
+ * Queue a test webhook delivery
506
+ * @description Queues one synthetic `webhook.test` event without changing endpoint health, including while the endpoint is paused.
507
+ */
508
+ readonly post: operations["testWebhookEndpoint"];
509
+ readonly delete?: never;
510
+ readonly options?: never;
511
+ readonly head?: never;
512
+ readonly patch?: never;
513
+ readonly trace?: never;
514
+ };
515
+ readonly "/webhook-deliveries": {
516
+ readonly parameters: {
517
+ readonly query?: never;
518
+ readonly header?: never;
519
+ readonly path?: never;
520
+ readonly cookie?: never;
521
+ };
522
+ /** List webhook delivery attempts */
523
+ readonly get: operations["listWebhookDeliveries"];
524
+ readonly put?: never;
525
+ readonly post?: never;
526
+ readonly delete?: never;
527
+ readonly options?: never;
528
+ readonly head?: never;
529
+ readonly patch?: never;
530
+ readonly trace?: never;
531
+ };
532
+ readonly "/webhook-deliveries/{deliveryId}": {
533
+ readonly parameters: {
534
+ readonly query?: never;
535
+ readonly header?: never;
536
+ readonly path: {
537
+ readonly deliveryId: components["parameters"]["DeliveryId"];
538
+ };
539
+ readonly cookie?: never;
540
+ };
541
+ /** Inspect a webhook delivery attempt */
542
+ readonly get: operations["getWebhookDelivery"];
543
+ readonly put?: never;
544
+ readonly post?: never;
545
+ readonly delete?: never;
546
+ readonly options?: never;
547
+ readonly head?: never;
548
+ readonly patch?: never;
549
+ readonly trace?: never;
550
+ };
551
+ readonly "/webhook-deliveries/{deliveryId}/replay": {
552
+ readonly parameters: {
553
+ readonly query?: never;
554
+ readonly header?: never;
555
+ readonly path: {
556
+ readonly deliveryId: components["parameters"]["DeliveryId"];
557
+ };
558
+ readonly cookie?: never;
559
+ };
560
+ readonly get?: never;
561
+ readonly put?: never;
562
+ /**
563
+ * Replay an immutable webhook event as a new attempt
564
+ * @description Starts a new delivery cycle with the original immutable event ID so consumers can deduplicate safely.
565
+ */
566
+ readonly post: operations["replayWebhookDelivery"];
567
+ readonly delete?: never;
568
+ readonly options?: never;
569
+ readonly head?: never;
570
+ readonly patch?: never;
571
+ readonly trace?: never;
572
+ };
573
+ }
574
+ interface components {
575
+ schemas: {
576
+ readonly Problem: {
577
+ /** Format: uri */
578
+ readonly type: string;
579
+ readonly title: string;
580
+ readonly status: number;
581
+ readonly detail: string;
582
+ /** Format: uri */
583
+ readonly instance: string;
584
+ readonly code: string;
585
+ } & {
586
+ readonly [key: string]: unknown;
587
+ };
588
+ readonly User: {
589
+ readonly id: string;
590
+ /** Format: email */
591
+ readonly email: string;
592
+ readonly phone: string | null;
593
+ readonly name: string | null;
594
+ /** Format: uri */
595
+ readonly image: string | null;
596
+ readonly email_verified: boolean;
597
+ readonly banned: boolean;
598
+ readonly public_metadata: components["schemas"]["MetadataObject"];
599
+ readonly private_metadata: components["schemas"]["MetadataObject"];
600
+ readonly unsafe_metadata: components["schemas"]["MetadataObject"];
601
+ readonly metadata_version: number;
602
+ /** Format: date-time */
603
+ readonly created_at: string;
604
+ /** Format: date-time */
605
+ readonly updated_at: string;
606
+ };
607
+ readonly CreateUser: {
608
+ /** Format: email */
609
+ readonly email: string;
610
+ readonly password?: string;
611
+ readonly name?: string;
612
+ readonly phone?: string;
613
+ };
614
+ readonly UpdateUser: {
615
+ /** Format: email */
616
+ readonly email?: string;
617
+ readonly name?: string | null;
618
+ readonly phone?: string | null;
619
+ readonly banned?: boolean;
620
+ };
621
+ /** @description JSON metadata object. Reserved prototype keys and the authowl_ prefix are rejected at every depth. Encoded object size is limited to 8192 bytes. */
622
+ readonly MetadataObject: {
623
+ readonly [key: string]: unknown;
624
+ };
625
+ readonly UserMetadata: {
626
+ readonly public_metadata: components["schemas"]["MetadataObject"];
627
+ readonly private_metadata: components["schemas"]["MetadataObject"];
628
+ readonly unsafe_metadata: components["schemas"]["MetadataObject"];
629
+ readonly metadata_version: number;
630
+ };
631
+ readonly UpdateUserMetadata: {
632
+ readonly expected_version: number;
633
+ readonly public_metadata?: components["schemas"]["MetadataObject"];
634
+ readonly private_metadata?: components["schemas"]["MetadataObject"];
635
+ readonly unsafe_metadata?: components["schemas"]["MetadataObject"];
636
+ };
637
+ readonly Session: {
638
+ readonly id: string;
639
+ readonly user_id: string;
640
+ /** Format: date-time */
641
+ readonly expires_at: string;
642
+ /** Format: date-time */
643
+ readonly created_at: string;
644
+ readonly ip_address?: string | null;
645
+ readonly user_agent?: string | null;
646
+ readonly metadata: components["schemas"]["MetadataObject"];
647
+ readonly metadata_version: number;
648
+ };
649
+ readonly SessionMetadata: {
650
+ readonly metadata: components["schemas"]["MetadataObject"];
651
+ readonly metadata_version: number;
652
+ };
653
+ readonly UpdateSessionMetadata: {
654
+ readonly expected_version: number;
655
+ readonly metadata: components["schemas"]["MetadataObject"];
656
+ };
657
+ readonly Organization: {
658
+ readonly id: string;
659
+ readonly name: string;
660
+ readonly slug: string;
661
+ /** Format: uri */
662
+ readonly logo?: string | null;
663
+ readonly metadata?: Record<string, never> | null;
664
+ /** Format: date-time */
665
+ readonly created_at: string;
666
+ };
667
+ readonly CreateOrganization: {
668
+ readonly name: string;
669
+ readonly slug: string;
670
+ /** Format: uri */
671
+ readonly logo?: string;
672
+ readonly metadata?: Record<string, never>;
673
+ };
674
+ readonly UpdateOrganization: {
675
+ readonly name?: string;
676
+ readonly slug?: string;
677
+ /** Format: uri */
678
+ readonly logo?: string | null;
679
+ readonly metadata?: Record<string, never> | null;
680
+ };
681
+ readonly OrganizationMember: {
682
+ readonly organization_id: string;
683
+ readonly user_id: string;
684
+ readonly role: string;
685
+ /** Format: date-time */
686
+ readonly created_at: string;
687
+ };
688
+ readonly AddMember: {
689
+ readonly user_id: string;
690
+ readonly role: string;
691
+ };
692
+ readonly OrganizationRole: {
693
+ readonly id: string;
694
+ readonly organization_id: string;
695
+ readonly name: string;
696
+ readonly permissions: readonly components["schemas"]["OrganizationPermissionId"][];
697
+ };
698
+ /** @enum {string} */
699
+ readonly OrganizationPermissionId: "organization:update" | "organization:delete" | "member:create" | "member:update" | "member:delete" | "invitation:create" | "invitation:cancel" | "team:create" | "team:update" | "team:delete" | "ac:create" | "ac:read" | "ac:update" | "ac:delete";
700
+ readonly RoleInput: {
701
+ readonly name: string;
702
+ readonly permissions: readonly components["schemas"]["OrganizationPermissionId"][];
703
+ };
704
+ readonly Invitation: {
705
+ readonly id: string;
706
+ readonly organization_id: string;
707
+ /** Format: email */
708
+ readonly email: string;
709
+ readonly role: string;
710
+ readonly status: string;
711
+ /** Format: date-time */
712
+ readonly expires_at: string;
713
+ };
714
+ readonly CreateInvitation: {
715
+ readonly organization_id: string;
716
+ /** Format: email */
717
+ readonly email: string;
718
+ readonly role: string;
719
+ };
720
+ readonly Event: {
721
+ readonly id: string;
722
+ readonly type: string;
723
+ readonly status: string;
724
+ readonly user_id?: string | null;
725
+ readonly metadata?: Record<string, never>;
726
+ /** Format: date-time */
727
+ readonly created_at: string;
728
+ };
729
+ readonly StatsOverview: {
730
+ readonly users_total: number;
731
+ readonly monthly_active_users: number;
732
+ readonly recent_sign_ins: number;
733
+ };
734
+ readonly WebhookInput: {
735
+ /** Format: uri */
736
+ readonly url: string;
737
+ readonly description?: string;
738
+ readonly events: readonly components["schemas"]["WebhookSubscriptionEventType"][];
739
+ };
740
+ /** @enum {string} */
741
+ readonly WebhookSubscriptionEventType: "user.created" | "user.updated" | "user.deleted" | "user.banned" | "session.created" | "session.updated" | "session.revoked" | "organization.created" | "organization.updated" | "organization.deleted" | "organization_membership.created" | "organization_membership.deleted" | "mfa.enrolled" | "mfa.reset";
742
+ /** @enum {string} */
743
+ readonly WebhookEventType: "user.created" | "user.updated" | "user.deleted" | "user.banned" | "session.created" | "session.updated" | "session.revoked" | "organization.created" | "organization.updated" | "organization.deleted" | "organization_membership.created" | "organization_membership.deleted" | "mfa.enrolled" | "mfa.reset" | "webhook.test";
744
+ readonly WebhookEndpoint: {
745
+ /** Format: uuid */
746
+ readonly id: string;
747
+ /** Format: uri */
748
+ readonly url: string;
749
+ readonly description?: string | null;
750
+ readonly events: readonly components["schemas"]["WebhookSubscriptionEventType"][];
751
+ /** @enum {string} */
752
+ readonly status: "active" | "paused" | "auto_paused";
753
+ /** Format: date-time */
754
+ readonly created_at: string;
755
+ /** Format: date-time */
756
+ readonly updated_at: string;
757
+ };
758
+ readonly WebhookSecret: {
759
+ readonly secret: string;
760
+ /** Format: date-time */
761
+ readonly overlap_expires_at: string;
762
+ };
763
+ readonly WebhookWithSecret: {
764
+ readonly endpoint: components["schemas"]["WebhookEndpoint"];
765
+ readonly secret: string;
766
+ };
767
+ readonly WebhookDelivery: {
768
+ /** Format: uuid */
769
+ readonly id: string;
770
+ /** Format: uuid */
771
+ readonly event_id: string;
772
+ /** Format: uuid */
773
+ readonly attempt_id: string;
774
+ readonly attempt_number: number;
775
+ /** Format: uuid */
776
+ readonly webhook_id: string;
777
+ readonly event_type: components["schemas"]["WebhookEventType"];
778
+ /** @enum {string} */
779
+ readonly status: "queued" | "delivering" | "succeeded" | "failed";
780
+ readonly response_status: number | null;
781
+ readonly response_body: string | null;
782
+ readonly error_code: string | null;
783
+ /** Format: date-time */
784
+ readonly created_at: string;
785
+ /** Format: date-time */
786
+ readonly delivered_at: string | null;
787
+ };
788
+ readonly ExportJob: {
789
+ /** Format: uuid */
790
+ readonly id: string;
791
+ /** @enum {string} */
792
+ readonly status: "pending" | "processing" | "completed" | "failed";
793
+ /** Format: date-time */
794
+ readonly created_at: string;
795
+ };
796
+ readonly Page: {
797
+ readonly data: readonly unknown[];
798
+ readonly next_cursor: string | null;
799
+ };
800
+ readonly UserPage: components["schemas"]["Page"] & {
801
+ readonly data?: readonly components["schemas"]["User"][];
802
+ };
803
+ readonly SessionPage: components["schemas"]["Page"] & {
804
+ readonly data?: readonly components["schemas"]["Session"][];
805
+ };
806
+ readonly OrganizationPage: components["schemas"]["Page"] & {
807
+ readonly data?: readonly components["schemas"]["Organization"][];
808
+ };
809
+ readonly MemberPage: components["schemas"]["Page"] & {
810
+ readonly data?: readonly components["schemas"]["OrganizationMember"][];
811
+ };
812
+ readonly RolePage: components["schemas"]["Page"] & {
813
+ readonly data?: readonly components["schemas"]["OrganizationRole"][];
814
+ };
815
+ readonly InvitationPage: components["schemas"]["Page"] & {
816
+ readonly data?: readonly components["schemas"]["Invitation"][];
817
+ };
818
+ readonly EventPage: components["schemas"]["Page"] & {
819
+ readonly data?: readonly components["schemas"]["Event"][];
820
+ };
821
+ readonly WebhookPage: components["schemas"]["Page"] & {
822
+ readonly data?: readonly components["schemas"]["WebhookEndpoint"][];
823
+ };
824
+ readonly DeliveryPage: components["schemas"]["Page"] & {
825
+ readonly data?: readonly components["schemas"]["WebhookDelivery"][];
826
+ };
827
+ };
828
+ responses: {
829
+ /** @description Invalid request */
830
+ readonly InvalidRequest: {
831
+ headers: {
832
+ readonly [name: string]: unknown;
833
+ };
834
+ content: {
835
+ readonly "application/problem+json": components["schemas"]["Problem"];
836
+ };
837
+ };
838
+ /** @description Missing, invalid, or publishable key */
839
+ readonly Unauthorized: {
840
+ headers: {
841
+ readonly "WWW-Authenticate"?: string;
842
+ readonly [name: string]: unknown;
843
+ };
844
+ content: {
845
+ readonly "application/problem+json": components["schemas"]["Problem"];
846
+ };
847
+ };
848
+ /** @description Secret key lacks the required scope */
849
+ readonly Forbidden: {
850
+ headers: {
851
+ readonly [name: string]: unknown;
852
+ };
853
+ content: {
854
+ readonly "application/problem+json": components["schemas"]["Problem"];
855
+ };
856
+ };
857
+ /** @description Resource is missing or belongs to another project */
858
+ readonly NotFound: {
859
+ headers: {
860
+ readonly [name: string]: unknown;
861
+ };
862
+ content: {
863
+ readonly "application/problem+json": components["schemas"]["Problem"];
864
+ };
865
+ };
866
+ /** @description Metadata changed since the supplied version was read */
867
+ readonly VersionConflict: {
868
+ headers: {
869
+ readonly "X-AuthOwl-Metadata-Version"?: number;
870
+ readonly [name: string]: unknown;
871
+ };
872
+ content: {
873
+ readonly "application/problem+json": components["schemas"]["Problem"];
874
+ };
875
+ };
876
+ /** @description Plan rate limit exceeded */
877
+ readonly RateLimited: {
878
+ headers: {
879
+ readonly "Retry-After"?: number;
880
+ readonly "X-RateLimit-Limit"?: number;
881
+ readonly "X-RateLimit-Remaining"?: number;
882
+ readonly "X-RateLimit-Reset"?: number;
883
+ readonly [name: string]: unknown;
884
+ };
885
+ content: {
886
+ readonly "application/problem+json": components["schemas"]["Problem"];
887
+ };
888
+ };
889
+ /** @description User page */
890
+ readonly UserPage: {
891
+ headers: {
892
+ readonly [name: string]: unknown;
893
+ };
894
+ content: {
895
+ readonly "application/json": components["schemas"]["UserPage"];
896
+ };
897
+ };
898
+ /** @description Session page */
899
+ readonly SessionPage: {
900
+ headers: {
901
+ readonly [name: string]: unknown;
902
+ };
903
+ content: {
904
+ readonly "application/json": components["schemas"]["SessionPage"];
905
+ };
906
+ };
907
+ /** @description Organization page */
908
+ readonly OrganizationPage: {
909
+ headers: {
910
+ readonly [name: string]: unknown;
911
+ };
912
+ content: {
913
+ readonly "application/json": components["schemas"]["OrganizationPage"];
914
+ };
915
+ };
916
+ /** @description Organization member page */
917
+ readonly MemberPage: {
918
+ headers: {
919
+ readonly [name: string]: unknown;
920
+ };
921
+ content: {
922
+ readonly "application/json": components["schemas"]["MemberPage"];
923
+ };
924
+ };
925
+ /** @description Organization role page */
926
+ readonly RolePage: {
927
+ headers: {
928
+ readonly [name: string]: unknown;
929
+ };
930
+ content: {
931
+ readonly "application/json": components["schemas"]["RolePage"];
932
+ };
933
+ };
934
+ /** @description Invitation page */
935
+ readonly InvitationPage: {
936
+ headers: {
937
+ readonly [name: string]: unknown;
938
+ };
939
+ content: {
940
+ readonly "application/json": components["schemas"]["InvitationPage"];
941
+ };
942
+ };
943
+ /** @description Event page */
944
+ readonly EventPage: {
945
+ headers: {
946
+ readonly [name: string]: unknown;
947
+ };
948
+ content: {
949
+ readonly "application/json": components["schemas"]["EventPage"];
950
+ };
951
+ };
952
+ /** @description Webhook endpoint page */
953
+ readonly WebhookPage: {
954
+ headers: {
955
+ readonly [name: string]: unknown;
956
+ };
957
+ content: {
958
+ readonly "application/json": components["schemas"]["WebhookPage"];
959
+ };
960
+ };
961
+ /** @description Webhook delivery page */
962
+ readonly DeliveryPage: {
963
+ headers: {
964
+ readonly [name: string]: unknown;
965
+ };
966
+ content: {
967
+ readonly "application/json": components["schemas"]["DeliveryPage"];
968
+ };
969
+ };
970
+ };
971
+ parameters: {
972
+ readonly Limit: number;
973
+ readonly Cursor: string;
974
+ readonly UserId: string;
975
+ readonly SessionId: string;
976
+ readonly OrganizationId: string;
977
+ readonly RoleId: string;
978
+ readonly InvitationId: string;
979
+ readonly WebhookId: string;
980
+ readonly DeliveryId: string;
981
+ };
982
+ requestBodies: never;
983
+ headers: never;
984
+ pathItems: never;
985
+ }
986
+ interface operations {
987
+ readonly getOpenApiDocument: {
988
+ readonly parameters: {
989
+ readonly query?: never;
990
+ readonly header?: never;
991
+ readonly path?: never;
992
+ readonly cookie?: never;
993
+ };
994
+ readonly requestBody?: never;
995
+ readonly responses: {
996
+ /** @description OpenAPI document */
997
+ readonly 200: {
998
+ headers: {
999
+ readonly [name: string]: unknown;
1000
+ };
1001
+ content: {
1002
+ readonly "application/json": Record<string, never>;
1003
+ };
1004
+ };
1005
+ };
1006
+ };
1007
+ readonly listUsers: {
1008
+ readonly parameters: {
1009
+ readonly query?: {
1010
+ readonly limit?: components["parameters"]["Limit"];
1011
+ readonly cursor?: components["parameters"]["Cursor"];
1012
+ readonly query?: string;
1013
+ };
1014
+ readonly header?: never;
1015
+ readonly path?: never;
1016
+ readonly cookie?: never;
1017
+ };
1018
+ readonly requestBody?: never;
1019
+ readonly responses: {
1020
+ readonly 200: components["responses"]["UserPage"];
1021
+ readonly 400: components["responses"]["InvalidRequest"];
1022
+ readonly 401: components["responses"]["Unauthorized"];
1023
+ readonly 403: components["responses"]["Forbidden"];
1024
+ readonly 429: components["responses"]["RateLimited"];
1025
+ };
1026
+ };
1027
+ readonly createUser: {
1028
+ readonly parameters: {
1029
+ readonly query?: never;
1030
+ readonly header?: never;
1031
+ readonly path?: never;
1032
+ readonly cookie?: never;
1033
+ };
1034
+ readonly requestBody: {
1035
+ readonly content: {
1036
+ readonly "application/json": components["schemas"]["CreateUser"];
1037
+ };
1038
+ };
1039
+ readonly responses: {
1040
+ /** @description User created */
1041
+ readonly 201: {
1042
+ headers: {
1043
+ readonly [name: string]: unknown;
1044
+ };
1045
+ content: {
1046
+ readonly "application/json": components["schemas"]["User"];
1047
+ };
1048
+ };
1049
+ readonly 400: components["responses"]["InvalidRequest"];
1050
+ readonly 401: components["responses"]["Unauthorized"];
1051
+ readonly 403: components["responses"]["Forbidden"];
1052
+ readonly 429: components["responses"]["RateLimited"];
1053
+ };
1054
+ };
1055
+ readonly startUserExport: {
1056
+ readonly parameters: {
1057
+ readonly query?: never;
1058
+ readonly header?: never;
1059
+ readonly path?: never;
1060
+ readonly cookie?: never;
1061
+ };
1062
+ readonly requestBody?: never;
1063
+ readonly responses: {
1064
+ /** @description Export accepted */
1065
+ readonly 202: {
1066
+ headers: {
1067
+ readonly [name: string]: unknown;
1068
+ };
1069
+ content: {
1070
+ readonly "application/json": components["schemas"]["ExportJob"];
1071
+ };
1072
+ };
1073
+ readonly 401: components["responses"]["Unauthorized"];
1074
+ readonly 403: components["responses"]["Forbidden"];
1075
+ readonly 429: components["responses"]["RateLimited"];
1076
+ };
1077
+ };
1078
+ readonly getUser: {
1079
+ readonly parameters: {
1080
+ readonly query?: never;
1081
+ readonly header?: never;
1082
+ readonly path: {
1083
+ readonly userId: components["parameters"]["UserId"];
1084
+ };
1085
+ readonly cookie?: never;
1086
+ };
1087
+ readonly requestBody?: never;
1088
+ readonly responses: {
1089
+ /** @description User */
1090
+ readonly 200: {
1091
+ headers: {
1092
+ readonly [name: string]: unknown;
1093
+ };
1094
+ content: {
1095
+ readonly "application/json": components["schemas"]["User"];
1096
+ };
1097
+ };
1098
+ readonly 401: components["responses"]["Unauthorized"];
1099
+ readonly 403: components["responses"]["Forbidden"];
1100
+ readonly 404: components["responses"]["NotFound"];
1101
+ readonly 429: components["responses"]["RateLimited"];
1102
+ };
1103
+ };
1104
+ readonly deleteUser: {
1105
+ readonly parameters: {
1106
+ readonly query?: never;
1107
+ readonly header?: never;
1108
+ readonly path: {
1109
+ readonly userId: components["parameters"]["UserId"];
1110
+ };
1111
+ readonly cookie?: never;
1112
+ };
1113
+ readonly requestBody?: never;
1114
+ readonly responses: {
1115
+ /** @description User deleted */
1116
+ readonly 204: {
1117
+ headers: {
1118
+ readonly [name: string]: unknown;
1119
+ };
1120
+ content?: never;
1121
+ };
1122
+ readonly 401: components["responses"]["Unauthorized"];
1123
+ readonly 403: components["responses"]["Forbidden"];
1124
+ readonly 404: components["responses"]["NotFound"];
1125
+ readonly 429: components["responses"]["RateLimited"];
1126
+ };
1127
+ };
1128
+ readonly updateUser: {
1129
+ readonly parameters: {
1130
+ readonly query?: never;
1131
+ readonly header?: never;
1132
+ readonly path: {
1133
+ readonly userId: components["parameters"]["UserId"];
1134
+ };
1135
+ readonly cookie?: never;
1136
+ };
1137
+ readonly requestBody: {
1138
+ readonly content: {
1139
+ readonly "application/json": components["schemas"]["UpdateUser"];
1140
+ };
1141
+ };
1142
+ readonly responses: {
1143
+ /** @description Updated user */
1144
+ readonly 200: {
1145
+ headers: {
1146
+ readonly [name: string]: unknown;
1147
+ };
1148
+ content: {
1149
+ readonly "application/json": components["schemas"]["User"];
1150
+ };
1151
+ };
1152
+ readonly 400: components["responses"]["InvalidRequest"];
1153
+ readonly 401: components["responses"]["Unauthorized"];
1154
+ readonly 403: components["responses"]["Forbidden"];
1155
+ readonly 404: components["responses"]["NotFound"];
1156
+ readonly 429: components["responses"]["RateLimited"];
1157
+ };
1158
+ };
1159
+ readonly listUserSessions: {
1160
+ readonly parameters: {
1161
+ readonly query?: {
1162
+ readonly limit?: components["parameters"]["Limit"];
1163
+ readonly cursor?: components["parameters"]["Cursor"];
1164
+ };
1165
+ readonly header?: never;
1166
+ readonly path: {
1167
+ readonly userId: components["parameters"]["UserId"];
1168
+ };
1169
+ readonly cookie?: never;
1170
+ };
1171
+ readonly requestBody?: never;
1172
+ readonly responses: {
1173
+ readonly 200: components["responses"]["SessionPage"];
1174
+ readonly 400: components["responses"]["InvalidRequest"];
1175
+ readonly 401: components["responses"]["Unauthorized"];
1176
+ readonly 403: components["responses"]["Forbidden"];
1177
+ readonly 404: components["responses"]["NotFound"];
1178
+ readonly 429: components["responses"]["RateLimited"];
1179
+ };
1180
+ };
1181
+ readonly revokeUserSessions: {
1182
+ readonly parameters: {
1183
+ readonly query?: never;
1184
+ readonly header?: never;
1185
+ readonly path: {
1186
+ readonly userId: components["parameters"]["UserId"];
1187
+ };
1188
+ readonly cookie?: never;
1189
+ };
1190
+ readonly requestBody?: never;
1191
+ readonly responses: {
1192
+ /** @description Sessions revoked */
1193
+ readonly 204: {
1194
+ headers: {
1195
+ readonly [name: string]: unknown;
1196
+ };
1197
+ content?: never;
1198
+ };
1199
+ readonly 401: components["responses"]["Unauthorized"];
1200
+ readonly 403: components["responses"]["Forbidden"];
1201
+ readonly 404: components["responses"]["NotFound"];
1202
+ readonly 429: components["responses"]["RateLimited"];
1203
+ };
1204
+ };
1205
+ readonly updateUserMetadata: {
1206
+ readonly parameters: {
1207
+ readonly query?: never;
1208
+ readonly header?: never;
1209
+ readonly path: {
1210
+ readonly userId: components["parameters"]["UserId"];
1211
+ };
1212
+ readonly cookie?: never;
1213
+ };
1214
+ readonly requestBody: {
1215
+ readonly content: {
1216
+ readonly "application/json": components["schemas"]["UpdateUserMetadata"];
1217
+ };
1218
+ };
1219
+ readonly responses: {
1220
+ /** @description Updated user metadata */
1221
+ readonly 200: {
1222
+ headers: {
1223
+ readonly [name: string]: unknown;
1224
+ };
1225
+ content: {
1226
+ readonly "application/json": components["schemas"]["UserMetadata"];
1227
+ };
1228
+ };
1229
+ readonly 400: components["responses"]["InvalidRequest"];
1230
+ readonly 401: components["responses"]["Unauthorized"];
1231
+ readonly 403: components["responses"]["Forbidden"];
1232
+ readonly 404: components["responses"]["NotFound"];
1233
+ readonly 409: components["responses"]["VersionConflict"];
1234
+ readonly 429: components["responses"]["RateLimited"];
1235
+ };
1236
+ };
1237
+ readonly verifySession: {
1238
+ readonly parameters: {
1239
+ readonly query?: never;
1240
+ readonly header?: never;
1241
+ readonly path?: never;
1242
+ readonly cookie?: never;
1243
+ };
1244
+ readonly requestBody: {
1245
+ readonly content: {
1246
+ readonly "application/json": {
1247
+ readonly token: string;
1248
+ };
1249
+ };
1250
+ };
1251
+ readonly responses: {
1252
+ /** @description Verified session and user */
1253
+ readonly 200: {
1254
+ headers: {
1255
+ readonly [name: string]: unknown;
1256
+ };
1257
+ content: {
1258
+ readonly "application/json": {
1259
+ readonly user: components["schemas"]["User"];
1260
+ readonly session: components["schemas"]["Session"];
1261
+ };
1262
+ };
1263
+ };
1264
+ readonly 400: components["responses"]["InvalidRequest"];
1265
+ readonly 401: components["responses"]["Unauthorized"];
1266
+ readonly 403: components["responses"]["Forbidden"];
1267
+ readonly 404: components["responses"]["NotFound"];
1268
+ readonly 429: components["responses"]["RateLimited"];
1269
+ };
1270
+ };
1271
+ readonly getSession: {
1272
+ readonly parameters: {
1273
+ readonly query?: never;
1274
+ readonly header?: never;
1275
+ readonly path: {
1276
+ readonly sessionId: components["parameters"]["SessionId"];
1277
+ };
1278
+ readonly cookie?: never;
1279
+ };
1280
+ readonly requestBody?: never;
1281
+ readonly responses: {
1282
+ /** @description Session */
1283
+ readonly 200: {
1284
+ headers: {
1285
+ readonly [name: string]: unknown;
1286
+ };
1287
+ content: {
1288
+ readonly "application/json": components["schemas"]["Session"];
1289
+ };
1290
+ };
1291
+ readonly 401: components["responses"]["Unauthorized"];
1292
+ readonly 403: components["responses"]["Forbidden"];
1293
+ readonly 404: components["responses"]["NotFound"];
1294
+ readonly 429: components["responses"]["RateLimited"];
1295
+ };
1296
+ };
1297
+ readonly revokeSession: {
1298
+ readonly parameters: {
1299
+ readonly query?: never;
1300
+ readonly header?: never;
1301
+ readonly path: {
1302
+ readonly sessionId: components["parameters"]["SessionId"];
1303
+ };
1304
+ readonly cookie?: never;
1305
+ };
1306
+ readonly requestBody?: never;
1307
+ readonly responses: {
1308
+ /** @description Session revoked */
1309
+ readonly 204: {
1310
+ headers: {
1311
+ readonly [name: string]: unknown;
1312
+ };
1313
+ content?: never;
1314
+ };
1315
+ readonly 401: components["responses"]["Unauthorized"];
1316
+ readonly 403: components["responses"]["Forbidden"];
1317
+ readonly 404: components["responses"]["NotFound"];
1318
+ readonly 429: components["responses"]["RateLimited"];
1319
+ };
1320
+ };
1321
+ readonly updateSessionMetadata: {
1322
+ readonly parameters: {
1323
+ readonly query?: never;
1324
+ readonly header?: never;
1325
+ readonly path: {
1326
+ readonly sessionId: components["parameters"]["SessionId"];
1327
+ };
1328
+ readonly cookie?: never;
1329
+ };
1330
+ readonly requestBody: {
1331
+ readonly content: {
1332
+ readonly "application/json": components["schemas"]["UpdateSessionMetadata"];
1333
+ };
1334
+ };
1335
+ readonly responses: {
1336
+ /** @description Updated session metadata */
1337
+ readonly 200: {
1338
+ headers: {
1339
+ readonly [name: string]: unknown;
1340
+ };
1341
+ content: {
1342
+ readonly "application/json": components["schemas"]["SessionMetadata"];
1343
+ };
1344
+ };
1345
+ readonly 400: components["responses"]["InvalidRequest"];
1346
+ readonly 401: components["responses"]["Unauthorized"];
1347
+ readonly 403: components["responses"]["Forbidden"];
1348
+ readonly 404: components["responses"]["NotFound"];
1349
+ readonly 409: components["responses"]["VersionConflict"];
1350
+ readonly 429: components["responses"]["RateLimited"];
1351
+ };
1352
+ };
1353
+ readonly listOrganizations: {
1354
+ readonly parameters: {
1355
+ readonly query?: {
1356
+ readonly limit?: components["parameters"]["Limit"];
1357
+ readonly cursor?: components["parameters"]["Cursor"];
1358
+ };
1359
+ readonly header?: never;
1360
+ readonly path?: never;
1361
+ readonly cookie?: never;
1362
+ };
1363
+ readonly requestBody?: never;
1364
+ readonly responses: {
1365
+ readonly 200: components["responses"]["OrganizationPage"];
1366
+ readonly 401: components["responses"]["Unauthorized"];
1367
+ readonly 403: components["responses"]["Forbidden"];
1368
+ readonly 429: components["responses"]["RateLimited"];
1369
+ };
1370
+ };
1371
+ readonly createOrganization: {
1372
+ readonly parameters: {
1373
+ readonly query?: never;
1374
+ readonly header?: never;
1375
+ readonly path?: never;
1376
+ readonly cookie?: never;
1377
+ };
1378
+ readonly requestBody: {
1379
+ readonly content: {
1380
+ readonly "application/json": components["schemas"]["CreateOrganization"];
1381
+ };
1382
+ };
1383
+ readonly responses: {
1384
+ /** @description Organization created */
1385
+ readonly 201: {
1386
+ headers: {
1387
+ readonly [name: string]: unknown;
1388
+ };
1389
+ content: {
1390
+ readonly "application/json": components["schemas"]["Organization"];
1391
+ };
1392
+ };
1393
+ readonly 400: components["responses"]["InvalidRequest"];
1394
+ readonly 401: components["responses"]["Unauthorized"];
1395
+ readonly 403: components["responses"]["Forbidden"];
1396
+ readonly 429: components["responses"]["RateLimited"];
1397
+ };
1398
+ };
1399
+ readonly getOrganization: {
1400
+ readonly parameters: {
1401
+ readonly query?: never;
1402
+ readonly header?: never;
1403
+ readonly path: {
1404
+ readonly organizationId: components["parameters"]["OrganizationId"];
1405
+ };
1406
+ readonly cookie?: never;
1407
+ };
1408
+ readonly requestBody?: never;
1409
+ readonly responses: {
1410
+ /** @description Organization */
1411
+ readonly 200: {
1412
+ headers: {
1413
+ readonly [name: string]: unknown;
1414
+ };
1415
+ content: {
1416
+ readonly "application/json": components["schemas"]["Organization"];
1417
+ };
1418
+ };
1419
+ readonly 401: components["responses"]["Unauthorized"];
1420
+ readonly 403: components["responses"]["Forbidden"];
1421
+ readonly 404: components["responses"]["NotFound"];
1422
+ readonly 429: components["responses"]["RateLimited"];
1423
+ };
1424
+ };
1425
+ readonly deleteOrganization: {
1426
+ readonly parameters: {
1427
+ readonly query?: never;
1428
+ readonly header?: never;
1429
+ readonly path: {
1430
+ readonly organizationId: components["parameters"]["OrganizationId"];
1431
+ };
1432
+ readonly cookie?: never;
1433
+ };
1434
+ readonly requestBody?: never;
1435
+ readonly responses: {
1436
+ /** @description Organization deleted */
1437
+ readonly 204: {
1438
+ headers: {
1439
+ readonly [name: string]: unknown;
1440
+ };
1441
+ content?: never;
1442
+ };
1443
+ readonly 401: components["responses"]["Unauthorized"];
1444
+ readonly 403: components["responses"]["Forbidden"];
1445
+ readonly 404: components["responses"]["NotFound"];
1446
+ readonly 429: components["responses"]["RateLimited"];
1447
+ };
1448
+ };
1449
+ readonly updateOrganization: {
1450
+ readonly parameters: {
1451
+ readonly query?: never;
1452
+ readonly header?: never;
1453
+ readonly path: {
1454
+ readonly organizationId: components["parameters"]["OrganizationId"];
1455
+ };
1456
+ readonly cookie?: never;
1457
+ };
1458
+ readonly requestBody: {
1459
+ readonly content: {
1460
+ readonly "application/json": components["schemas"]["UpdateOrganization"];
1461
+ };
1462
+ };
1463
+ readonly responses: {
1464
+ /** @description Updated organization */
1465
+ readonly 200: {
1466
+ headers: {
1467
+ readonly [name: string]: unknown;
1468
+ };
1469
+ content: {
1470
+ readonly "application/json": components["schemas"]["Organization"];
1471
+ };
1472
+ };
1473
+ readonly 400: components["responses"]["InvalidRequest"];
1474
+ readonly 401: components["responses"]["Unauthorized"];
1475
+ readonly 403: components["responses"]["Forbidden"];
1476
+ readonly 404: components["responses"]["NotFound"];
1477
+ readonly 429: components["responses"]["RateLimited"];
1478
+ };
1479
+ };
1480
+ readonly listOrganizationMembers: {
1481
+ readonly parameters: {
1482
+ readonly query?: {
1483
+ readonly limit?: components["parameters"]["Limit"];
1484
+ readonly cursor?: components["parameters"]["Cursor"];
1485
+ };
1486
+ readonly header?: never;
1487
+ readonly path: {
1488
+ readonly organizationId: components["parameters"]["OrganizationId"];
1489
+ };
1490
+ readonly cookie?: never;
1491
+ };
1492
+ readonly requestBody?: never;
1493
+ readonly responses: {
1494
+ readonly 200: components["responses"]["MemberPage"];
1495
+ readonly 400: components["responses"]["InvalidRequest"];
1496
+ readonly 401: components["responses"]["Unauthorized"];
1497
+ readonly 403: components["responses"]["Forbidden"];
1498
+ readonly 404: components["responses"]["NotFound"];
1499
+ readonly 429: components["responses"]["RateLimited"];
1500
+ };
1501
+ };
1502
+ readonly addOrganizationMember: {
1503
+ readonly parameters: {
1504
+ readonly query?: never;
1505
+ readonly header?: never;
1506
+ readonly path: {
1507
+ readonly organizationId: components["parameters"]["OrganizationId"];
1508
+ };
1509
+ readonly cookie?: never;
1510
+ };
1511
+ readonly requestBody: {
1512
+ readonly content: {
1513
+ readonly "application/json": components["schemas"]["AddMember"];
1514
+ };
1515
+ };
1516
+ readonly responses: {
1517
+ /** @description Member added */
1518
+ readonly 201: {
1519
+ headers: {
1520
+ readonly [name: string]: unknown;
1521
+ };
1522
+ content: {
1523
+ readonly "application/json": components["schemas"]["OrganizationMember"];
1524
+ };
1525
+ };
1526
+ readonly 400: components["responses"]["InvalidRequest"];
1527
+ readonly 401: components["responses"]["Unauthorized"];
1528
+ readonly 403: components["responses"]["Forbidden"];
1529
+ readonly 404: components["responses"]["NotFound"];
1530
+ readonly 429: components["responses"]["RateLimited"];
1531
+ };
1532
+ };
1533
+ readonly removeOrganizationMember: {
1534
+ readonly parameters: {
1535
+ readonly query?: never;
1536
+ readonly header?: never;
1537
+ readonly path: {
1538
+ readonly organizationId: components["parameters"]["OrganizationId"];
1539
+ readonly userId: components["parameters"]["UserId"];
1540
+ };
1541
+ readonly cookie?: never;
1542
+ };
1543
+ readonly requestBody?: never;
1544
+ readonly responses: {
1545
+ /** @description Member removed */
1546
+ readonly 204: {
1547
+ headers: {
1548
+ readonly [name: string]: unknown;
1549
+ };
1550
+ content?: never;
1551
+ };
1552
+ readonly 401: components["responses"]["Unauthorized"];
1553
+ readonly 403: components["responses"]["Forbidden"];
1554
+ readonly 404: components["responses"]["NotFound"];
1555
+ readonly 429: components["responses"]["RateLimited"];
1556
+ };
1557
+ };
1558
+ readonly updateOrganizationMember: {
1559
+ readonly parameters: {
1560
+ readonly query?: never;
1561
+ readonly header?: never;
1562
+ readonly path: {
1563
+ readonly organizationId: components["parameters"]["OrganizationId"];
1564
+ readonly userId: components["parameters"]["UserId"];
1565
+ };
1566
+ readonly cookie?: never;
1567
+ };
1568
+ readonly requestBody: {
1569
+ readonly content: {
1570
+ readonly "application/json": {
1571
+ readonly role: string;
1572
+ };
1573
+ };
1574
+ };
1575
+ readonly responses: {
1576
+ /** @description Updated membership */
1577
+ readonly 200: {
1578
+ headers: {
1579
+ readonly [name: string]: unknown;
1580
+ };
1581
+ content: {
1582
+ readonly "application/json": components["schemas"]["OrganizationMember"];
1583
+ };
1584
+ };
1585
+ readonly 400: components["responses"]["InvalidRequest"];
1586
+ readonly 401: components["responses"]["Unauthorized"];
1587
+ readonly 403: components["responses"]["Forbidden"];
1588
+ readonly 404: components["responses"]["NotFound"];
1589
+ readonly 429: components["responses"]["RateLimited"];
1590
+ };
1591
+ };
1592
+ readonly listOrganizationRoles: {
1593
+ readonly parameters: {
1594
+ readonly query?: {
1595
+ readonly limit?: components["parameters"]["Limit"];
1596
+ readonly cursor?: components["parameters"]["Cursor"];
1597
+ };
1598
+ readonly header?: never;
1599
+ readonly path: {
1600
+ readonly organizationId: components["parameters"]["OrganizationId"];
1601
+ };
1602
+ readonly cookie?: never;
1603
+ };
1604
+ readonly requestBody?: never;
1605
+ readonly responses: {
1606
+ readonly 200: components["responses"]["RolePage"];
1607
+ readonly 400: components["responses"]["InvalidRequest"];
1608
+ readonly 401: components["responses"]["Unauthorized"];
1609
+ readonly 403: components["responses"]["Forbidden"];
1610
+ readonly 404: components["responses"]["NotFound"];
1611
+ readonly 429: components["responses"]["RateLimited"];
1612
+ };
1613
+ };
1614
+ readonly createOrganizationRole: {
1615
+ readonly parameters: {
1616
+ readonly query?: never;
1617
+ readonly header?: never;
1618
+ readonly path: {
1619
+ readonly organizationId: components["parameters"]["OrganizationId"];
1620
+ };
1621
+ readonly cookie?: never;
1622
+ };
1623
+ readonly requestBody: {
1624
+ readonly content: {
1625
+ readonly "application/json": components["schemas"]["RoleInput"];
1626
+ };
1627
+ };
1628
+ readonly responses: {
1629
+ /** @description Role created */
1630
+ readonly 201: {
1631
+ headers: {
1632
+ readonly [name: string]: unknown;
1633
+ };
1634
+ content: {
1635
+ readonly "application/json": components["schemas"]["OrganizationRole"];
1636
+ };
1637
+ };
1638
+ readonly 400: components["responses"]["InvalidRequest"];
1639
+ readonly 401: components["responses"]["Unauthorized"];
1640
+ readonly 403: components["responses"]["Forbidden"];
1641
+ readonly 404: components["responses"]["NotFound"];
1642
+ readonly 429: components["responses"]["RateLimited"];
1643
+ };
1644
+ };
1645
+ readonly deleteOrganizationRole: {
1646
+ readonly parameters: {
1647
+ readonly query?: never;
1648
+ readonly header?: never;
1649
+ readonly path: {
1650
+ readonly organizationId: components["parameters"]["OrganizationId"];
1651
+ readonly roleId: components["parameters"]["RoleId"];
1652
+ };
1653
+ readonly cookie?: never;
1654
+ };
1655
+ readonly requestBody?: never;
1656
+ readonly responses: {
1657
+ /** @description Role deleted */
1658
+ readonly 204: {
1659
+ headers: {
1660
+ readonly [name: string]: unknown;
1661
+ };
1662
+ content?: never;
1663
+ };
1664
+ readonly 401: components["responses"]["Unauthorized"];
1665
+ readonly 403: components["responses"]["Forbidden"];
1666
+ readonly 404: components["responses"]["NotFound"];
1667
+ readonly 429: components["responses"]["RateLimited"];
1668
+ };
1669
+ };
1670
+ readonly updateOrganizationRole: {
1671
+ readonly parameters: {
1672
+ readonly query?: never;
1673
+ readonly header?: never;
1674
+ readonly path: {
1675
+ readonly organizationId: components["parameters"]["OrganizationId"];
1676
+ readonly roleId: components["parameters"]["RoleId"];
1677
+ };
1678
+ readonly cookie?: never;
1679
+ };
1680
+ readonly requestBody: {
1681
+ readonly content: {
1682
+ readonly "application/json": components["schemas"]["RoleInput"];
1683
+ };
1684
+ };
1685
+ readonly responses: {
1686
+ /** @description Updated role */
1687
+ readonly 200: {
1688
+ headers: {
1689
+ readonly [name: string]: unknown;
1690
+ };
1691
+ content: {
1692
+ readonly "application/json": components["schemas"]["OrganizationRole"];
1693
+ };
1694
+ };
1695
+ readonly 400: components["responses"]["InvalidRequest"];
1696
+ readonly 401: components["responses"]["Unauthorized"];
1697
+ readonly 403: components["responses"]["Forbidden"];
1698
+ readonly 404: components["responses"]["NotFound"];
1699
+ readonly 429: components["responses"]["RateLimited"];
1700
+ };
1701
+ };
1702
+ readonly listInvitations: {
1703
+ readonly parameters: {
1704
+ readonly query?: {
1705
+ readonly limit?: components["parameters"]["Limit"];
1706
+ readonly cursor?: components["parameters"]["Cursor"];
1707
+ };
1708
+ readonly header?: never;
1709
+ readonly path?: never;
1710
+ readonly cookie?: never;
1711
+ };
1712
+ readonly requestBody?: never;
1713
+ readonly responses: {
1714
+ readonly 200: components["responses"]["InvitationPage"];
1715
+ readonly 401: components["responses"]["Unauthorized"];
1716
+ readonly 403: components["responses"]["Forbidden"];
1717
+ readonly 429: components["responses"]["RateLimited"];
1718
+ };
1719
+ };
1720
+ readonly createInvitation: {
1721
+ readonly parameters: {
1722
+ readonly query?: never;
1723
+ readonly header?: never;
1724
+ readonly path?: never;
1725
+ readonly cookie?: never;
1726
+ };
1727
+ readonly requestBody: {
1728
+ readonly content: {
1729
+ readonly "application/json": components["schemas"]["CreateInvitation"];
1730
+ };
1731
+ };
1732
+ readonly responses: {
1733
+ /** @description Invitation created */
1734
+ readonly 201: {
1735
+ headers: {
1736
+ readonly [name: string]: unknown;
1737
+ };
1738
+ content: {
1739
+ readonly "application/json": components["schemas"]["Invitation"];
1740
+ };
1741
+ };
1742
+ readonly 400: components["responses"]["InvalidRequest"];
1743
+ readonly 401: components["responses"]["Unauthorized"];
1744
+ readonly 403: components["responses"]["Forbidden"];
1745
+ readonly 404: components["responses"]["NotFound"];
1746
+ readonly 429: components["responses"]["RateLimited"];
1747
+ };
1748
+ };
1749
+ readonly getInvitation: {
1750
+ readonly parameters: {
1751
+ readonly query?: never;
1752
+ readonly header?: never;
1753
+ readonly path: {
1754
+ readonly invitationId: components["parameters"]["InvitationId"];
1755
+ };
1756
+ readonly cookie?: never;
1757
+ };
1758
+ readonly requestBody?: never;
1759
+ readonly responses: {
1760
+ /** @description Invitation */
1761
+ readonly 200: {
1762
+ headers: {
1763
+ readonly [name: string]: unknown;
1764
+ };
1765
+ content: {
1766
+ readonly "application/json": components["schemas"]["Invitation"];
1767
+ };
1768
+ };
1769
+ readonly 401: components["responses"]["Unauthorized"];
1770
+ readonly 403: components["responses"]["Forbidden"];
1771
+ readonly 404: components["responses"]["NotFound"];
1772
+ readonly 429: components["responses"]["RateLimited"];
1773
+ };
1774
+ };
1775
+ readonly revokeInvitation: {
1776
+ readonly parameters: {
1777
+ readonly query?: never;
1778
+ readonly header?: never;
1779
+ readonly path: {
1780
+ readonly invitationId: components["parameters"]["InvitationId"];
1781
+ };
1782
+ readonly cookie?: never;
1783
+ };
1784
+ readonly requestBody?: never;
1785
+ readonly responses: {
1786
+ /** @description Invitation revoked */
1787
+ readonly 204: {
1788
+ headers: {
1789
+ readonly [name: string]: unknown;
1790
+ };
1791
+ content?: never;
1792
+ };
1793
+ readonly 401: components["responses"]["Unauthorized"];
1794
+ readonly 403: components["responses"]["Forbidden"];
1795
+ readonly 404: components["responses"]["NotFound"];
1796
+ readonly 429: components["responses"]["RateLimited"];
1797
+ };
1798
+ };
1799
+ readonly listEvents: {
1800
+ readonly parameters: {
1801
+ readonly query?: {
1802
+ readonly limit?: components["parameters"]["Limit"];
1803
+ readonly cursor?: components["parameters"]["Cursor"];
1804
+ readonly type?: string;
1805
+ readonly user_id?: string;
1806
+ readonly since?: string;
1807
+ };
1808
+ readonly header?: never;
1809
+ readonly path?: never;
1810
+ readonly cookie?: never;
1811
+ };
1812
+ readonly requestBody?: never;
1813
+ readonly responses: {
1814
+ readonly 200: components["responses"]["EventPage"];
1815
+ readonly 400: components["responses"]["InvalidRequest"];
1816
+ readonly 401: components["responses"]["Unauthorized"];
1817
+ readonly 403: components["responses"]["Forbidden"];
1818
+ readonly 429: components["responses"]["RateLimited"];
1819
+ };
1820
+ };
1821
+ readonly getStatsOverview: {
1822
+ readonly parameters: {
1823
+ readonly query?: never;
1824
+ readonly header?: never;
1825
+ readonly path?: never;
1826
+ readonly cookie?: never;
1827
+ };
1828
+ readonly requestBody?: never;
1829
+ readonly responses: {
1830
+ /** @description Project statistics */
1831
+ readonly 200: {
1832
+ headers: {
1833
+ readonly [name: string]: unknown;
1834
+ };
1835
+ content: {
1836
+ readonly "application/json": components["schemas"]["StatsOverview"];
1837
+ };
1838
+ };
1839
+ readonly 401: components["responses"]["Unauthorized"];
1840
+ readonly 403: components["responses"]["Forbidden"];
1841
+ readonly 429: components["responses"]["RateLimited"];
1842
+ };
1843
+ };
1844
+ readonly listWebhookEndpoints: {
1845
+ readonly parameters: {
1846
+ readonly query?: {
1847
+ readonly limit?: components["parameters"]["Limit"];
1848
+ readonly cursor?: components["parameters"]["Cursor"];
1849
+ };
1850
+ readonly header?: never;
1851
+ readonly path?: never;
1852
+ readonly cookie?: never;
1853
+ };
1854
+ readonly requestBody?: never;
1855
+ readonly responses: {
1856
+ readonly 200: components["responses"]["WebhookPage"];
1857
+ readonly 400: components["responses"]["InvalidRequest"];
1858
+ readonly 401: components["responses"]["Unauthorized"];
1859
+ readonly 403: components["responses"]["Forbidden"];
1860
+ readonly 429: components["responses"]["RateLimited"];
1861
+ };
1862
+ };
1863
+ readonly createWebhookEndpoint: {
1864
+ readonly parameters: {
1865
+ readonly query?: never;
1866
+ readonly header?: never;
1867
+ readonly path?: never;
1868
+ readonly cookie?: never;
1869
+ };
1870
+ readonly requestBody: {
1871
+ readonly content: {
1872
+ readonly "application/json": components["schemas"]["WebhookInput"];
1873
+ };
1874
+ };
1875
+ readonly responses: {
1876
+ /** @description Endpoint and one-time signing secret */
1877
+ readonly 201: {
1878
+ headers: {
1879
+ readonly [name: string]: unknown;
1880
+ };
1881
+ content: {
1882
+ readonly "application/json": components["schemas"]["WebhookWithSecret"];
1883
+ };
1884
+ };
1885
+ readonly 400: components["responses"]["InvalidRequest"];
1886
+ readonly 401: components["responses"]["Unauthorized"];
1887
+ readonly 403: components["responses"]["Forbidden"];
1888
+ readonly 429: components["responses"]["RateLimited"];
1889
+ };
1890
+ };
1891
+ readonly getWebhookEndpoint: {
1892
+ readonly parameters: {
1893
+ readonly query?: never;
1894
+ readonly header?: never;
1895
+ readonly path: {
1896
+ readonly webhookId: components["parameters"]["WebhookId"];
1897
+ };
1898
+ readonly cookie?: never;
1899
+ };
1900
+ readonly requestBody?: never;
1901
+ readonly responses: {
1902
+ /** @description Webhook endpoint */
1903
+ readonly 200: {
1904
+ headers: {
1905
+ readonly [name: string]: unknown;
1906
+ };
1907
+ content: {
1908
+ readonly "application/json": components["schemas"]["WebhookEndpoint"];
1909
+ };
1910
+ };
1911
+ readonly 401: components["responses"]["Unauthorized"];
1912
+ readonly 403: components["responses"]["Forbidden"];
1913
+ readonly 404: components["responses"]["NotFound"];
1914
+ readonly 429: components["responses"]["RateLimited"];
1915
+ };
1916
+ };
1917
+ readonly deleteWebhookEndpoint: {
1918
+ readonly parameters: {
1919
+ readonly query?: never;
1920
+ readonly header?: never;
1921
+ readonly path: {
1922
+ readonly webhookId: components["parameters"]["WebhookId"];
1923
+ };
1924
+ readonly cookie?: never;
1925
+ };
1926
+ readonly requestBody?: never;
1927
+ readonly responses: {
1928
+ /** @description Endpoint deleted */
1929
+ readonly 204: {
1930
+ headers: {
1931
+ readonly [name: string]: unknown;
1932
+ };
1933
+ content?: never;
1934
+ };
1935
+ readonly 401: components["responses"]["Unauthorized"];
1936
+ readonly 403: components["responses"]["Forbidden"];
1937
+ readonly 404: components["responses"]["NotFound"];
1938
+ readonly 429: components["responses"]["RateLimited"];
1939
+ };
1940
+ };
1941
+ readonly updateWebhookEndpoint: {
1942
+ readonly parameters: {
1943
+ readonly query?: never;
1944
+ readonly header?: never;
1945
+ readonly path: {
1946
+ readonly webhookId: components["parameters"]["WebhookId"];
1947
+ };
1948
+ readonly cookie?: never;
1949
+ };
1950
+ readonly requestBody: {
1951
+ readonly content: {
1952
+ readonly "application/json": components["schemas"]["WebhookInput"];
1953
+ };
1954
+ };
1955
+ readonly responses: {
1956
+ /** @description Updated endpoint */
1957
+ readonly 200: {
1958
+ headers: {
1959
+ readonly [name: string]: unknown;
1960
+ };
1961
+ content: {
1962
+ readonly "application/json": components["schemas"]["WebhookEndpoint"];
1963
+ };
1964
+ };
1965
+ readonly 400: components["responses"]["InvalidRequest"];
1966
+ readonly 401: components["responses"]["Unauthorized"];
1967
+ readonly 403: components["responses"]["Forbidden"];
1968
+ readonly 404: components["responses"]["NotFound"];
1969
+ readonly 429: components["responses"]["RateLimited"];
1970
+ };
1971
+ };
1972
+ readonly rotateWebhookSecret: {
1973
+ readonly parameters: {
1974
+ readonly query?: never;
1975
+ readonly header?: never;
1976
+ readonly path: {
1977
+ readonly webhookId: components["parameters"]["WebhookId"];
1978
+ };
1979
+ readonly cookie?: never;
1980
+ };
1981
+ readonly requestBody?: never;
1982
+ readonly responses: {
1983
+ /** @description New one-time signing secret and old-secret overlap expiry */
1984
+ readonly 200: {
1985
+ headers: {
1986
+ readonly [name: string]: unknown;
1987
+ };
1988
+ content: {
1989
+ readonly "application/json": components["schemas"]["WebhookSecret"];
1990
+ };
1991
+ };
1992
+ readonly 401: components["responses"]["Unauthorized"];
1993
+ readonly 403: components["responses"]["Forbidden"];
1994
+ readonly 404: components["responses"]["NotFound"];
1995
+ readonly 429: components["responses"]["RateLimited"];
1996
+ };
1997
+ };
1998
+ readonly pauseWebhookEndpoint: {
1999
+ readonly parameters: {
2000
+ readonly query?: never;
2001
+ readonly header?: never;
2002
+ readonly path: {
2003
+ readonly webhookId: components["parameters"]["WebhookId"];
2004
+ };
2005
+ readonly cookie?: never;
2006
+ };
2007
+ readonly requestBody?: never;
2008
+ readonly responses: {
2009
+ /** @description Paused endpoint */
2010
+ readonly 200: {
2011
+ headers: {
2012
+ readonly [name: string]: unknown;
2013
+ };
2014
+ content: {
2015
+ readonly "application/json": components["schemas"]["WebhookEndpoint"];
2016
+ };
2017
+ };
2018
+ readonly 401: components["responses"]["Unauthorized"];
2019
+ readonly 403: components["responses"]["Forbidden"];
2020
+ readonly 404: components["responses"]["NotFound"];
2021
+ readonly 429: components["responses"]["RateLimited"];
2022
+ };
2023
+ };
2024
+ readonly resumeWebhookEndpoint: {
2025
+ readonly parameters: {
2026
+ readonly query?: never;
2027
+ readonly header?: never;
2028
+ readonly path: {
2029
+ readonly webhookId: components["parameters"]["WebhookId"];
2030
+ };
2031
+ readonly cookie?: never;
2032
+ };
2033
+ readonly requestBody?: never;
2034
+ readonly responses: {
2035
+ /** @description Active endpoint */
2036
+ readonly 200: {
2037
+ headers: {
2038
+ readonly [name: string]: unknown;
2039
+ };
2040
+ content: {
2041
+ readonly "application/json": components["schemas"]["WebhookEndpoint"];
2042
+ };
2043
+ };
2044
+ readonly 401: components["responses"]["Unauthorized"];
2045
+ readonly 403: components["responses"]["Forbidden"];
2046
+ readonly 404: components["responses"]["NotFound"];
2047
+ readonly 429: components["responses"]["RateLimited"];
2048
+ };
2049
+ };
2050
+ readonly testWebhookEndpoint: {
2051
+ readonly parameters: {
2052
+ readonly query?: never;
2053
+ readonly header?: never;
2054
+ readonly path: {
2055
+ readonly webhookId: components["parameters"]["WebhookId"];
2056
+ };
2057
+ readonly cookie?: never;
2058
+ };
2059
+ readonly requestBody?: never;
2060
+ readonly responses: {
2061
+ /** @description Test delivery queued */
2062
+ readonly 202: {
2063
+ headers: {
2064
+ readonly [name: string]: unknown;
2065
+ };
2066
+ content: {
2067
+ readonly "application/json": components["schemas"]["WebhookDelivery"];
2068
+ };
2069
+ };
2070
+ readonly 401: components["responses"]["Unauthorized"];
2071
+ readonly 403: components["responses"]["Forbidden"];
2072
+ readonly 404: components["responses"]["NotFound"];
2073
+ readonly 429: components["responses"]["RateLimited"];
2074
+ };
2075
+ };
2076
+ readonly listWebhookDeliveries: {
2077
+ readonly parameters: {
2078
+ readonly query?: {
2079
+ readonly limit?: components["parameters"]["Limit"];
2080
+ readonly cursor?: components["parameters"]["Cursor"];
2081
+ readonly webhook_id?: string;
2082
+ readonly status?: "queued" | "delivering" | "succeeded" | "failed";
2083
+ };
2084
+ readonly header?: never;
2085
+ readonly path?: never;
2086
+ readonly cookie?: never;
2087
+ };
2088
+ readonly requestBody?: never;
2089
+ readonly responses: {
2090
+ readonly 200: components["responses"]["DeliveryPage"];
2091
+ readonly 400: components["responses"]["InvalidRequest"];
2092
+ readonly 401: components["responses"]["Unauthorized"];
2093
+ readonly 403: components["responses"]["Forbidden"];
2094
+ readonly 429: components["responses"]["RateLimited"];
2095
+ };
2096
+ };
2097
+ readonly getWebhookDelivery: {
2098
+ readonly parameters: {
2099
+ readonly query?: never;
2100
+ readonly header?: never;
2101
+ readonly path: {
2102
+ readonly deliveryId: components["parameters"]["DeliveryId"];
2103
+ };
2104
+ readonly cookie?: never;
2105
+ };
2106
+ readonly requestBody?: never;
2107
+ readonly responses: {
2108
+ /** @description Delivery attempt */
2109
+ readonly 200: {
2110
+ headers: {
2111
+ readonly [name: string]: unknown;
2112
+ };
2113
+ content: {
2114
+ readonly "application/json": components["schemas"]["WebhookDelivery"];
2115
+ };
2116
+ };
2117
+ readonly 401: components["responses"]["Unauthorized"];
2118
+ readonly 403: components["responses"]["Forbidden"];
2119
+ readonly 404: components["responses"]["NotFound"];
2120
+ readonly 429: components["responses"]["RateLimited"];
2121
+ };
2122
+ };
2123
+ readonly replayWebhookDelivery: {
2124
+ readonly parameters: {
2125
+ readonly query?: never;
2126
+ readonly header?: never;
2127
+ readonly path: {
2128
+ readonly deliveryId: components["parameters"]["DeliveryId"];
2129
+ };
2130
+ readonly cookie?: never;
2131
+ };
2132
+ readonly requestBody?: never;
2133
+ readonly responses: {
2134
+ /** @description Replay queued */
2135
+ readonly 202: {
2136
+ headers: {
2137
+ readonly [name: string]: unknown;
2138
+ };
2139
+ content: {
2140
+ readonly "application/json": components["schemas"]["WebhookDelivery"];
2141
+ };
2142
+ };
2143
+ readonly 400: components["responses"]["InvalidRequest"];
2144
+ readonly 401: components["responses"]["Unauthorized"];
2145
+ readonly 403: components["responses"]["Forbidden"];
2146
+ readonly 404: components["responses"]["NotFound"];
2147
+ readonly 429: components["responses"]["RateLimited"];
2148
+ };
2149
+ };
2150
+ }
2151
+
2152
+ /**
2153
+ * Generated from packages/auth-core/openapi/v1.json.
2154
+ * Do not edit directly. Run `pnpm admin:generate`.
2155
+ */
2156
+ declare const ADMIN_API_SPEC_SHA256 = "dc1953d9d9b9e1f7002fa045f12788280e5865bacfda94b1d133e9580aa87d62";
2157
+ declare const adminOperations: {
2158
+ readonly getOpenApiDocument: {
2159
+ readonly method: "GET";
2160
+ readonly path: "/openapi.json";
2161
+ readonly successStatuses: readonly [200];
2162
+ readonly responseSchemas: {
2163
+ readonly "200": {
2164
+ readonly type: "object";
2165
+ };
2166
+ };
2167
+ };
2168
+ readonly listUsers: {
2169
+ readonly method: "GET";
2170
+ readonly path: "/users";
2171
+ readonly successStatuses: readonly [200];
2172
+ readonly responseSchemas: {
2173
+ readonly "200": {
2174
+ readonly $ref: "#/components/schemas/UserPage";
2175
+ };
2176
+ };
2177
+ };
2178
+ readonly createUser: {
2179
+ readonly method: "POST";
2180
+ readonly path: "/users";
2181
+ readonly successStatuses: readonly [201];
2182
+ readonly responseSchemas: {
2183
+ readonly "201": {
2184
+ readonly $ref: "#/components/schemas/User";
2185
+ };
2186
+ };
2187
+ };
2188
+ readonly startUserExport: {
2189
+ readonly method: "POST";
2190
+ readonly path: "/users/export";
2191
+ readonly successStatuses: readonly [202];
2192
+ readonly responseSchemas: {
2193
+ readonly "202": {
2194
+ readonly $ref: "#/components/schemas/ExportJob";
2195
+ };
2196
+ };
2197
+ };
2198
+ readonly getUser: {
2199
+ readonly method: "GET";
2200
+ readonly path: "/users/{userId}";
2201
+ readonly successStatuses: readonly [200];
2202
+ readonly responseSchemas: {
2203
+ readonly "200": {
2204
+ readonly $ref: "#/components/schemas/User";
2205
+ };
2206
+ };
2207
+ };
2208
+ readonly updateUser: {
2209
+ readonly method: "PATCH";
2210
+ readonly path: "/users/{userId}";
2211
+ readonly successStatuses: readonly [200];
2212
+ readonly responseSchemas: {
2213
+ readonly "200": {
2214
+ readonly $ref: "#/components/schemas/User";
2215
+ };
2216
+ };
2217
+ };
2218
+ readonly deleteUser: {
2219
+ readonly method: "DELETE";
2220
+ readonly path: "/users/{userId}";
2221
+ readonly successStatuses: readonly [204];
2222
+ readonly responseSchemas: {
2223
+ readonly "204": null;
2224
+ };
2225
+ };
2226
+ readonly listUserSessions: {
2227
+ readonly method: "GET";
2228
+ readonly path: "/users/{userId}/sessions";
2229
+ readonly successStatuses: readonly [200];
2230
+ readonly responseSchemas: {
2231
+ readonly "200": {
2232
+ readonly $ref: "#/components/schemas/SessionPage";
2233
+ };
2234
+ };
2235
+ };
2236
+ readonly revokeUserSessions: {
2237
+ readonly method: "DELETE";
2238
+ readonly path: "/users/{userId}/sessions";
2239
+ readonly successStatuses: readonly [204];
2240
+ readonly responseSchemas: {
2241
+ readonly "204": null;
2242
+ };
2243
+ };
2244
+ readonly updateUserMetadata: {
2245
+ readonly method: "PATCH";
2246
+ readonly path: "/users/{userId}/metadata";
2247
+ readonly successStatuses: readonly [200];
2248
+ readonly responseSchemas: {
2249
+ readonly "200": {
2250
+ readonly $ref: "#/components/schemas/UserMetadata";
2251
+ };
2252
+ };
2253
+ };
2254
+ readonly verifySession: {
2255
+ readonly method: "POST";
2256
+ readonly path: "/sessions/verify";
2257
+ readonly successStatuses: readonly [200];
2258
+ readonly responseSchemas: {
2259
+ readonly "200": {
2260
+ readonly type: "object";
2261
+ readonly required: readonly ["user", "session"];
2262
+ readonly properties: {
2263
+ readonly user: {
2264
+ readonly $ref: "#/components/schemas/User";
2265
+ };
2266
+ readonly session: {
2267
+ readonly $ref: "#/components/schemas/Session";
2268
+ };
2269
+ };
2270
+ };
2271
+ };
2272
+ };
2273
+ readonly getSession: {
2274
+ readonly method: "GET";
2275
+ readonly path: "/sessions/{sessionId}";
2276
+ readonly successStatuses: readonly [200];
2277
+ readonly responseSchemas: {
2278
+ readonly "200": {
2279
+ readonly $ref: "#/components/schemas/Session";
2280
+ };
2281
+ };
2282
+ };
2283
+ readonly updateSessionMetadata: {
2284
+ readonly method: "PATCH";
2285
+ readonly path: "/sessions/{sessionId}";
2286
+ readonly successStatuses: readonly [200];
2287
+ readonly responseSchemas: {
2288
+ readonly "200": {
2289
+ readonly $ref: "#/components/schemas/SessionMetadata";
2290
+ };
2291
+ };
2292
+ };
2293
+ readonly revokeSession: {
2294
+ readonly method: "DELETE";
2295
+ readonly path: "/sessions/{sessionId}";
2296
+ readonly successStatuses: readonly [204];
2297
+ readonly responseSchemas: {
2298
+ readonly "204": null;
2299
+ };
2300
+ };
2301
+ readonly listOrganizations: {
2302
+ readonly method: "GET";
2303
+ readonly path: "/organizations";
2304
+ readonly successStatuses: readonly [200];
2305
+ readonly responseSchemas: {
2306
+ readonly "200": {
2307
+ readonly $ref: "#/components/schemas/OrganizationPage";
2308
+ };
2309
+ };
2310
+ };
2311
+ readonly createOrganization: {
2312
+ readonly method: "POST";
2313
+ readonly path: "/organizations";
2314
+ readonly successStatuses: readonly [201];
2315
+ readonly responseSchemas: {
2316
+ readonly "201": {
2317
+ readonly $ref: "#/components/schemas/Organization";
2318
+ };
2319
+ };
2320
+ };
2321
+ readonly getOrganization: {
2322
+ readonly method: "GET";
2323
+ readonly path: "/organizations/{organizationId}";
2324
+ readonly successStatuses: readonly [200];
2325
+ readonly responseSchemas: {
2326
+ readonly "200": {
2327
+ readonly $ref: "#/components/schemas/Organization";
2328
+ };
2329
+ };
2330
+ };
2331
+ readonly updateOrganization: {
2332
+ readonly method: "PATCH";
2333
+ readonly path: "/organizations/{organizationId}";
2334
+ readonly successStatuses: readonly [200];
2335
+ readonly responseSchemas: {
2336
+ readonly "200": {
2337
+ readonly $ref: "#/components/schemas/Organization";
2338
+ };
2339
+ };
2340
+ };
2341
+ readonly deleteOrganization: {
2342
+ readonly method: "DELETE";
2343
+ readonly path: "/organizations/{organizationId}";
2344
+ readonly successStatuses: readonly [204];
2345
+ readonly responseSchemas: {
2346
+ readonly "204": null;
2347
+ };
2348
+ };
2349
+ readonly listOrganizationMembers: {
2350
+ readonly method: "GET";
2351
+ readonly path: "/organizations/{organizationId}/members";
2352
+ readonly successStatuses: readonly [200];
2353
+ readonly responseSchemas: {
2354
+ readonly "200": {
2355
+ readonly $ref: "#/components/schemas/MemberPage";
2356
+ };
2357
+ };
2358
+ };
2359
+ readonly addOrganizationMember: {
2360
+ readonly method: "POST";
2361
+ readonly path: "/organizations/{organizationId}/members";
2362
+ readonly successStatuses: readonly [201];
2363
+ readonly responseSchemas: {
2364
+ readonly "201": {
2365
+ readonly $ref: "#/components/schemas/OrganizationMember";
2366
+ };
2367
+ };
2368
+ };
2369
+ readonly updateOrganizationMember: {
2370
+ readonly method: "PATCH";
2371
+ readonly path: "/organizations/{organizationId}/members/{userId}";
2372
+ readonly successStatuses: readonly [200];
2373
+ readonly responseSchemas: {
2374
+ readonly "200": {
2375
+ readonly $ref: "#/components/schemas/OrganizationMember";
2376
+ };
2377
+ };
2378
+ };
2379
+ readonly removeOrganizationMember: {
2380
+ readonly method: "DELETE";
2381
+ readonly path: "/organizations/{organizationId}/members/{userId}";
2382
+ readonly successStatuses: readonly [204];
2383
+ readonly responseSchemas: {
2384
+ readonly "204": null;
2385
+ };
2386
+ };
2387
+ readonly listOrganizationRoles: {
2388
+ readonly method: "GET";
2389
+ readonly path: "/organizations/{organizationId}/roles";
2390
+ readonly successStatuses: readonly [200];
2391
+ readonly responseSchemas: {
2392
+ readonly "200": {
2393
+ readonly $ref: "#/components/schemas/RolePage";
2394
+ };
2395
+ };
2396
+ };
2397
+ readonly createOrganizationRole: {
2398
+ readonly method: "POST";
2399
+ readonly path: "/organizations/{organizationId}/roles";
2400
+ readonly successStatuses: readonly [201];
2401
+ readonly responseSchemas: {
2402
+ readonly "201": {
2403
+ readonly $ref: "#/components/schemas/OrganizationRole";
2404
+ };
2405
+ };
2406
+ };
2407
+ readonly updateOrganizationRole: {
2408
+ readonly method: "PATCH";
2409
+ readonly path: "/organizations/{organizationId}/roles/{roleId}";
2410
+ readonly successStatuses: readonly [200];
2411
+ readonly responseSchemas: {
2412
+ readonly "200": {
2413
+ readonly $ref: "#/components/schemas/OrganizationRole";
2414
+ };
2415
+ };
2416
+ };
2417
+ readonly deleteOrganizationRole: {
2418
+ readonly method: "DELETE";
2419
+ readonly path: "/organizations/{organizationId}/roles/{roleId}";
2420
+ readonly successStatuses: readonly [204];
2421
+ readonly responseSchemas: {
2422
+ readonly "204": null;
2423
+ };
2424
+ };
2425
+ readonly listInvitations: {
2426
+ readonly method: "GET";
2427
+ readonly path: "/invitations";
2428
+ readonly successStatuses: readonly [200];
2429
+ readonly responseSchemas: {
2430
+ readonly "200": {
2431
+ readonly $ref: "#/components/schemas/InvitationPage";
2432
+ };
2433
+ };
2434
+ };
2435
+ readonly createInvitation: {
2436
+ readonly method: "POST";
2437
+ readonly path: "/invitations";
2438
+ readonly successStatuses: readonly [201];
2439
+ readonly responseSchemas: {
2440
+ readonly "201": {
2441
+ readonly $ref: "#/components/schemas/Invitation";
2442
+ };
2443
+ };
2444
+ };
2445
+ readonly getInvitation: {
2446
+ readonly method: "GET";
2447
+ readonly path: "/invitations/{invitationId}";
2448
+ readonly successStatuses: readonly [200];
2449
+ readonly responseSchemas: {
2450
+ readonly "200": {
2451
+ readonly $ref: "#/components/schemas/Invitation";
2452
+ };
2453
+ };
2454
+ };
2455
+ readonly revokeInvitation: {
2456
+ readonly method: "DELETE";
2457
+ readonly path: "/invitations/{invitationId}";
2458
+ readonly successStatuses: readonly [204];
2459
+ readonly responseSchemas: {
2460
+ readonly "204": null;
2461
+ };
2462
+ };
2463
+ readonly listEvents: {
2464
+ readonly method: "GET";
2465
+ readonly path: "/events";
2466
+ readonly successStatuses: readonly [200];
2467
+ readonly responseSchemas: {
2468
+ readonly "200": {
2469
+ readonly $ref: "#/components/schemas/EventPage";
2470
+ };
2471
+ };
2472
+ };
2473
+ readonly getStatsOverview: {
2474
+ readonly method: "GET";
2475
+ readonly path: "/stats/overview";
2476
+ readonly successStatuses: readonly [200];
2477
+ readonly responseSchemas: {
2478
+ readonly "200": {
2479
+ readonly $ref: "#/components/schemas/StatsOverview";
2480
+ };
2481
+ };
2482
+ };
2483
+ readonly listWebhookEndpoints: {
2484
+ readonly method: "GET";
2485
+ readonly path: "/webhooks";
2486
+ readonly successStatuses: readonly [200];
2487
+ readonly responseSchemas: {
2488
+ readonly "200": {
2489
+ readonly $ref: "#/components/schemas/WebhookPage";
2490
+ };
2491
+ };
2492
+ };
2493
+ readonly createWebhookEndpoint: {
2494
+ readonly method: "POST";
2495
+ readonly path: "/webhooks";
2496
+ readonly successStatuses: readonly [201];
2497
+ readonly responseSchemas: {
2498
+ readonly "201": {
2499
+ readonly $ref: "#/components/schemas/WebhookWithSecret";
2500
+ };
2501
+ };
2502
+ };
2503
+ readonly getWebhookEndpoint: {
2504
+ readonly method: "GET";
2505
+ readonly path: "/webhooks/{webhookId}";
2506
+ readonly successStatuses: readonly [200];
2507
+ readonly responseSchemas: {
2508
+ readonly "200": {
2509
+ readonly $ref: "#/components/schemas/WebhookEndpoint";
2510
+ };
2511
+ };
2512
+ };
2513
+ readonly updateWebhookEndpoint: {
2514
+ readonly method: "PATCH";
2515
+ readonly path: "/webhooks/{webhookId}";
2516
+ readonly successStatuses: readonly [200];
2517
+ readonly responseSchemas: {
2518
+ readonly "200": {
2519
+ readonly $ref: "#/components/schemas/WebhookEndpoint";
2520
+ };
2521
+ };
2522
+ };
2523
+ readonly deleteWebhookEndpoint: {
2524
+ readonly method: "DELETE";
2525
+ readonly path: "/webhooks/{webhookId}";
2526
+ readonly successStatuses: readonly [204];
2527
+ readonly responseSchemas: {
2528
+ readonly "204": null;
2529
+ };
2530
+ };
2531
+ readonly rotateWebhookSecret: {
2532
+ readonly method: "POST";
2533
+ readonly path: "/webhooks/{webhookId}/rotate-secret";
2534
+ readonly successStatuses: readonly [200];
2535
+ readonly responseSchemas: {
2536
+ readonly "200": {
2537
+ readonly $ref: "#/components/schemas/WebhookSecret";
2538
+ };
2539
+ };
2540
+ };
2541
+ readonly pauseWebhookEndpoint: {
2542
+ readonly method: "POST";
2543
+ readonly path: "/webhooks/{webhookId}/pause";
2544
+ readonly successStatuses: readonly [200];
2545
+ readonly responseSchemas: {
2546
+ readonly "200": {
2547
+ readonly $ref: "#/components/schemas/WebhookEndpoint";
2548
+ };
2549
+ };
2550
+ };
2551
+ readonly resumeWebhookEndpoint: {
2552
+ readonly method: "POST";
2553
+ readonly path: "/webhooks/{webhookId}/resume";
2554
+ readonly successStatuses: readonly [200];
2555
+ readonly responseSchemas: {
2556
+ readonly "200": {
2557
+ readonly $ref: "#/components/schemas/WebhookEndpoint";
2558
+ };
2559
+ };
2560
+ };
2561
+ readonly testWebhookEndpoint: {
2562
+ readonly method: "POST";
2563
+ readonly path: "/webhooks/{webhookId}/test";
2564
+ readonly successStatuses: readonly [202];
2565
+ readonly responseSchemas: {
2566
+ readonly "202": {
2567
+ readonly $ref: "#/components/schemas/WebhookDelivery";
2568
+ };
2569
+ };
2570
+ };
2571
+ readonly listWebhookDeliveries: {
2572
+ readonly method: "GET";
2573
+ readonly path: "/webhook-deliveries";
2574
+ readonly successStatuses: readonly [200];
2575
+ readonly responseSchemas: {
2576
+ readonly "200": {
2577
+ readonly $ref: "#/components/schemas/DeliveryPage";
2578
+ };
2579
+ };
2580
+ };
2581
+ readonly getWebhookDelivery: {
2582
+ readonly method: "GET";
2583
+ readonly path: "/webhook-deliveries/{deliveryId}";
2584
+ readonly successStatuses: readonly [200];
2585
+ readonly responseSchemas: {
2586
+ readonly "200": {
2587
+ readonly $ref: "#/components/schemas/WebhookDelivery";
2588
+ };
2589
+ };
2590
+ };
2591
+ readonly replayWebhookDelivery: {
2592
+ readonly method: "POST";
2593
+ readonly path: "/webhook-deliveries/{deliveryId}/replay";
2594
+ readonly successStatuses: readonly [202];
2595
+ readonly responseSchemas: {
2596
+ readonly "202": {
2597
+ readonly $ref: "#/components/schemas/WebhookDelivery";
2598
+ };
2599
+ };
2600
+ };
2601
+ };
2602
+ type AdminOperationId = keyof typeof adminOperations;
2603
+
2604
+ type Operation = operations[AdminOperationId];
2605
+ type ParameterKind = 'query' | 'path';
2606
+ type ParameterInput<O extends Operation, K extends ParameterKind> = O extends {
2607
+ parameters: infer P;
2608
+ } ? K extends keyof P ? [NonNullable<P[K]>] extends [never] ? object : undefined extends P[K] ? {
2609
+ [Field in K]?: NonNullable<P[K]>;
2610
+ } : {
2611
+ [Field in K]: P[K];
2612
+ } : object : object;
2613
+ type BodyInput<O extends Operation> = O extends {
2614
+ requestBody: infer B;
2615
+ } ? B extends {
2616
+ content: {
2617
+ 'application/json': infer Body;
2618
+ };
2619
+ } ? {
2620
+ body: Body;
2621
+ } : object : O extends {
2622
+ requestBody?: infer B;
2623
+ } ? B extends {
2624
+ content: {
2625
+ 'application/json': infer Body;
2626
+ };
2627
+ } ? {
2628
+ body?: Body;
2629
+ } : object : object;
2630
+ type SuccessStatus = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;
2631
+ type SuccessResponse<O extends Operation> = O extends {
2632
+ responses: infer Responses;
2633
+ } ? {
2634
+ [Status in keyof Responses]: Status extends SuccessStatus ? Responses[Status] : never;
2635
+ }[keyof Responses] : never;
2636
+ type ResponseBody<Response> = Response extends {
2637
+ content: infer Content;
2638
+ } ? Content extends {
2639
+ 'application/json': infer Body;
2640
+ } ? Body : void : void;
2641
+ type Simplify<T> = {
2642
+ [K in keyof T]: T[K];
2643
+ } & object;
2644
+ type AdminOperationInput<Id extends AdminOperationId> = Simplify<ParameterInput<operations[Id], 'path'> & ParameterInput<operations[Id], 'query'> & BodyInput<operations[Id]> & {
2645
+ signal?: AbortSignal;
2646
+ }>;
2647
+ type AdminOperationResult<Id extends AdminOperationId> = ResponseBody<SuccessResponse<operations[Id]>>;
2648
+ type AdminMethod<Id extends AdminOperationId> = object extends AdminOperationInput<Id> ? (input?: AdminOperationInput<Id>) => Promise<AdminOperationResult<Id>> : (input: AdminOperationInput<Id>) => Promise<AdminOperationResult<Id>>;
2649
+ type AdminClient = {
2650
+ readonly [Id in AdminOperationId]: AdminMethod<Id>;
2651
+ } & {
2652
+ readonly request: <Id extends AdminOperationId>(operationId: Id, ...args: object extends AdminOperationInput<Id> ? [input?: AdminOperationInput<Id>] : [input: AdminOperationInput<Id>]) => Promise<AdminOperationResult<Id>>;
2653
+ };
2654
+ type AdminClientConfig = {
2655
+ /** AuthOwl server-side secret key. Never expose this value to browser code. */
2656
+ secretKey: string;
2657
+ /** AuthOwl deployment origin, with an optional trailing `/api/v1`. */
2658
+ apiUrl: string;
2659
+ /** Custom fetch implementation for server runtimes and tests. */
2660
+ fetch?: typeof fetch;
2661
+ };
2662
+ type AdminApiProblem = components['schemas']['Problem'];
2663
+ declare class AuthOwlAdminApiError extends Error {
2664
+ readonly status: number;
2665
+ readonly code: string;
2666
+ readonly requestId?: string;
2667
+ readonly problem: AdminApiProblem;
2668
+ readonly retryAfter?: string;
2669
+ constructor(input: {
2670
+ status: number;
2671
+ code: string;
2672
+ requestId?: string;
2673
+ problem: AdminApiProblem;
2674
+ retryAfter?: string;
2675
+ });
2676
+ }
2677
+ declare class AuthOwlAdminNetworkError extends Error {
2678
+ readonly kind: TransportErrorKind;
2679
+ readonly requestId?: string;
2680
+ constructor(kind: TransportErrorKind, requestId?: string);
2681
+ }
2682
+ declare function createAdminClient(input: AdminClientConfig): AdminClient;
2683
+
2684
+ type VerifyWebhookInput = {
2685
+ /** Exact request bytes. Do not parse and reserialize JSON before verification. */
2686
+ rawBody: string | ArrayBuffer | ArrayBufferView;
2687
+ timestamp: string;
2688
+ signatureHeader: string;
2689
+ /** Current and, during rotation overlap, previous endpoint secret. */
2690
+ secrets: readonly string[];
2691
+ /** Unix seconds, injectable for deterministic tests. */
2692
+ now?: number;
2693
+ /** Accepted timestamp skew. Defaults to 300 seconds and is capped at one hour. */
2694
+ toleranceSeconds?: number;
2695
+ };
2696
+ /**
2697
+ * Verify an AuthOwl webhook HMAC before parsing or acting on its body.
2698
+ *
2699
+ * Malformed untrusted headers fail closed with `false`. Invalid local
2700
+ * configuration throws so a broken endpoint cannot silently reject deliveries.
2701
+ */
2702
+ declare function verifyWebhook(input: VerifyWebhookInput): Promise<boolean>;
2703
+
2704
+ /** Server-only AuthOwl configuration, cookies, and generated Admin API client. */
2705
+
2706
+ /**
2707
+ * How to reach the project's JWKS + what issuer/audience to expect. Either pass
2708
+ * `publishableKey` + `apiUrl` (the SDK derives the rest, matching the app's
2709
+ * issuer/JWKS layout), or the raw `issuer`/`jwksUri`/`audience` for a fully
2710
+ * custom deployment. Falls back to `AUTHOWL_PUBLISHABLE_KEY` / `AUTHOWL_API_URL`
2711
+ * from the environment (zero-config), like the rest of the server helpers.
2712
+ */
2713
+ type VerifyTokenConfigCommon = {
2714
+ clockToleranceSeconds?: number;
2715
+ };
2716
+ type VerifyTokenConfig = (VerifyTokenConfigCommon & {
2717
+ publishableKey: string;
2718
+ apiUrl: string;
2719
+ issuer?: never;
2720
+ jwksUri?: never;
2721
+ audience?: never;
2722
+ }) | (VerifyTokenConfigCommon & {
2723
+ publishableKey?: never;
2724
+ apiUrl?: never;
2725
+ issuer: string;
2726
+ jwksUri: string;
2727
+ audience: string;
2728
+ }) | (VerifyTokenConfigCommon & {
2729
+ publishableKey?: never;
2730
+ apiUrl?: never;
2731
+ issuer?: never;
2732
+ jwksUri?: never;
2733
+ audience?: never;
2734
+ });
2735
+ /**
2736
+ * Verify an AuthOwl project JWT and return its subject, membership, and claims.
2737
+ * Throws {@link TokenVerificationError} on any failure. Use this when you need
2738
+ * the decoded identity; use {@link has}/{@link hasPermission} for a boolean gate.
2739
+ */
2740
+ declare function verifyToken(token: string, config?: VerifyTokenConfig): Promise<VerifiedProjectToken>;
2741
+ /**
2742
+ * The REAL server-side authorization primitive (plan §5): verify the project
2743
+ * JWT, then evaluate Clerk-style `has({ role?, permission?, teamId? })` against
2744
+ * the token's membership claim. Fails CLOSED - an invalid, tampered, expired, or
2745
+ * wrong-audience token returns `false`, never granting access off an unverified
2746
+ * claim. Handles both `org:sys_*` and custom `org:<feature>:<action>` ids.
2747
+ *
2748
+ * `teamId` checks GROUP membership, not authority: teams grant nothing on their
2749
+ * own. A token minted before teams shipped proves no team and so denies.
2750
+ */
2751
+ declare function has(token: string, params: HasParams, config?: VerifyTokenConfig): Promise<boolean>;
2752
+ /** Verified-token `hasPermission()`: true only when the token grants `permission`. Fails closed. */
2753
+ declare function hasPermission(token: string, params: {
2754
+ permission: string;
2755
+ }, config?: VerifyTokenConfig): Promise<boolean>;
2756
+
2757
+ export { ADMIN_API_SPEC_SHA256, type components as AdminApiComponents, type operations as AdminApiOperations, type paths as AdminApiPaths, type AdminApiProblem, type AdminClient, type AdminClientConfig, type AdminOperationId, type AdminOperationInput, type AdminOperationResult, AuthOwlAdminApiError, AuthOwlAdminNetworkError, HasParams, OrganizationMembership, TokenVerificationError, type TokenVerificationErrorCode, type VerifiedProjectToken, type VerifyTokenConfig, type VerifyWebhookInput, createAdminClient, has, hasPermission, verifyProjectToken, verifyToken, verifyWebhook };