@productcraft/platform-auth 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1849 @@
1
+ import { makeClient, PCClientConfig } from '@productcraft/core';
2
+
3
+ /**
4
+ * This file was auto-generated by openapi-typescript.
5
+ * Do not make direct changes to the file.
6
+ */
7
+
8
+ interface paths {
9
+ "/.well-known/jwks.json": {
10
+ parameters: {
11
+ query?: never;
12
+ header?: never;
13
+ path?: never;
14
+ cookie?: never;
15
+ };
16
+ get: operations["JwksController_jwks"];
17
+ put?: never;
18
+ post?: never;
19
+ delete?: never;
20
+ options?: never;
21
+ head?: never;
22
+ patch?: never;
23
+ trace?: never;
24
+ };
25
+ "/v1/account": {
26
+ parameters: {
27
+ query?: never;
28
+ header?: never;
29
+ path?: never;
30
+ cookie?: never;
31
+ };
32
+ get?: never;
33
+ put?: never;
34
+ post?: never;
35
+ delete: operations["AccountController_deleteAccount"];
36
+ options?: never;
37
+ head?: never;
38
+ patch?: never;
39
+ trace?: never;
40
+ };
41
+ "/v1/auth/logout": {
42
+ parameters: {
43
+ query?: never;
44
+ header?: never;
45
+ path?: never;
46
+ cookie?: never;
47
+ };
48
+ get?: never;
49
+ put?: never;
50
+ /** Logout by revoking refresh token */
51
+ post: operations["AuthenticationController_logout"];
52
+ delete?: never;
53
+ options?: never;
54
+ head?: never;
55
+ patch?: never;
56
+ trace?: never;
57
+ };
58
+ "/v1/auth/logout-current": {
59
+ parameters: {
60
+ query?: never;
61
+ header?: never;
62
+ path?: never;
63
+ cookie?: never;
64
+ };
65
+ get?: never;
66
+ put?: never;
67
+ /** Revoke the server-side session tied to the caller’s current access token */
68
+ post: operations["AuthenticationController_logoutCurrent"];
69
+ delete?: never;
70
+ options?: never;
71
+ head?: never;
72
+ patch?: never;
73
+ trace?: never;
74
+ };
75
+ "/v1/auth/password/request-reset": {
76
+ parameters: {
77
+ query?: never;
78
+ header?: never;
79
+ path?: never;
80
+ cookie?: never;
81
+ };
82
+ get?: never;
83
+ put?: never;
84
+ post: operations["PasswordController_requestPasswordReset"];
85
+ delete?: never;
86
+ options?: never;
87
+ head?: never;
88
+ patch?: never;
89
+ trace?: never;
90
+ };
91
+ "/v1/auth/password/reset": {
92
+ parameters: {
93
+ query?: never;
94
+ header?: never;
95
+ path?: never;
96
+ cookie?: never;
97
+ };
98
+ get?: never;
99
+ put?: never;
100
+ post: operations["PasswordController_resetPassword"];
101
+ delete?: never;
102
+ options?: never;
103
+ head?: never;
104
+ patch?: never;
105
+ trace?: never;
106
+ };
107
+ "/v1/auth/refresh": {
108
+ parameters: {
109
+ query?: never;
110
+ header?: never;
111
+ path?: never;
112
+ cookie?: never;
113
+ };
114
+ get?: never;
115
+ put?: never;
116
+ /** Refresh access token using refresh token */
117
+ post: operations["AuthenticationController_refresh"];
118
+ delete?: never;
119
+ options?: never;
120
+ head?: never;
121
+ patch?: never;
122
+ trace?: never;
123
+ };
124
+ "/v1/auth/signin": {
125
+ parameters: {
126
+ query?: never;
127
+ header?: never;
128
+ path?: never;
129
+ cookie?: never;
130
+ };
131
+ get?: never;
132
+ put?: never;
133
+ /** Sign in with email/username and password */
134
+ post: operations["AuthenticationController_signin"];
135
+ delete?: never;
136
+ options?: never;
137
+ head?: never;
138
+ patch?: never;
139
+ trace?: never;
140
+ };
141
+ "/v1/auth/signup": {
142
+ parameters: {
143
+ query?: never;
144
+ header?: never;
145
+ path?: never;
146
+ cookie?: never;
147
+ };
148
+ get?: never;
149
+ put?: never;
150
+ /** Create a new account and sign in */
151
+ post: operations["AuthenticationController_signup"];
152
+ delete?: never;
153
+ options?: never;
154
+ head?: never;
155
+ patch?: never;
156
+ trace?: never;
157
+ };
158
+ "/v1/introspect": {
159
+ parameters: {
160
+ query?: never;
161
+ header?: never;
162
+ path?: never;
163
+ cookie?: never;
164
+ };
165
+ /** Introspect current user with workspace list */
166
+ get: operations["IntrospectController_introspect"];
167
+ put?: never;
168
+ post?: never;
169
+ delete?: never;
170
+ options?: never;
171
+ head?: never;
172
+ patch?: never;
173
+ trace?: never;
174
+ };
175
+ "/v1/introspect/api-key": {
176
+ parameters: {
177
+ query?: never;
178
+ header?: never;
179
+ path?: never;
180
+ cookie?: never;
181
+ };
182
+ get?: never;
183
+ put?: never;
184
+ /** Resolve a Platform API Key (PAK) to its workspace + IAM-style policy. Downstream services use this with a 60s LRU cache and evaluate the policy via @repo/authz-nestjs evaluatePolicy(). */
185
+ post: operations["IntrospectController_introspectApiKey"];
186
+ delete?: never;
187
+ options?: never;
188
+ head?: never;
189
+ patch?: never;
190
+ trace?: never;
191
+ };
192
+ "/v1/introspect/workspaces/{workspaceId}": {
193
+ parameters: {
194
+ query?: never;
195
+ header?: never;
196
+ path?: never;
197
+ cookie?: never;
198
+ };
199
+ /** Introspect caller's membership + effective policy + enabled services in a workspace */
200
+ get: operations["IntrospectController_introspectWorkspace"];
201
+ put?: never;
202
+ post?: never;
203
+ delete?: never;
204
+ options?: never;
205
+ head?: never;
206
+ patch?: never;
207
+ trace?: never;
208
+ };
209
+ "/v1/session": {
210
+ parameters: {
211
+ query?: never;
212
+ header?: never;
213
+ path?: never;
214
+ cookie?: never;
215
+ };
216
+ /** List active sessions */
217
+ get: operations["SessionController_getSessions"];
218
+ put?: never;
219
+ post?: never;
220
+ delete?: never;
221
+ options?: never;
222
+ head?: never;
223
+ patch?: never;
224
+ trace?: never;
225
+ };
226
+ "/v1/verification/resend": {
227
+ parameters: {
228
+ query?: never;
229
+ header?: never;
230
+ path?: never;
231
+ cookie?: never;
232
+ };
233
+ get?: never;
234
+ put?: never;
235
+ /** Resend verification email */
236
+ post: operations["VerificationController_resend"];
237
+ delete?: never;
238
+ options?: never;
239
+ head?: never;
240
+ patch?: never;
241
+ trace?: never;
242
+ };
243
+ "/v1/verification/verify": {
244
+ parameters: {
245
+ query?: never;
246
+ header?: never;
247
+ path?: never;
248
+ cookie?: never;
249
+ };
250
+ get?: never;
251
+ put?: never;
252
+ /** Verify an email code */
253
+ post: operations["VerificationController_verify"];
254
+ delete?: never;
255
+ options?: never;
256
+ head?: never;
257
+ patch?: never;
258
+ trace?: never;
259
+ };
260
+ "/v1/workspaces": {
261
+ parameters: {
262
+ query?: never;
263
+ header?: never;
264
+ path?: never;
265
+ cookie?: never;
266
+ };
267
+ /** List workspaces the current user belongs to */
268
+ get: operations["WorkspaceController_listWorkspaces"];
269
+ put?: never;
270
+ /** Create a new workspace */
271
+ post: operations["WorkspaceController_createWorkspace"];
272
+ delete?: never;
273
+ options?: never;
274
+ head?: never;
275
+ patch?: never;
276
+ trace?: never;
277
+ };
278
+ "/v1/workspaces/invites/accept": {
279
+ parameters: {
280
+ query?: never;
281
+ header?: never;
282
+ path?: never;
283
+ cookie?: never;
284
+ };
285
+ get?: never;
286
+ put?: never;
287
+ /** Accept a workspace invite by code */
288
+ post: operations["WorkspaceController_acceptInvite"];
289
+ delete?: never;
290
+ options?: never;
291
+ head?: never;
292
+ patch?: never;
293
+ trace?: never;
294
+ };
295
+ "/v1/workspaces/{workspaceSlug}": {
296
+ parameters: {
297
+ query?: never;
298
+ header?: never;
299
+ path?: never;
300
+ cookie?: never;
301
+ };
302
+ /** Get workspace details */
303
+ get: operations["WorkspaceController_getWorkspace"];
304
+ put?: never;
305
+ post?: never;
306
+ /** Delete a workspace (requires workspace.delete) */
307
+ delete: operations["WorkspaceController_deleteWorkspace"];
308
+ options?: never;
309
+ head?: never;
310
+ /** Update workspace display name, slug, or settings. Slug renames broadcast a `workspace.renamed` event so denormalised consumers (rally-api) sync. */
311
+ patch: operations["WorkspaceController_updateWorkspace"];
312
+ trace?: never;
313
+ };
314
+ "/v1/workspaces/{workspaceSlug}/api-keys": {
315
+ parameters: {
316
+ query?: never;
317
+ header?: never;
318
+ path?: never;
319
+ cookie?: never;
320
+ };
321
+ /** List PAKs in this workspace. Plaintext tokens are NOT returned — only prefixes + metadata. */
322
+ get: operations["PlatformApiKeyController_list"];
323
+ put?: never;
324
+ /** Mint a new PAK. The plaintext `token` is returned ONCE — store it now. The minter can grant at most their own effective permissions. */
325
+ post: operations["PlatformApiKeyController_create"];
326
+ delete?: never;
327
+ options?: never;
328
+ head?: never;
329
+ patch?: never;
330
+ trace?: never;
331
+ };
332
+ "/v1/workspaces/{workspaceSlug}/api-keys/{id}": {
333
+ parameters: {
334
+ query?: never;
335
+ header?: never;
336
+ path?: never;
337
+ cookie?: never;
338
+ };
339
+ get: operations["PlatformApiKeyController_get"];
340
+ put?: never;
341
+ post?: never;
342
+ delete: operations["PlatformApiKeyController_revoke"];
343
+ options?: never;
344
+ head?: never;
345
+ patch: operations["PlatformApiKeyController_update"];
346
+ trace?: never;
347
+ };
348
+ "/v1/workspaces/{workspaceSlug}/audit-logs": {
349
+ parameters: {
350
+ query?: never;
351
+ header?: never;
352
+ path?: never;
353
+ cookie?: never;
354
+ };
355
+ /** List workspace audit log entries */
356
+ get: operations["WorkspaceAuditController_listAuditLogs"];
357
+ put?: never;
358
+ post?: never;
359
+ delete?: never;
360
+ options?: never;
361
+ head?: never;
362
+ patch?: never;
363
+ trace?: never;
364
+ };
365
+ "/v1/workspaces/{workspaceSlug}/invites": {
366
+ parameters: {
367
+ query?: never;
368
+ header?: never;
369
+ path?: never;
370
+ cookie?: never;
371
+ };
372
+ /** List workspace invites */
373
+ get: operations["WorkspaceController_listInvites"];
374
+ put?: never;
375
+ /** Create a workspace invite link */
376
+ post: operations["WorkspaceController_createInvite"];
377
+ delete?: never;
378
+ options?: never;
379
+ head?: never;
380
+ patch?: never;
381
+ trace?: never;
382
+ };
383
+ "/v1/workspaces/{workspaceSlug}/invites/{inviteId}": {
384
+ parameters: {
385
+ query?: never;
386
+ header?: never;
387
+ path?: never;
388
+ cookie?: never;
389
+ };
390
+ get?: never;
391
+ put?: never;
392
+ post?: never;
393
+ /** Revoke a workspace invite */
394
+ delete: operations["WorkspaceController_revokeInvite"];
395
+ options?: never;
396
+ head?: never;
397
+ patch?: never;
398
+ trace?: never;
399
+ };
400
+ "/v1/workspaces/{workspaceSlug}/members": {
401
+ parameters: {
402
+ query?: never;
403
+ header?: never;
404
+ path?: never;
405
+ cookie?: never;
406
+ };
407
+ /** List workspace members */
408
+ get: operations["WorkspaceController_listMembers"];
409
+ put?: never;
410
+ post?: never;
411
+ delete?: never;
412
+ options?: never;
413
+ head?: never;
414
+ patch?: never;
415
+ trace?: never;
416
+ };
417
+ "/v1/workspaces/{workspaceSlug}/members/{accountId}": {
418
+ parameters: {
419
+ query?: never;
420
+ header?: never;
421
+ path?: never;
422
+ cookie?: never;
423
+ };
424
+ get?: never;
425
+ put?: never;
426
+ post?: never;
427
+ /** Remove a member from a workspace (or self-leave) */
428
+ delete: operations["WorkspaceController_removeMember"];
429
+ options?: never;
430
+ head?: never;
431
+ patch?: never;
432
+ trace?: never;
433
+ };
434
+ "/v1/workspaces/{workspaceSlug}/members/{accountId}/role": {
435
+ parameters: {
436
+ query?: never;
437
+ header?: never;
438
+ path?: never;
439
+ cookie?: never;
440
+ };
441
+ get?: never;
442
+ put?: never;
443
+ post?: never;
444
+ delete?: never;
445
+ options?: never;
446
+ head?: never;
447
+ /** Update a member's role. Body: { roleId } or { role: "owner"|"admin"|"member" }. */
448
+ patch: operations["WorkspaceController_updateMemberRole"];
449
+ trace?: never;
450
+ };
451
+ "/v1/workspaces/{workspaceSlug}/roles": {
452
+ parameters: {
453
+ query?: never;
454
+ header?: never;
455
+ path?: never;
456
+ cookie?: never;
457
+ };
458
+ /** List all roles in a workspace */
459
+ get: operations["WorkspaceRoleController_list"];
460
+ put?: never;
461
+ /** Create a new custom role */
462
+ post: operations["WorkspaceRoleController_create"];
463
+ delete?: never;
464
+ options?: never;
465
+ head?: never;
466
+ patch?: never;
467
+ trace?: never;
468
+ };
469
+ "/v1/workspaces/{workspaceSlug}/roles/permissions/catalog": {
470
+ parameters: {
471
+ query?: never;
472
+ header?: never;
473
+ path?: never;
474
+ cookie?: never;
475
+ };
476
+ /** List every known workspace permission */
477
+ get: operations["WorkspaceRoleController_catalog"];
478
+ put?: never;
479
+ post?: never;
480
+ delete?: never;
481
+ options?: never;
482
+ head?: never;
483
+ patch?: never;
484
+ trace?: never;
485
+ };
486
+ "/v1/workspaces/{workspaceSlug}/roles/{roleId}": {
487
+ parameters: {
488
+ query?: never;
489
+ header?: never;
490
+ path?: never;
491
+ cookie?: never;
492
+ };
493
+ /** Get a role + its permissions */
494
+ get: operations["WorkspaceRoleController_get"];
495
+ put?: never;
496
+ post?: never;
497
+ /** Delete a custom role (fails if it has members) */
498
+ delete: operations["WorkspaceRoleController_delete"];
499
+ options?: never;
500
+ head?: never;
501
+ /** Update a role or replace its permission set */
502
+ patch: operations["WorkspaceRoleController_update"];
503
+ trace?: never;
504
+ };
505
+ "/v1/workspaces/{workspaceSlug}/services": {
506
+ parameters: {
507
+ query?: never;
508
+ header?: never;
509
+ path?: never;
510
+ cookie?: never;
511
+ };
512
+ /** List services activated on this workspace */
513
+ get: operations["WorkspaceServiceController_list"];
514
+ put?: never;
515
+ post?: never;
516
+ delete?: never;
517
+ options?: never;
518
+ head?: never;
519
+ patch?: never;
520
+ trace?: never;
521
+ };
522
+ "/v1/workspaces/{workspaceSlug}/services/{service}": {
523
+ parameters: {
524
+ query?: never;
525
+ header?: never;
526
+ path?: never;
527
+ cookie?: never;
528
+ };
529
+ get?: never;
530
+ put?: never;
531
+ /** Enable (or re-enable) a service for this workspace */
532
+ post: operations["WorkspaceServiceController_enable"];
533
+ /** Disable a service (settings are retained) */
534
+ delete: operations["WorkspaceServiceController_disable"];
535
+ options?: never;
536
+ head?: never;
537
+ patch?: never;
538
+ trace?: never;
539
+ };
540
+ "/v1/workspaces/{workspaceSlug}/services/{service}/settings": {
541
+ parameters: {
542
+ query?: never;
543
+ header?: never;
544
+ path?: never;
545
+ cookie?: never;
546
+ };
547
+ get?: never;
548
+ put?: never;
549
+ post?: never;
550
+ delete?: never;
551
+ options?: never;
552
+ head?: never;
553
+ /** Replace the settings jsonb for an active service */
554
+ patch: operations["WorkspaceServiceController_updateSettings"];
555
+ trace?: never;
556
+ };
557
+ }
558
+ interface components {
559
+ schemas: {
560
+ AcceptWorkspaceInviteDto: {
561
+ /**
562
+ * @description Invite code from the invite email / link.
563
+ * @example inv_…
564
+ */
565
+ code: string;
566
+ };
567
+ CreatePakDto: {
568
+ /** @description Optional description (e.g. which service uses the key). */
569
+ description?: string;
570
+ /**
571
+ * @description Human-readable PAK name (shown in the keys list).
572
+ * @example Production agora client
573
+ */
574
+ name: string;
575
+ /** @description IAM-style policy. List of statements that gate the key — each scoped to a set of actions + resources. */
576
+ policy: components["schemas"]["PolicyStatementDto"][];
577
+ };
578
+ CreateWorkspaceDto: {
579
+ /**
580
+ * @description Display name shown in console and on receipts.
581
+ * @example Acme Corp
582
+ */
583
+ displayName: string;
584
+ /**
585
+ * @description URL-friendly slug. Lowercase alphanumerics, separated by hyphens. Used in URLs and as a stable handle.
586
+ * @example acme-corp
587
+ */
588
+ slug: string;
589
+ };
590
+ CreateWorkspaceInviteDto: {
591
+ /**
592
+ * @description Optional invitee email. When set, the invite is locked to that address.
593
+ * @example alice@example.com
594
+ */
595
+ email?: string;
596
+ /**
597
+ * @description Hours until the invite expires. Defaults to 168 (7 days).
598
+ * @example 168
599
+ */
600
+ expiresInHours?: number;
601
+ /**
602
+ * @description Maximum number of accepts. Defaults to 1. Use higher values for "team link" invites.
603
+ * @example 1
604
+ */
605
+ maxUses?: number;
606
+ /**
607
+ * @description System role shortcut: 'owner' | 'admin' | 'member'.
608
+ * @enum {string}
609
+ */
610
+ role?: "owner" | "admin" | "member";
611
+ /** @description UUID of the role to grant on accept. Use to target custom roles. */
612
+ roleId?: string;
613
+ };
614
+ CreateWorkspaceRoleDto: {
615
+ /** @description Optional human-readable role description. */
616
+ description?: string;
617
+ /**
618
+ * @description Role name. Free-form; not URL-significant.
619
+ * @example BillingAdmin
620
+ */
621
+ name: string;
622
+ /**
623
+ * @description Permission strings (`<service>.<resource>.<action>`) granted to the role.
624
+ * @example [
625
+ * "envoi.template.read",
626
+ * "envoi.message.read"
627
+ * ]
628
+ */
629
+ permissions?: string[];
630
+ };
631
+ EnableWorkspaceServiceDto: {
632
+ /** @description Optional per-service settings blob captured at enable time. */
633
+ settings?: Record<string, never>;
634
+ };
635
+ FeedbackResponseDto: {
636
+ /**
637
+ * @description Human-readable message
638
+ * @example Email verified successfully
639
+ */
640
+ message: string;
641
+ };
642
+ LogoutDto: {
643
+ /**
644
+ * @description Refresh token (JWT)
645
+ * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
646
+ */
647
+ refresh_token: string;
648
+ };
649
+ PolicyStatementDto: {
650
+ /**
651
+ * @description Action strings the statement applies to (e.g. `agora.actor.read`). Wildcards: `agora.*`, `*`.
652
+ * @example [
653
+ * "agora.actor.read",
654
+ * "agora.object.read"
655
+ * ]
656
+ */
657
+ actions: string[];
658
+ /**
659
+ * @description Whether the statement allows or denies the listed actions on the listed resources.
660
+ * @example allow
661
+ * @enum {string}
662
+ */
663
+ effect: "allow" | "deny";
664
+ /**
665
+ * @description Resource URNs the statement applies to (e.g. `pcft:agora:community/<uuid>`). Wildcards allowed.
666
+ * @example [
667
+ * "pcft:agora:community/cccccccc-cccc-cccc-cccc-cccccccccccc"
668
+ * ]
669
+ */
670
+ resources: string[];
671
+ };
672
+ RefreshDto: {
673
+ /**
674
+ * @description Refresh token (JWT)
675
+ * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
676
+ */
677
+ refresh_token: string;
678
+ };
679
+ RequestPasswordResetDto: {
680
+ /**
681
+ * @description Email address to send reset token
682
+ * @example user@example.com
683
+ */
684
+ email: string;
685
+ };
686
+ ResetPasswordDto: {
687
+ /**
688
+ * @description New password (min 8 characters)
689
+ * @example MyNewPassword123
690
+ */
691
+ newPassword: string;
692
+ /**
693
+ * @description 6-digit reset token sent via email
694
+ * @example 123456
695
+ */
696
+ token: string;
697
+ };
698
+ SessionDto: {
699
+ /**
700
+ * @description Owning account identifier
701
+ * @example acc_01HZY2F2B6N7M8Q9W4E6R2
702
+ */
703
+ accountId: string;
704
+ /**
705
+ * Format: date-time
706
+ * @description Creation timestamp (ISO 8601)
707
+ * @example 2025-09-20T12:34:56.000Z
708
+ */
709
+ createdAt: string;
710
+ /**
711
+ * Format: date-time
712
+ * @description Expiration timestamp (ISO 8601)
713
+ * @example 2025-09-21T12:34:56.000Z
714
+ */
715
+ expiresAt: string;
716
+ /**
717
+ * @description Session identifier
718
+ * @example sess_01HZY2G3A7M8Q9W4E6R2K1
719
+ */
720
+ id: string;
721
+ /**
722
+ * @description Client IP address
723
+ * @example 203.0.113.42
724
+ */
725
+ ip: string | null;
726
+ /**
727
+ * Format: date-time
728
+ * @description Last time this session was used (ISO 8601) or null
729
+ * @example 2025-09-20T18:00:00.000Z
730
+ */
731
+ lastUsedAt: string | null;
732
+ /**
733
+ * @description HTTP User-Agent string
734
+ * @example Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
735
+ */
736
+ userAgent: string | null;
737
+ };
738
+ SignInDto: {
739
+ /**
740
+ * @description Email or username
741
+ * @example user@example.com
742
+ */
743
+ identifier: string;
744
+ /**
745
+ * @description User password
746
+ * @example MySecurePassword123
747
+ */
748
+ password: string;
749
+ /**
750
+ * @description Session duration: "short" (24h), "long" (90d), or integer seconds (3600–7776000). Defaults to 30 days.
751
+ * @example short
752
+ */
753
+ sessionDuration?: Record<string, never>;
754
+ };
755
+ SignUpDto: {
756
+ /**
757
+ * @description Display name
758
+ * @example John Doe
759
+ */
760
+ displayName?: string;
761
+ /**
762
+ * @description User email address
763
+ * @example user@example.com
764
+ */
765
+ email: string;
766
+ /**
767
+ * @description User password (min 8 characters)
768
+ * @example MySecurePassword123
769
+ */
770
+ password: string;
771
+ /**
772
+ * @description Session duration: "short" (24h), "long" (90d), or integer seconds (3600–7776000). Defaults to 30 days.
773
+ * @example long
774
+ */
775
+ sessionDuration?: Record<string, never>;
776
+ /**
777
+ * @description Unique username (letters, numbers, dot, underscore, hyphen)
778
+ * @example john_doe
779
+ */
780
+ username: string;
781
+ };
782
+ TokenResponseDto: {
783
+ /**
784
+ * @description Access token (JWT)
785
+ * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
786
+ */
787
+ access_token: string;
788
+ /**
789
+ * @description Access token TTL in seconds
790
+ * @example 3600
791
+ */
792
+ expires_in: number;
793
+ /**
794
+ * @description Refresh token (JWT)
795
+ * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
796
+ */
797
+ refresh_token?: string;
798
+ /**
799
+ * @description Token type
800
+ * @example Bearer
801
+ */
802
+ token_type: string;
803
+ };
804
+ UpdateMemberRoleDto: {
805
+ /**
806
+ * @description System role shortcut: 'owner' | 'admin' | 'member'. Either `roleId` or `role` must be supplied.
807
+ * @enum {string}
808
+ */
809
+ role?: "owner" | "admin" | "member";
810
+ /**
811
+ * @description UUID of the role to assign. Use this to target custom roles.
812
+ * @example 11111111-1111-4111-8111-111111111111
813
+ */
814
+ roleId?: string;
815
+ };
816
+ UpdatePakDto: {
817
+ description?: string | null;
818
+ name?: string;
819
+ /** @description Replaces the policy entirely if provided. */
820
+ policy?: components["schemas"]["PolicyStatementDto"][];
821
+ };
822
+ UpdateWorkspaceDto: {
823
+ displayName?: string;
824
+ /** @description Free-form workspace settings blob. */
825
+ settings?: Record<string, never>;
826
+ /**
827
+ * @description New URL-friendly slug. Same constraints as the create form. Renames are broadcast on the workspace events queue so denormalised consumers (rally-api, future product surfaces) can sync. Old URLs continue to resolve for one rename cycle.
828
+ * @example acme
829
+ */
830
+ slug?: string;
831
+ };
832
+ UpdateWorkspaceRoleDto: {
833
+ description?: string;
834
+ name?: string;
835
+ /** @description Replaces the role permission set if provided. Omit to leave permissions unchanged. */
836
+ permissions?: string[];
837
+ };
838
+ VerifyCodeDto: {
839
+ /**
840
+ * @description Verification code from the email link.
841
+ * @example a1b2c3d4…
842
+ */
843
+ code: string;
844
+ };
845
+ };
846
+ responses: never;
847
+ parameters: never;
848
+ requestBodies: never;
849
+ headers: never;
850
+ pathItems: never;
851
+ }
852
+ interface operations {
853
+ JwksController_jwks: {
854
+ parameters: {
855
+ query?: never;
856
+ header?: never;
857
+ path?: never;
858
+ cookie?: never;
859
+ };
860
+ requestBody?: never;
861
+ responses: {
862
+ 200: {
863
+ headers: {
864
+ [name: string]: unknown;
865
+ };
866
+ content?: never;
867
+ };
868
+ };
869
+ };
870
+ AccountController_deleteAccount: {
871
+ parameters: {
872
+ query?: never;
873
+ header?: never;
874
+ path?: never;
875
+ cookie?: never;
876
+ };
877
+ requestBody?: never;
878
+ responses: {
879
+ 204: {
880
+ headers: {
881
+ [name: string]: unknown;
882
+ };
883
+ content?: never;
884
+ };
885
+ };
886
+ };
887
+ AuthenticationController_logout: {
888
+ parameters: {
889
+ query?: never;
890
+ header?: never;
891
+ path?: never;
892
+ cookie?: never;
893
+ };
894
+ requestBody: {
895
+ content: {
896
+ "application/json": components["schemas"]["LogoutDto"];
897
+ };
898
+ };
899
+ responses: {
900
+ /** @description Logout successful (no content) */
901
+ 200: {
902
+ headers: {
903
+ [name: string]: unknown;
904
+ };
905
+ content?: never;
906
+ };
907
+ /** @description Validation failed or invalid token */
908
+ 400: {
909
+ headers: {
910
+ [name: string]: unknown;
911
+ };
912
+ content?: never;
913
+ };
914
+ };
915
+ };
916
+ AuthenticationController_logoutCurrent: {
917
+ parameters: {
918
+ query?: never;
919
+ header?: never;
920
+ path?: never;
921
+ cookie?: never;
922
+ };
923
+ requestBody?: never;
924
+ responses: {
925
+ /** @description Logout successful (no content) */
926
+ 200: {
927
+ headers: {
928
+ [name: string]: unknown;
929
+ };
930
+ content?: never;
931
+ };
932
+ /** @description Missing or invalid access token */
933
+ 401: {
934
+ headers: {
935
+ [name: string]: unknown;
936
+ };
937
+ content?: never;
938
+ };
939
+ };
940
+ };
941
+ PasswordController_requestPasswordReset: {
942
+ parameters: {
943
+ query?: never;
944
+ header?: never;
945
+ path?: never;
946
+ cookie?: never;
947
+ };
948
+ requestBody: {
949
+ content: {
950
+ "application/json": components["schemas"]["RequestPasswordResetDto"];
951
+ };
952
+ };
953
+ responses: {
954
+ 201: {
955
+ headers: {
956
+ [name: string]: unknown;
957
+ };
958
+ content?: never;
959
+ };
960
+ };
961
+ };
962
+ PasswordController_resetPassword: {
963
+ parameters: {
964
+ query?: never;
965
+ header?: never;
966
+ path?: never;
967
+ cookie?: never;
968
+ };
969
+ requestBody: {
970
+ content: {
971
+ "application/json": components["schemas"]["ResetPasswordDto"];
972
+ };
973
+ };
974
+ responses: {
975
+ 201: {
976
+ headers: {
977
+ [name: string]: unknown;
978
+ };
979
+ content?: never;
980
+ };
981
+ };
982
+ };
983
+ AuthenticationController_refresh: {
984
+ parameters: {
985
+ query?: never;
986
+ header?: never;
987
+ path?: never;
988
+ cookie?: never;
989
+ };
990
+ requestBody: {
991
+ content: {
992
+ "application/json": components["schemas"]["RefreshDto"];
993
+ };
994
+ };
995
+ responses: {
996
+ /** @description Token response */
997
+ 200: {
998
+ headers: {
999
+ [name: string]: unknown;
1000
+ };
1001
+ content: {
1002
+ "application/json": components["schemas"]["TokenResponseDto"];
1003
+ };
1004
+ };
1005
+ /** @description Validation failed or invalid token */
1006
+ 400: {
1007
+ headers: {
1008
+ [name: string]: unknown;
1009
+ };
1010
+ content?: never;
1011
+ };
1012
+ };
1013
+ };
1014
+ AuthenticationController_signin: {
1015
+ parameters: {
1016
+ query?: never;
1017
+ header?: never;
1018
+ path?: never;
1019
+ cookie?: never;
1020
+ };
1021
+ requestBody: {
1022
+ content: {
1023
+ "application/json": components["schemas"]["SignInDto"];
1024
+ };
1025
+ };
1026
+ responses: {
1027
+ /** @description Token response */
1028
+ 200: {
1029
+ headers: {
1030
+ [name: string]: unknown;
1031
+ };
1032
+ content: {
1033
+ "application/json": components["schemas"]["TokenResponseDto"];
1034
+ };
1035
+ };
1036
+ /** @description Validation failed */
1037
+ 400: {
1038
+ headers: {
1039
+ [name: string]: unknown;
1040
+ };
1041
+ content?: never;
1042
+ };
1043
+ };
1044
+ };
1045
+ AuthenticationController_signup: {
1046
+ parameters: {
1047
+ query?: never;
1048
+ header?: never;
1049
+ path?: never;
1050
+ cookie?: never;
1051
+ };
1052
+ requestBody: {
1053
+ content: {
1054
+ "application/json": components["schemas"]["SignUpDto"];
1055
+ };
1056
+ };
1057
+ responses: {
1058
+ /** @description Token response */
1059
+ 200: {
1060
+ headers: {
1061
+ [name: string]: unknown;
1062
+ };
1063
+ content: {
1064
+ "application/json": components["schemas"]["TokenResponseDto"];
1065
+ };
1066
+ };
1067
+ /** @description Validation failed */
1068
+ 400: {
1069
+ headers: {
1070
+ [name: string]: unknown;
1071
+ };
1072
+ content?: never;
1073
+ };
1074
+ };
1075
+ };
1076
+ IntrospectController_introspect: {
1077
+ parameters: {
1078
+ query?: never;
1079
+ header?: never;
1080
+ path?: never;
1081
+ cookie?: never;
1082
+ };
1083
+ requestBody?: never;
1084
+ responses: {
1085
+ 200: {
1086
+ headers: {
1087
+ [name: string]: unknown;
1088
+ };
1089
+ content?: never;
1090
+ };
1091
+ };
1092
+ };
1093
+ IntrospectController_introspectApiKey: {
1094
+ parameters: {
1095
+ query?: never;
1096
+ header: {
1097
+ authorization: string;
1098
+ };
1099
+ path?: never;
1100
+ cookie?: never;
1101
+ };
1102
+ requestBody?: never;
1103
+ responses: {
1104
+ 201: {
1105
+ headers: {
1106
+ [name: string]: unknown;
1107
+ };
1108
+ content?: never;
1109
+ };
1110
+ };
1111
+ };
1112
+ IntrospectController_introspectWorkspace: {
1113
+ parameters: {
1114
+ query?: never;
1115
+ header?: never;
1116
+ path: {
1117
+ workspaceId: string;
1118
+ };
1119
+ cookie?: never;
1120
+ };
1121
+ requestBody?: never;
1122
+ responses: {
1123
+ 200: {
1124
+ headers: {
1125
+ [name: string]: unknown;
1126
+ };
1127
+ content?: never;
1128
+ };
1129
+ };
1130
+ };
1131
+ SessionController_getSessions: {
1132
+ parameters: {
1133
+ query?: never;
1134
+ header?: never;
1135
+ path?: never;
1136
+ cookie?: never;
1137
+ };
1138
+ requestBody?: never;
1139
+ responses: {
1140
+ /** @description Active sessions */
1141
+ 200: {
1142
+ headers: {
1143
+ [name: string]: unknown;
1144
+ };
1145
+ content: {
1146
+ "application/json": components["schemas"]["SessionDto"][];
1147
+ };
1148
+ };
1149
+ /** @description Unauthorized */
1150
+ 401: {
1151
+ headers: {
1152
+ [name: string]: unknown;
1153
+ };
1154
+ content?: never;
1155
+ };
1156
+ };
1157
+ };
1158
+ VerificationController_resend: {
1159
+ parameters: {
1160
+ query?: never;
1161
+ header?: never;
1162
+ path?: never;
1163
+ cookie?: never;
1164
+ };
1165
+ requestBody?: never;
1166
+ responses: {
1167
+ /** @description Verification email sent */
1168
+ 200: {
1169
+ headers: {
1170
+ [name: string]: unknown;
1171
+ };
1172
+ content: {
1173
+ "application/json": components["schemas"]["FeedbackResponseDto"];
1174
+ };
1175
+ };
1176
+ /** @description Unauthorized */
1177
+ 401: {
1178
+ headers: {
1179
+ [name: string]: unknown;
1180
+ };
1181
+ content?: never;
1182
+ };
1183
+ };
1184
+ };
1185
+ VerificationController_verify: {
1186
+ parameters: {
1187
+ query?: never;
1188
+ header?: never;
1189
+ path?: never;
1190
+ cookie?: never;
1191
+ };
1192
+ requestBody: {
1193
+ content: {
1194
+ "application/json": components["schemas"]["VerifyCodeDto"];
1195
+ };
1196
+ };
1197
+ responses: {
1198
+ /** @description Email verified successfully */
1199
+ 200: {
1200
+ headers: {
1201
+ [name: string]: unknown;
1202
+ };
1203
+ content: {
1204
+ "application/json": components["schemas"]["FeedbackResponseDto"];
1205
+ };
1206
+ };
1207
+ /** @description Invalid or expired verification code */
1208
+ 400: {
1209
+ headers: {
1210
+ [name: string]: unknown;
1211
+ };
1212
+ content?: never;
1213
+ };
1214
+ };
1215
+ };
1216
+ WorkspaceController_listWorkspaces: {
1217
+ parameters: {
1218
+ query: {
1219
+ limit: string;
1220
+ cursor: string;
1221
+ };
1222
+ header?: never;
1223
+ path?: never;
1224
+ cookie?: never;
1225
+ };
1226
+ requestBody?: never;
1227
+ responses: {
1228
+ 200: {
1229
+ headers: {
1230
+ [name: string]: unknown;
1231
+ };
1232
+ content?: never;
1233
+ };
1234
+ };
1235
+ };
1236
+ WorkspaceController_createWorkspace: {
1237
+ parameters: {
1238
+ query?: never;
1239
+ header?: never;
1240
+ path?: never;
1241
+ cookie?: never;
1242
+ };
1243
+ requestBody: {
1244
+ content: {
1245
+ "application/json": components["schemas"]["CreateWorkspaceDto"];
1246
+ };
1247
+ };
1248
+ responses: {
1249
+ 201: {
1250
+ headers: {
1251
+ [name: string]: unknown;
1252
+ };
1253
+ content?: never;
1254
+ };
1255
+ };
1256
+ };
1257
+ WorkspaceController_acceptInvite: {
1258
+ parameters: {
1259
+ query?: never;
1260
+ header?: never;
1261
+ path?: never;
1262
+ cookie?: never;
1263
+ };
1264
+ requestBody: {
1265
+ content: {
1266
+ "application/json": components["schemas"]["AcceptWorkspaceInviteDto"];
1267
+ };
1268
+ };
1269
+ responses: {
1270
+ 201: {
1271
+ headers: {
1272
+ [name: string]: unknown;
1273
+ };
1274
+ content?: never;
1275
+ };
1276
+ };
1277
+ };
1278
+ WorkspaceController_getWorkspace: {
1279
+ parameters: {
1280
+ query?: never;
1281
+ header?: never;
1282
+ path: {
1283
+ workspaceSlug: string;
1284
+ };
1285
+ cookie?: never;
1286
+ };
1287
+ requestBody?: never;
1288
+ responses: {
1289
+ 200: {
1290
+ headers: {
1291
+ [name: string]: unknown;
1292
+ };
1293
+ content?: never;
1294
+ };
1295
+ };
1296
+ };
1297
+ WorkspaceController_deleteWorkspace: {
1298
+ parameters: {
1299
+ query?: never;
1300
+ header?: never;
1301
+ path: {
1302
+ workspaceSlug: string;
1303
+ };
1304
+ cookie?: never;
1305
+ };
1306
+ requestBody?: never;
1307
+ responses: {
1308
+ 204: {
1309
+ headers: {
1310
+ [name: string]: unknown;
1311
+ };
1312
+ content?: never;
1313
+ };
1314
+ };
1315
+ };
1316
+ WorkspaceController_updateWorkspace: {
1317
+ parameters: {
1318
+ query?: never;
1319
+ header?: never;
1320
+ path: {
1321
+ workspaceSlug: string;
1322
+ };
1323
+ cookie?: never;
1324
+ };
1325
+ requestBody: {
1326
+ content: {
1327
+ "application/json": components["schemas"]["UpdateWorkspaceDto"];
1328
+ };
1329
+ };
1330
+ responses: {
1331
+ /** @description Workspace updated. */
1332
+ 200: {
1333
+ headers: {
1334
+ [name: string]: unknown;
1335
+ };
1336
+ content?: never;
1337
+ };
1338
+ /** @description Invalid slug or display name. */
1339
+ 400: {
1340
+ headers: {
1341
+ [name: string]: unknown;
1342
+ };
1343
+ content?: never;
1344
+ };
1345
+ /** @description Workspace not found. */
1346
+ 404: {
1347
+ headers: {
1348
+ [name: string]: unknown;
1349
+ };
1350
+ content?: never;
1351
+ };
1352
+ /** @description Slug already taken by another workspace. */
1353
+ 409: {
1354
+ headers: {
1355
+ [name: string]: unknown;
1356
+ };
1357
+ content?: never;
1358
+ };
1359
+ };
1360
+ };
1361
+ PlatformApiKeyController_list: {
1362
+ parameters: {
1363
+ query?: never;
1364
+ header?: never;
1365
+ path: {
1366
+ workspaceSlug: string;
1367
+ };
1368
+ cookie?: never;
1369
+ };
1370
+ requestBody?: never;
1371
+ responses: {
1372
+ 200: {
1373
+ headers: {
1374
+ [name: string]: unknown;
1375
+ };
1376
+ content?: never;
1377
+ };
1378
+ };
1379
+ };
1380
+ PlatformApiKeyController_create: {
1381
+ parameters: {
1382
+ query?: never;
1383
+ header?: never;
1384
+ path: {
1385
+ workspaceSlug: string;
1386
+ };
1387
+ cookie?: never;
1388
+ };
1389
+ requestBody: {
1390
+ content: {
1391
+ "application/json": components["schemas"]["CreatePakDto"];
1392
+ };
1393
+ };
1394
+ responses: {
1395
+ 201: {
1396
+ headers: {
1397
+ [name: string]: unknown;
1398
+ };
1399
+ content?: never;
1400
+ };
1401
+ };
1402
+ };
1403
+ PlatformApiKeyController_get: {
1404
+ parameters: {
1405
+ query?: never;
1406
+ header?: never;
1407
+ path: {
1408
+ workspaceSlug: string;
1409
+ id: string;
1410
+ };
1411
+ cookie?: never;
1412
+ };
1413
+ requestBody?: never;
1414
+ responses: {
1415
+ 200: {
1416
+ headers: {
1417
+ [name: string]: unknown;
1418
+ };
1419
+ content?: never;
1420
+ };
1421
+ };
1422
+ };
1423
+ PlatformApiKeyController_revoke: {
1424
+ parameters: {
1425
+ query?: never;
1426
+ header?: never;
1427
+ path: {
1428
+ workspaceSlug: string;
1429
+ id: string;
1430
+ };
1431
+ cookie?: never;
1432
+ };
1433
+ requestBody?: never;
1434
+ responses: {
1435
+ 204: {
1436
+ headers: {
1437
+ [name: string]: unknown;
1438
+ };
1439
+ content?: never;
1440
+ };
1441
+ };
1442
+ };
1443
+ PlatformApiKeyController_update: {
1444
+ parameters: {
1445
+ query?: never;
1446
+ header?: never;
1447
+ path: {
1448
+ workspaceSlug: string;
1449
+ id: string;
1450
+ };
1451
+ cookie?: never;
1452
+ };
1453
+ requestBody: {
1454
+ content: {
1455
+ "application/json": components["schemas"]["UpdatePakDto"];
1456
+ };
1457
+ };
1458
+ responses: {
1459
+ 200: {
1460
+ headers: {
1461
+ [name: string]: unknown;
1462
+ };
1463
+ content?: never;
1464
+ };
1465
+ };
1466
+ };
1467
+ WorkspaceAuditController_listAuditLogs: {
1468
+ parameters: {
1469
+ query: {
1470
+ limit: string;
1471
+ cursor: string;
1472
+ };
1473
+ header?: never;
1474
+ path: {
1475
+ workspaceSlug: string;
1476
+ };
1477
+ cookie?: never;
1478
+ };
1479
+ requestBody?: never;
1480
+ responses: {
1481
+ 200: {
1482
+ headers: {
1483
+ [name: string]: unknown;
1484
+ };
1485
+ content?: never;
1486
+ };
1487
+ };
1488
+ };
1489
+ WorkspaceController_listInvites: {
1490
+ parameters: {
1491
+ query: {
1492
+ limit: string;
1493
+ cursor: string;
1494
+ };
1495
+ header?: never;
1496
+ path: {
1497
+ workspaceSlug: string;
1498
+ };
1499
+ cookie?: never;
1500
+ };
1501
+ requestBody?: never;
1502
+ responses: {
1503
+ 200: {
1504
+ headers: {
1505
+ [name: string]: unknown;
1506
+ };
1507
+ content?: never;
1508
+ };
1509
+ };
1510
+ };
1511
+ WorkspaceController_createInvite: {
1512
+ parameters: {
1513
+ query?: never;
1514
+ header?: never;
1515
+ path: {
1516
+ workspaceSlug: string;
1517
+ };
1518
+ cookie?: never;
1519
+ };
1520
+ requestBody: {
1521
+ content: {
1522
+ "application/json": components["schemas"]["CreateWorkspaceInviteDto"];
1523
+ };
1524
+ };
1525
+ responses: {
1526
+ 201: {
1527
+ headers: {
1528
+ [name: string]: unknown;
1529
+ };
1530
+ content?: never;
1531
+ };
1532
+ };
1533
+ };
1534
+ WorkspaceController_revokeInvite: {
1535
+ parameters: {
1536
+ query?: never;
1537
+ header?: never;
1538
+ path: {
1539
+ workspaceSlug: string;
1540
+ inviteId: string;
1541
+ };
1542
+ cookie?: never;
1543
+ };
1544
+ requestBody?: never;
1545
+ responses: {
1546
+ 204: {
1547
+ headers: {
1548
+ [name: string]: unknown;
1549
+ };
1550
+ content?: never;
1551
+ };
1552
+ };
1553
+ };
1554
+ WorkspaceController_listMembers: {
1555
+ parameters: {
1556
+ query: {
1557
+ limit: string;
1558
+ cursor: string;
1559
+ };
1560
+ header?: never;
1561
+ path: {
1562
+ workspaceSlug: string;
1563
+ };
1564
+ cookie?: never;
1565
+ };
1566
+ requestBody?: never;
1567
+ responses: {
1568
+ 200: {
1569
+ headers: {
1570
+ [name: string]: unknown;
1571
+ };
1572
+ content?: never;
1573
+ };
1574
+ };
1575
+ };
1576
+ WorkspaceController_removeMember: {
1577
+ parameters: {
1578
+ query?: never;
1579
+ header?: never;
1580
+ path: {
1581
+ workspaceSlug: string;
1582
+ accountId: string;
1583
+ };
1584
+ cookie?: never;
1585
+ };
1586
+ requestBody?: never;
1587
+ responses: {
1588
+ 204: {
1589
+ headers: {
1590
+ [name: string]: unknown;
1591
+ };
1592
+ content?: never;
1593
+ };
1594
+ };
1595
+ };
1596
+ WorkspaceController_updateMemberRole: {
1597
+ parameters: {
1598
+ query?: never;
1599
+ header?: never;
1600
+ path: {
1601
+ workspaceSlug: string;
1602
+ accountId: string;
1603
+ };
1604
+ cookie?: never;
1605
+ };
1606
+ requestBody: {
1607
+ content: {
1608
+ "application/json": components["schemas"]["UpdateMemberRoleDto"];
1609
+ };
1610
+ };
1611
+ responses: {
1612
+ 200: {
1613
+ headers: {
1614
+ [name: string]: unknown;
1615
+ };
1616
+ content?: never;
1617
+ };
1618
+ };
1619
+ };
1620
+ WorkspaceRoleController_list: {
1621
+ parameters: {
1622
+ query?: never;
1623
+ header?: never;
1624
+ path: {
1625
+ workspaceSlug: string;
1626
+ };
1627
+ cookie?: never;
1628
+ };
1629
+ requestBody?: never;
1630
+ responses: {
1631
+ 200: {
1632
+ headers: {
1633
+ [name: string]: unknown;
1634
+ };
1635
+ content?: never;
1636
+ };
1637
+ };
1638
+ };
1639
+ WorkspaceRoleController_create: {
1640
+ parameters: {
1641
+ query?: never;
1642
+ header?: never;
1643
+ path: {
1644
+ workspaceSlug: string;
1645
+ };
1646
+ cookie?: never;
1647
+ };
1648
+ requestBody: {
1649
+ content: {
1650
+ "application/json": components["schemas"]["CreateWorkspaceRoleDto"];
1651
+ };
1652
+ };
1653
+ responses: {
1654
+ 201: {
1655
+ headers: {
1656
+ [name: string]: unknown;
1657
+ };
1658
+ content?: never;
1659
+ };
1660
+ };
1661
+ };
1662
+ WorkspaceRoleController_catalog: {
1663
+ parameters: {
1664
+ query?: never;
1665
+ header?: never;
1666
+ path: {
1667
+ workspaceSlug: string;
1668
+ };
1669
+ cookie?: never;
1670
+ };
1671
+ requestBody?: never;
1672
+ responses: {
1673
+ 200: {
1674
+ headers: {
1675
+ [name: string]: unknown;
1676
+ };
1677
+ content?: never;
1678
+ };
1679
+ };
1680
+ };
1681
+ WorkspaceRoleController_get: {
1682
+ parameters: {
1683
+ query?: never;
1684
+ header?: never;
1685
+ path: {
1686
+ workspaceSlug: string;
1687
+ roleId: string;
1688
+ };
1689
+ cookie?: never;
1690
+ };
1691
+ requestBody?: never;
1692
+ responses: {
1693
+ 200: {
1694
+ headers: {
1695
+ [name: string]: unknown;
1696
+ };
1697
+ content?: never;
1698
+ };
1699
+ };
1700
+ };
1701
+ WorkspaceRoleController_delete: {
1702
+ parameters: {
1703
+ query?: never;
1704
+ header?: never;
1705
+ path: {
1706
+ workspaceSlug: string;
1707
+ roleId: string;
1708
+ };
1709
+ cookie?: never;
1710
+ };
1711
+ requestBody?: never;
1712
+ responses: {
1713
+ 204: {
1714
+ headers: {
1715
+ [name: string]: unknown;
1716
+ };
1717
+ content?: never;
1718
+ };
1719
+ };
1720
+ };
1721
+ WorkspaceRoleController_update: {
1722
+ parameters: {
1723
+ query?: never;
1724
+ header?: never;
1725
+ path: {
1726
+ workspaceSlug: string;
1727
+ roleId: string;
1728
+ };
1729
+ cookie?: never;
1730
+ };
1731
+ requestBody: {
1732
+ content: {
1733
+ "application/json": components["schemas"]["UpdateWorkspaceRoleDto"];
1734
+ };
1735
+ };
1736
+ responses: {
1737
+ 200: {
1738
+ headers: {
1739
+ [name: string]: unknown;
1740
+ };
1741
+ content?: never;
1742
+ };
1743
+ };
1744
+ };
1745
+ WorkspaceServiceController_list: {
1746
+ parameters: {
1747
+ query?: never;
1748
+ header?: never;
1749
+ path: {
1750
+ workspaceSlug: string;
1751
+ };
1752
+ cookie?: never;
1753
+ };
1754
+ requestBody?: never;
1755
+ responses: {
1756
+ 200: {
1757
+ headers: {
1758
+ [name: string]: unknown;
1759
+ };
1760
+ content?: never;
1761
+ };
1762
+ };
1763
+ };
1764
+ WorkspaceServiceController_enable: {
1765
+ parameters: {
1766
+ query?: never;
1767
+ header?: never;
1768
+ path: {
1769
+ workspaceSlug: string;
1770
+ service: string;
1771
+ };
1772
+ cookie?: never;
1773
+ };
1774
+ requestBody: {
1775
+ content: {
1776
+ "application/json": components["schemas"]["EnableWorkspaceServiceDto"];
1777
+ };
1778
+ };
1779
+ responses: {
1780
+ 201: {
1781
+ headers: {
1782
+ [name: string]: unknown;
1783
+ };
1784
+ content?: never;
1785
+ };
1786
+ };
1787
+ };
1788
+ WorkspaceServiceController_disable: {
1789
+ parameters: {
1790
+ query?: never;
1791
+ header?: never;
1792
+ path: {
1793
+ workspaceSlug: string;
1794
+ service: string;
1795
+ };
1796
+ cookie?: never;
1797
+ };
1798
+ requestBody?: never;
1799
+ responses: {
1800
+ 204: {
1801
+ headers: {
1802
+ [name: string]: unknown;
1803
+ };
1804
+ content?: never;
1805
+ };
1806
+ };
1807
+ };
1808
+ WorkspaceServiceController_updateSettings: {
1809
+ parameters: {
1810
+ query?: never;
1811
+ header?: never;
1812
+ path: {
1813
+ workspaceSlug: string;
1814
+ service: string;
1815
+ };
1816
+ cookie?: never;
1817
+ };
1818
+ /** @description Replaces the per-service settings jsonb entirely. The body is the settings object itself (no wrapper). Service-specific shape — e.g. envoi tracks default sender, agora tracks ranking weights. */
1819
+ requestBody: {
1820
+ content: {
1821
+ "application/json": {
1822
+ [key: string]: unknown;
1823
+ };
1824
+ };
1825
+ };
1826
+ responses: {
1827
+ 200: {
1828
+ headers: {
1829
+ [name: string]: unknown;
1830
+ };
1831
+ content?: never;
1832
+ };
1833
+ };
1834
+ };
1835
+ }
1836
+
1837
+ /**
1838
+ * PlatformAuth — typed `openapi-fetch` client for every endpoint in
1839
+ * `Specs/platform-auth.json`. Reach for `client.GET("/v1/...")` or
1840
+ * `client.POST(...)`; request / response types come from the
1841
+ * generated `paths` interface.
1842
+ */
1843
+ declare class PlatformAuth {
1844
+ /** The underlying typed client. v0 surface — every endpoint reachable. */
1845
+ readonly client: ReturnType<typeof makeClient<paths>>;
1846
+ constructor(config?: PCClientConfig);
1847
+ }
1848
+
1849
+ export { PlatformAuth, type paths };