@possibl/rcrt-sdk 0.1.2 → 0.5.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.
Files changed (108) hide show
  1. package/CHANGELOG.md +99 -62
  2. package/LICENSE +21 -0
  3. package/README.md +35 -21
  4. package/dist/auth.d.ts +45 -0
  5. package/dist/auth.d.ts.map +1 -0
  6. package/{src/auth.ts → dist/auth.js} +9 -24
  7. package/dist/auth.js.map +1 -0
  8. package/dist/authn.d.ts +114 -0
  9. package/dist/authn.d.ts.map +1 -0
  10. package/dist/authn.js +107 -0
  11. package/dist/authn.js.map +1 -0
  12. package/dist/breadcrumbs.d.ts +43 -0
  13. package/dist/breadcrumbs.d.ts.map +1 -0
  14. package/dist/breadcrumbs.js +122 -0
  15. package/dist/breadcrumbs.js.map +1 -0
  16. package/dist/cards.d.ts +28 -0
  17. package/dist/cards.d.ts.map +1 -0
  18. package/dist/cards.js +105 -0
  19. package/dist/cards.js.map +1 -0
  20. package/dist/chat.d.ts +103 -0
  21. package/dist/chat.d.ts.map +1 -0
  22. package/dist/chat.js +105 -0
  23. package/dist/chat.js.map +1 -0
  24. package/dist/client.d.ts +85 -0
  25. package/dist/client.d.ts.map +1 -0
  26. package/dist/client.js +133 -0
  27. package/dist/client.js.map +1 -0
  28. package/dist/errors.d.ts +32 -0
  29. package/dist/errors.d.ts.map +1 -0
  30. package/dist/errors.js +76 -0
  31. package/dist/errors.js.map +1 -0
  32. package/dist/files.d.ts +41 -0
  33. package/dist/files.d.ts.map +1 -0
  34. package/dist/files.js +64 -0
  35. package/dist/files.js.map +1 -0
  36. package/dist/generated/conformance.d.ts +48 -0
  37. package/dist/generated/conformance.d.ts.map +1 -0
  38. package/dist/generated/conformance.js +24 -0
  39. package/dist/generated/conformance.js.map +1 -0
  40. package/dist/generated/index.d.ts +34 -0
  41. package/dist/generated/index.d.ts.map +1 -0
  42. package/dist/generated/index.js +34 -0
  43. package/dist/generated/index.js.map +1 -0
  44. package/dist/generated/openapi.d.ts +3900 -0
  45. package/dist/generated/openapi.d.ts.map +1 -0
  46. package/dist/generated/openapi.js +6 -0
  47. package/dist/generated/openapi.js.map +1 -0
  48. package/dist/grants.d.ts +41 -0
  49. package/dist/grants.d.ts.map +1 -0
  50. package/dist/grants.js +50 -0
  51. package/dist/grants.js.map +1 -0
  52. package/dist/index.d.ts +34 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +24 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/internal/fetch.d.ts +47 -0
  57. package/dist/internal/fetch.d.ts.map +1 -0
  58. package/dist/internal/fetch.js +108 -0
  59. package/dist/internal/fetch.js.map +1 -0
  60. package/dist/internal/sse.d.ts +82 -0
  61. package/dist/internal/sse.d.ts.map +1 -0
  62. package/dist/internal/sse.js +161 -0
  63. package/dist/internal/sse.js.map +1 -0
  64. package/dist/marketplace.d.ts +98 -0
  65. package/dist/marketplace.d.ts.map +1 -0
  66. package/dist/marketplace.js +74 -0
  67. package/dist/marketplace.js.map +1 -0
  68. package/dist/members.d.ts +60 -0
  69. package/dist/members.d.ts.map +1 -0
  70. package/dist/members.js +74 -0
  71. package/dist/members.js.map +1 -0
  72. package/dist/org.d.ts +85 -0
  73. package/dist/org.d.ts.map +1 -0
  74. package/dist/org.js +70 -0
  75. package/dist/org.js.map +1 -0
  76. package/dist/types/breadcrumb.d.ts +70 -0
  77. package/dist/types/breadcrumb.d.ts.map +1 -0
  78. package/dist/types/breadcrumb.js +8 -0
  79. package/dist/types/breadcrumb.js.map +1 -0
  80. package/dist/types/card.d.ts +251 -0
  81. package/dist/types/card.d.ts.map +1 -0
  82. package/dist/types/card.js +10 -0
  83. package/dist/types/card.js.map +1 -0
  84. package/dist/types/engine.d.ts +69 -0
  85. package/dist/types/engine.d.ts.map +1 -0
  86. package/dist/types/engine.js +53 -0
  87. package/dist/types/engine.js.map +1 -0
  88. package/dist/types/index.d.ts +4 -0
  89. package/dist/types/index.d.ts.map +1 -0
  90. package/dist/types/index.js +4 -0
  91. package/dist/types/index.js.map +1 -0
  92. package/package.json +35 -6
  93. package/src/authn.ts +0 -159
  94. package/src/breadcrumbs.ts +0 -111
  95. package/src/capabilities.ts +0 -93
  96. package/src/cards.ts +0 -109
  97. package/src/chat.ts +0 -83
  98. package/src/client.ts +0 -97
  99. package/src/errors.ts +0 -101
  100. package/src/files.ts +0 -135
  101. package/src/grants.ts +0 -99
  102. package/src/index.ts +0 -103
  103. package/src/internal/fetch.ts +0 -133
  104. package/src/internal/sse.ts +0 -236
  105. package/src/sessions.ts +0 -110
  106. package/src/types/breadcrumb.ts +0 -77
  107. package/src/types/card.ts +0 -298
  108. package/src/types/index.ts +0 -2
@@ -0,0 +1,3900 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ export interface paths {
6
+ "/health": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /** Health check */
14
+ get: {
15
+ parameters: {
16
+ query?: never;
17
+ header?: never;
18
+ path?: never;
19
+ cookie?: never;
20
+ };
21
+ requestBody?: never;
22
+ responses: {
23
+ /** @description OK */
24
+ 200: {
25
+ headers: {
26
+ [name: string]: unknown;
27
+ };
28
+ content: {
29
+ "application/json": {
30
+ /** @example ok */
31
+ status?: string;
32
+ };
33
+ };
34
+ };
35
+ };
36
+ };
37
+ put?: never;
38
+ post?: never;
39
+ delete?: never;
40
+ options?: never;
41
+ head?: never;
42
+ patch?: never;
43
+ trace?: never;
44
+ };
45
+ "/v1/breadcrumbs": {
46
+ parameters: {
47
+ query?: never;
48
+ header?: never;
49
+ path?: never;
50
+ cookie?: never;
51
+ };
52
+ /** Query breadcrumbs by tags */
53
+ get: {
54
+ parameters: {
55
+ query?: {
56
+ tags?: string[];
57
+ limit?: number;
58
+ /** @description Filter by breadcrumb name */
59
+ name?: string;
60
+ };
61
+ header?: never;
62
+ path?: never;
63
+ cookie?: never;
64
+ };
65
+ requestBody?: never;
66
+ responses: {
67
+ /** @description List of breadcrumbs */
68
+ 200: {
69
+ headers: {
70
+ [name: string]: unknown;
71
+ };
72
+ content: {
73
+ "application/json": components["schemas"]["Breadcrumb"][];
74
+ };
75
+ };
76
+ };
77
+ };
78
+ put?: never;
79
+ /** Create a breadcrumb */
80
+ post: {
81
+ parameters: {
82
+ query?: never;
83
+ header?: never;
84
+ path?: never;
85
+ cookie?: never;
86
+ };
87
+ requestBody: {
88
+ content: {
89
+ "application/json": components["schemas"]["CreateBreadcrumbRequest"];
90
+ };
91
+ };
92
+ responses: {
93
+ /** @description Created */
94
+ 201: {
95
+ headers: {
96
+ [name: string]: unknown;
97
+ };
98
+ content: {
99
+ "application/json": components["schemas"]["BreadcrumbResponse"];
100
+ };
101
+ };
102
+ };
103
+ };
104
+ delete?: never;
105
+ options?: never;
106
+ head?: never;
107
+ patch?: never;
108
+ trace?: never;
109
+ };
110
+ "/v1/breadcrumbs/search": {
111
+ parameters: {
112
+ query?: never;
113
+ header?: never;
114
+ path?: never;
115
+ cookie?: never;
116
+ };
117
+ /** Semantic search breadcrumbs */
118
+ get: {
119
+ parameters: {
120
+ query: {
121
+ q: string;
122
+ limit?: number;
123
+ };
124
+ header?: never;
125
+ path?: never;
126
+ cookie?: never;
127
+ };
128
+ requestBody?: never;
129
+ responses: {
130
+ /** @description Search results */
131
+ 200: {
132
+ headers: {
133
+ [name: string]: unknown;
134
+ };
135
+ content?: never;
136
+ };
137
+ };
138
+ };
139
+ put?: never;
140
+ post?: never;
141
+ delete?: never;
142
+ options?: never;
143
+ head?: never;
144
+ patch?: never;
145
+ trace?: never;
146
+ };
147
+ "/v1/breadcrumbs/{id}": {
148
+ parameters: {
149
+ query?: never;
150
+ header?: never;
151
+ path?: never;
152
+ cookie?: never;
153
+ };
154
+ /** Get breadcrumb by ID */
155
+ get: {
156
+ parameters: {
157
+ query?: never;
158
+ header?: never;
159
+ path: {
160
+ id: components["parameters"]["BreadcrumbId"];
161
+ };
162
+ cookie?: never;
163
+ };
164
+ requestBody?: never;
165
+ responses: {
166
+ /** @description Breadcrumb */
167
+ 200: {
168
+ headers: {
169
+ [name: string]: unknown;
170
+ };
171
+ content: {
172
+ "application/json": components["schemas"]["Breadcrumb"];
173
+ };
174
+ };
175
+ };
176
+ };
177
+ put?: never;
178
+ post?: never;
179
+ /** Delete breadcrumb */
180
+ delete: {
181
+ parameters: {
182
+ query?: never;
183
+ header?: never;
184
+ path: {
185
+ id: components["parameters"]["BreadcrumbId"];
186
+ };
187
+ cookie?: never;
188
+ };
189
+ requestBody?: never;
190
+ responses: {
191
+ /** @description Deleted */
192
+ 204: {
193
+ headers: {
194
+ [name: string]: unknown;
195
+ };
196
+ content?: never;
197
+ };
198
+ };
199
+ };
200
+ options?: never;
201
+ head?: never;
202
+ /** Update breadcrumb (requires version for optimistic locking) */
203
+ patch: {
204
+ parameters: {
205
+ query?: never;
206
+ header?: never;
207
+ path: {
208
+ id: components["parameters"]["BreadcrumbId"];
209
+ };
210
+ cookie?: never;
211
+ };
212
+ requestBody: {
213
+ content: {
214
+ "application/json": components["schemas"]["UpdateBreadcrumbRequest"];
215
+ };
216
+ };
217
+ responses: {
218
+ /** @description Updated */
219
+ 200: {
220
+ headers: {
221
+ [name: string]: unknown;
222
+ };
223
+ content?: never;
224
+ };
225
+ /** @description Version conflict */
226
+ 409: {
227
+ headers: {
228
+ [name: string]: unknown;
229
+ };
230
+ content?: never;
231
+ };
232
+ };
233
+ };
234
+ trace?: never;
235
+ };
236
+ "/v1/chat": {
237
+ parameters: {
238
+ query?: never;
239
+ header?: never;
240
+ path?: never;
241
+ cookie?: never;
242
+ };
243
+ get?: never;
244
+ put?: never;
245
+ /** Send a chat message (fire-and-forget, response via SSE) */
246
+ post: {
247
+ parameters: {
248
+ query?: never;
249
+ header?: never;
250
+ path?: never;
251
+ cookie?: never;
252
+ };
253
+ requestBody: {
254
+ content: {
255
+ "application/json": {
256
+ message: string;
257
+ session_id?: string;
258
+ };
259
+ };
260
+ };
261
+ responses: {
262
+ /** @description Message created */
263
+ 201: {
264
+ headers: {
265
+ [name: string]: unknown;
266
+ };
267
+ content: {
268
+ "application/json": {
269
+ /** Format: uuid */
270
+ id?: string;
271
+ session_id?: string;
272
+ };
273
+ };
274
+ };
275
+ };
276
+ };
277
+ delete?: never;
278
+ options?: never;
279
+ head?: never;
280
+ patch?: never;
281
+ trace?: never;
282
+ };
283
+ "/v1/files": {
284
+ parameters: {
285
+ query?: never;
286
+ header?: never;
287
+ path?: never;
288
+ cookie?: never;
289
+ };
290
+ /** List files */
291
+ get: {
292
+ parameters: {
293
+ query?: {
294
+ scope?: "tenant" | "org" | "user";
295
+ limit?: number;
296
+ };
297
+ header?: never;
298
+ path?: never;
299
+ cookie?: never;
300
+ };
301
+ requestBody?: never;
302
+ responses: {
303
+ /** @description File list */
304
+ 200: {
305
+ headers: {
306
+ [name: string]: unknown;
307
+ };
308
+ content?: never;
309
+ };
310
+ };
311
+ };
312
+ put?: never;
313
+ /** Upload a file */
314
+ post: {
315
+ parameters: {
316
+ query?: never;
317
+ header?: never;
318
+ path?: never;
319
+ cookie?: never;
320
+ };
321
+ requestBody?: {
322
+ content: {
323
+ "multipart/form-data": {
324
+ /** Format: binary */
325
+ file?: string;
326
+ /** @enum {string} */
327
+ scope?: "tenant" | "org" | "user";
328
+ };
329
+ };
330
+ };
331
+ responses: {
332
+ /** @description File uploaded */
333
+ 201: {
334
+ headers: {
335
+ [name: string]: unknown;
336
+ };
337
+ content?: never;
338
+ };
339
+ };
340
+ };
341
+ delete?: never;
342
+ options?: never;
343
+ head?: never;
344
+ patch?: never;
345
+ trace?: never;
346
+ };
347
+ "/v1/files/{id}": {
348
+ parameters: {
349
+ query?: never;
350
+ header?: never;
351
+ path?: never;
352
+ cookie?: never;
353
+ };
354
+ /** Get file metadata */
355
+ get: {
356
+ parameters: {
357
+ query?: never;
358
+ header?: never;
359
+ path: {
360
+ id: string;
361
+ };
362
+ cookie?: never;
363
+ };
364
+ requestBody?: never;
365
+ responses: {
366
+ /** @description File metadata */
367
+ 200: {
368
+ headers: {
369
+ [name: string]: unknown;
370
+ };
371
+ content?: never;
372
+ };
373
+ };
374
+ };
375
+ put?: never;
376
+ post?: never;
377
+ /** Delete file */
378
+ delete: {
379
+ parameters: {
380
+ query?: never;
381
+ header?: never;
382
+ path: {
383
+ id: string;
384
+ };
385
+ cookie?: never;
386
+ };
387
+ requestBody?: never;
388
+ responses: {
389
+ /** @description Deleted */
390
+ 204: {
391
+ headers: {
392
+ [name: string]: unknown;
393
+ };
394
+ content?: never;
395
+ };
396
+ };
397
+ };
398
+ options?: never;
399
+ head?: never;
400
+ patch?: never;
401
+ trace?: never;
402
+ };
403
+ "/v1/files/{id}/content": {
404
+ parameters: {
405
+ query?: never;
406
+ header?: never;
407
+ path?: never;
408
+ cookie?: never;
409
+ };
410
+ /** Get signed download URL */
411
+ get: {
412
+ parameters: {
413
+ query?: {
414
+ expiry?: string;
415
+ };
416
+ header?: never;
417
+ path: {
418
+ id: string;
419
+ };
420
+ cookie?: never;
421
+ };
422
+ requestBody?: never;
423
+ responses: {
424
+ /** @description Download URL */
425
+ 200: {
426
+ headers: {
427
+ [name: string]: unknown;
428
+ };
429
+ content: {
430
+ "application/json": {
431
+ /** Format: uri */
432
+ download_url?: string;
433
+ };
434
+ };
435
+ };
436
+ };
437
+ };
438
+ put?: never;
439
+ post?: never;
440
+ delete?: never;
441
+ options?: never;
442
+ head?: never;
443
+ patch?: never;
444
+ trace?: never;
445
+ };
446
+ "/v1/files/{id}/text": {
447
+ parameters: {
448
+ query?: never;
449
+ header?: never;
450
+ path?: never;
451
+ cookie?: never;
452
+ };
453
+ /** Extract text from file */
454
+ get: {
455
+ parameters: {
456
+ query?: never;
457
+ header?: never;
458
+ path: {
459
+ id: string;
460
+ };
461
+ cookie?: never;
462
+ };
463
+ requestBody?: never;
464
+ responses: {
465
+ /** @description Extracted text */
466
+ 200: {
467
+ headers: {
468
+ [name: string]: unknown;
469
+ };
470
+ content: {
471
+ "application/json": {
472
+ text?: string;
473
+ };
474
+ };
475
+ };
476
+ };
477
+ };
478
+ put?: never;
479
+ post?: never;
480
+ delete?: never;
481
+ options?: never;
482
+ head?: never;
483
+ patch?: never;
484
+ trace?: never;
485
+ };
486
+ "/v1/content/understand": {
487
+ parameters: {
488
+ query?: never;
489
+ header?: never;
490
+ path?: never;
491
+ cookie?: never;
492
+ };
493
+ get?: never;
494
+ put?: never;
495
+ /** Multimodal content understanding (image, audio, video, text) */
496
+ post: {
497
+ parameters: {
498
+ query?: never;
499
+ header?: never;
500
+ path?: never;
501
+ cookie?: never;
502
+ };
503
+ requestBody?: {
504
+ content: {
505
+ "application/json": {
506
+ content_base64?: string;
507
+ content_url?: string;
508
+ /** @enum {string} */
509
+ content_type?: "image" | "audio" | "video" | "text";
510
+ mime_type?: string;
511
+ prompt?: string;
512
+ };
513
+ };
514
+ };
515
+ responses: {
516
+ /** @description Understanding result */
517
+ 200: {
518
+ headers: {
519
+ [name: string]: unknown;
520
+ };
521
+ content?: never;
522
+ };
523
+ };
524
+ };
525
+ delete?: never;
526
+ options?: never;
527
+ head?: never;
528
+ patch?: never;
529
+ trace?: never;
530
+ };
531
+ "/v1/events": {
532
+ parameters: {
533
+ query?: never;
534
+ header?: never;
535
+ path?: never;
536
+ cookie?: never;
537
+ };
538
+ /** Global SSE event stream */
539
+ get: {
540
+ parameters: {
541
+ query?: {
542
+ token?: string;
543
+ tenant_id?: string;
544
+ };
545
+ header?: never;
546
+ path?: never;
547
+ cookie?: never;
548
+ };
549
+ requestBody?: never;
550
+ responses: {
551
+ /** @description SSE stream */
552
+ 200: {
553
+ headers: {
554
+ [name: string]: unknown;
555
+ };
556
+ content: {
557
+ "text/event-stream": string;
558
+ };
559
+ };
560
+ };
561
+ };
562
+ put?: never;
563
+ post?: never;
564
+ delete?: never;
565
+ options?: never;
566
+ head?: never;
567
+ patch?: never;
568
+ trace?: never;
569
+ };
570
+ "/v1/sessions/constellation": {
571
+ parameters: {
572
+ query?: never;
573
+ header?: never;
574
+ path?: never;
575
+ cookie?: never;
576
+ };
577
+ /** Session constellation data for 3D visualization */
578
+ get: {
579
+ parameters: {
580
+ query?: never;
581
+ header?: never;
582
+ path?: never;
583
+ cookie?: never;
584
+ };
585
+ requestBody?: never;
586
+ responses: {
587
+ /** @description Constellation data */
588
+ 200: {
589
+ headers: {
590
+ [name: string]: unknown;
591
+ };
592
+ content?: never;
593
+ };
594
+ };
595
+ };
596
+ put?: never;
597
+ post?: never;
598
+ delete?: never;
599
+ options?: never;
600
+ head?: never;
601
+ patch?: never;
602
+ trace?: never;
603
+ };
604
+ "/v1/sessions/{session_id}/participants": {
605
+ parameters: {
606
+ query?: never;
607
+ header?: never;
608
+ path?: never;
609
+ cookie?: never;
610
+ };
611
+ /** List session participants */
612
+ get: {
613
+ parameters: {
614
+ query?: never;
615
+ header?: never;
616
+ path: {
617
+ session_id: string;
618
+ };
619
+ cookie?: never;
620
+ };
621
+ requestBody?: never;
622
+ responses: {
623
+ /** @description Participant list */
624
+ 200: {
625
+ headers: {
626
+ [name: string]: unknown;
627
+ };
628
+ content?: never;
629
+ };
630
+ };
631
+ };
632
+ put?: never;
633
+ /** Add participant to session */
634
+ post: {
635
+ parameters: {
636
+ query?: never;
637
+ header?: never;
638
+ path: {
639
+ session_id: string;
640
+ };
641
+ cookie?: never;
642
+ };
643
+ requestBody?: never;
644
+ responses: {
645
+ /** @description Added */
646
+ 201: {
647
+ headers: {
648
+ [name: string]: unknown;
649
+ };
650
+ content?: never;
651
+ };
652
+ };
653
+ };
654
+ delete?: never;
655
+ options?: never;
656
+ head?: never;
657
+ patch?: never;
658
+ trace?: never;
659
+ };
660
+ "/v1/sessions/{session_id}/participants/{agent_id}": {
661
+ parameters: {
662
+ query?: never;
663
+ header?: never;
664
+ path?: never;
665
+ cookie?: never;
666
+ };
667
+ get?: never;
668
+ put?: never;
669
+ post?: never;
670
+ /** Remove participant from session */
671
+ delete: {
672
+ parameters: {
673
+ query?: never;
674
+ header?: never;
675
+ path: {
676
+ session_id: string;
677
+ agent_id: string;
678
+ };
679
+ cookie?: never;
680
+ };
681
+ requestBody?: never;
682
+ responses: {
683
+ /** @description Removed */
684
+ 204: {
685
+ headers: {
686
+ [name: string]: unknown;
687
+ };
688
+ content?: never;
689
+ };
690
+ };
691
+ };
692
+ options?: never;
693
+ head?: never;
694
+ patch?: never;
695
+ trace?: never;
696
+ };
697
+ "/v1/sessions/{session_id}/stream": {
698
+ parameters: {
699
+ query?: never;
700
+ header?: never;
701
+ path?: never;
702
+ cookie?: never;
703
+ };
704
+ /**
705
+ * Session-specific SSE stream
706
+ * @description Subscribes to every breadcrumb.created / .updated event in
707
+ * this session + LLM delta events. Recommended for chat views.
708
+ *
709
+ * **Events emitted**:
710
+ * - `connected` — initial handshake; payload `{session_id}`
711
+ * - `delta` — streaming agent narration; `{delta, agent_id, is_final}`
712
+ * - `message` — full breadcrumb as it was created or updated
713
+ * - `thought` — agent reasoning step from the `think` tool
714
+ * - `action` — tool execution state change
715
+ * - `error` — stream-level error
716
+ *
717
+ * **Auth fallback**: EventSource in browsers can't send
718
+ * `Authorization`. Pass the token as `?token=<bearer>` and tenant
719
+ * as `?tenant_id=<uuid>` instead.
720
+ *
721
+ * See `../guides/03-chat-and-sse.md` for the full reconnection
722
+ * pattern.
723
+ */
724
+ get: {
725
+ parameters: {
726
+ query?: {
727
+ /** @description Alternative to Authorization header, for EventSource. */
728
+ token?: string;
729
+ /** @description Alternative to X-Tenant-ID header. */
730
+ tenant_id?: string;
731
+ };
732
+ header?: never;
733
+ path: {
734
+ session_id: string;
735
+ };
736
+ cookie?: never;
737
+ };
738
+ requestBody?: never;
739
+ responses: {
740
+ /** @description SSE stream (text/event-stream) */
741
+ 200: {
742
+ headers: {
743
+ [name: string]: unknown;
744
+ };
745
+ content: {
746
+ "text/event-stream": string;
747
+ };
748
+ };
749
+ 401: components["responses"]["Unauthorized"];
750
+ 403: components["responses"]["Forbidden"];
751
+ };
752
+ };
753
+ put?: never;
754
+ post?: never;
755
+ delete?: never;
756
+ options?: never;
757
+ head?: never;
758
+ patch?: never;
759
+ trace?: never;
760
+ };
761
+ "/v1/sessions/{session_id}/resume": {
762
+ parameters: {
763
+ query?: never;
764
+ header?: never;
765
+ path?: never;
766
+ cookie?: never;
767
+ };
768
+ get?: never;
769
+ put?: never;
770
+ /**
771
+ * Resume a loop-suspended session
772
+ * @description When a session is suspended by the loop detector (> 1000
773
+ * events/minute), this endpoint clears the per-session suspend
774
+ * flag and resets the global circuit breaker. Safe to call any
775
+ * number of times; idempotent when the session isn't suspended.
776
+ *
777
+ * **Status**: implementation stashed locally, landing in a
778
+ * follow-up PR. See `../audit/04-fragility-inventory.md`.
779
+ *
780
+ * See `../operations/loop-detector.md` for the operational
781
+ * background.
782
+ */
783
+ post: {
784
+ parameters: {
785
+ query?: never;
786
+ header?: never;
787
+ path: {
788
+ session_id: string;
789
+ };
790
+ cookie?: never;
791
+ };
792
+ requestBody?: never;
793
+ responses: {
794
+ /** @description Suspend flag cleared. */
795
+ 200: {
796
+ headers: {
797
+ [name: string]: unknown;
798
+ };
799
+ content: {
800
+ "application/json": {
801
+ resumed?: boolean;
802
+ session_id?: string;
803
+ };
804
+ };
805
+ };
806
+ 401: components["responses"]["Unauthorized"];
807
+ 403: components["responses"]["Forbidden"];
808
+ 404: components["responses"]["NotFound"];
809
+ };
810
+ };
811
+ delete?: never;
812
+ options?: never;
813
+ head?: never;
814
+ patch?: never;
815
+ trace?: never;
816
+ };
817
+ "/v1/auth/me": {
818
+ parameters: {
819
+ query?: never;
820
+ header?: never;
821
+ path?: never;
822
+ cookie?: never;
823
+ };
824
+ /** Get current user info */
825
+ get: {
826
+ parameters: {
827
+ query?: never;
828
+ header?: never;
829
+ path?: never;
830
+ cookie?: never;
831
+ };
832
+ requestBody?: never;
833
+ responses: {
834
+ /** @description User info with orgs, tenants, permissions */
835
+ 200: {
836
+ headers: {
837
+ [name: string]: unknown;
838
+ };
839
+ content: {
840
+ "application/json": components["schemas"]["MeResponse"];
841
+ };
842
+ };
843
+ };
844
+ };
845
+ put?: never;
846
+ post?: never;
847
+ delete?: never;
848
+ options?: never;
849
+ head?: never;
850
+ patch?: never;
851
+ trace?: never;
852
+ };
853
+ "/v1/auth/tenants": {
854
+ parameters: {
855
+ query?: never;
856
+ header?: never;
857
+ path?: never;
858
+ cookie?: never;
859
+ };
860
+ /** List user's tenants */
861
+ get: {
862
+ parameters: {
863
+ query?: never;
864
+ header?: never;
865
+ path?: never;
866
+ cookie?: never;
867
+ };
868
+ requestBody?: never;
869
+ responses: {
870
+ /** @description Tenant list */
871
+ 200: {
872
+ headers: {
873
+ [name: string]: unknown;
874
+ };
875
+ content?: never;
876
+ };
877
+ };
878
+ };
879
+ put?: never;
880
+ post?: never;
881
+ delete?: never;
882
+ options?: never;
883
+ head?: never;
884
+ patch?: never;
885
+ trace?: never;
886
+ };
887
+ "/v1/auth/tenants/{id}/select": {
888
+ parameters: {
889
+ query?: never;
890
+ header?: never;
891
+ path?: never;
892
+ cookie?: never;
893
+ };
894
+ get?: never;
895
+ put?: never;
896
+ /** Switch active tenant */
897
+ post: {
898
+ parameters: {
899
+ query?: never;
900
+ header?: never;
901
+ path: {
902
+ id: string;
903
+ };
904
+ cookie?: never;
905
+ };
906
+ requestBody?: never;
907
+ responses: {
908
+ /** @description Tenant selected */
909
+ 200: {
910
+ headers: {
911
+ [name: string]: unknown;
912
+ };
913
+ content?: never;
914
+ };
915
+ };
916
+ };
917
+ delete?: never;
918
+ options?: never;
919
+ head?: never;
920
+ patch?: never;
921
+ trace?: never;
922
+ };
923
+ "/v1/auth/logout": {
924
+ parameters: {
925
+ query?: never;
926
+ header?: never;
927
+ path?: never;
928
+ cookie?: never;
929
+ };
930
+ get?: never;
931
+ put?: never;
932
+ /**
933
+ * Logout
934
+ * @description Server-side this is a no-op — Firebase Auth handles client-side
935
+ * sign-out. Kept for back-compat + audit log hooks.
936
+ */
937
+ post: {
938
+ parameters: {
939
+ query?: never;
940
+ header?: never;
941
+ path?: never;
942
+ cookie?: never;
943
+ };
944
+ requestBody?: never;
945
+ responses: {
946
+ /** @description Logged out */
947
+ 200: {
948
+ headers: {
949
+ [name: string]: unknown;
950
+ };
951
+ content?: never;
952
+ };
953
+ };
954
+ };
955
+ delete?: never;
956
+ options?: never;
957
+ head?: never;
958
+ patch?: never;
959
+ trace?: never;
960
+ };
961
+ "/v1/auth/delete-account": {
962
+ parameters: {
963
+ query?: never;
964
+ header?: never;
965
+ path?: never;
966
+ cookie?: never;
967
+ };
968
+ get?: never;
969
+ put?: never;
970
+ /**
971
+ * Delete the caller's user account (cascade)
972
+ * @description Transactionally removes the user from `platform_admins`,
973
+ * `tenant_members`, `org_members`; deletes any tenant or org that
974
+ * becomes memberless; soft-deletes platform-tenant breadcrumbs
975
+ * tagged `user:<uuid>`; deletes the `users` row.
976
+ *
977
+ * **Known gap**: does NOT delete the Firebase auth principal.
978
+ * The user can sign back in with the same identity. Call
979
+ * `firebaseUser.delete()` client-side after this succeeds.
980
+ *
981
+ * See `../guides/02-auth.md#account-deletion` +
982
+ * `../audit/02-auth-lifecycle.md#account-deletion-cascade`.
983
+ *
984
+ * **Status**: handler landed in PR #146. This OpenAPI branch
985
+ * carries `x-status: stashed` until that PR merges to
986
+ * `development` (at which point this branch will re-merge
987
+ * and the tag drops).
988
+ */
989
+ post: {
990
+ parameters: {
991
+ query?: never;
992
+ header?: never;
993
+ path?: never;
994
+ cookie?: never;
995
+ };
996
+ requestBody?: never;
997
+ responses: {
998
+ /** @description Account deleted */
999
+ 200: {
1000
+ headers: {
1001
+ [name: string]: unknown;
1002
+ };
1003
+ content: {
1004
+ "application/json": {
1005
+ deleted?: boolean;
1006
+ /** Format: uuid */
1007
+ user_id?: string;
1008
+ };
1009
+ };
1010
+ };
1011
+ 401: components["responses"]["Unauthorized"];
1012
+ /** @description Cascade transaction failed. */
1013
+ 500: {
1014
+ headers: {
1015
+ [name: string]: unknown;
1016
+ };
1017
+ content: {
1018
+ "application/json": components["schemas"]["Error"];
1019
+ };
1020
+ };
1021
+ };
1022
+ };
1023
+ delete?: never;
1024
+ options?: never;
1025
+ head?: never;
1026
+ patch?: never;
1027
+ trace?: never;
1028
+ };
1029
+ "/v1/invitations/pending": {
1030
+ parameters: {
1031
+ query?: never;
1032
+ header?: never;
1033
+ path?: never;
1034
+ cookie?: never;
1035
+ };
1036
+ /**
1037
+ * List pending invitations for the current user
1038
+ * @description Returns invitations keyed by the caller's email address. Use
1039
+ * this for the "pending invites" UI on the user's dashboard.
1040
+ *
1041
+ * **Not to be confused with `GET /v1/invitations`**, which is a
1042
+ * stale stub that always returns empty.
1043
+ */
1044
+ get: {
1045
+ parameters: {
1046
+ query?: never;
1047
+ header?: never;
1048
+ path?: never;
1049
+ cookie?: never;
1050
+ };
1051
+ requestBody?: never;
1052
+ responses: {
1053
+ /** @description Pending invitations for the current user. */
1054
+ 200: {
1055
+ headers: {
1056
+ [name: string]: unknown;
1057
+ };
1058
+ content: {
1059
+ "application/json": {
1060
+ invitations?: components["schemas"]["InvitationSummary"][];
1061
+ total?: number;
1062
+ };
1063
+ };
1064
+ };
1065
+ 401: components["responses"]["Unauthorized"];
1066
+ };
1067
+ };
1068
+ put?: never;
1069
+ post?: never;
1070
+ delete?: never;
1071
+ options?: never;
1072
+ head?: never;
1073
+ patch?: never;
1074
+ trace?: never;
1075
+ };
1076
+ "/v1/invitations/accept": {
1077
+ parameters: {
1078
+ query?: never;
1079
+ header?: never;
1080
+ path?: never;
1081
+ cookie?: never;
1082
+ };
1083
+ get?: never;
1084
+ put?: never;
1085
+ /**
1086
+ * Accept an invitation by token
1087
+ * @description Consumes the token emailed by `CreateOrgInvitation` /
1088
+ * `CreateTenantInvitation`, adds the caller to the target org
1089
+ * and/or workspace, marks the invitation `accepted`.
1090
+ *
1091
+ * The entire sequence (membership inserts + status update)
1092
+ * runs inside a single transaction — any failure rolls back
1093
+ * and returns 500. Repeat accepts of the same token succeed
1094
+ * idempotently (via `ON CONFLICT DO NOTHING`).
1095
+ *
1096
+ * **Status**: transactional wrap landed in PR #147. This
1097
+ * docs branch carries `x-status: stashed` until #147 merges
1098
+ * to `development` (at which point this branch will
1099
+ * re-merge and the tag drops).
1100
+ */
1101
+ post: {
1102
+ parameters: {
1103
+ query?: never;
1104
+ header?: never;
1105
+ path?: never;
1106
+ cookie?: never;
1107
+ };
1108
+ requestBody: {
1109
+ content: {
1110
+ "application/json": components["schemas"]["AcceptInvitationRequest"];
1111
+ };
1112
+ };
1113
+ responses: {
1114
+ /** @description Invitation accepted (see quirk above). */
1115
+ 200: {
1116
+ headers: {
1117
+ [name: string]: unknown;
1118
+ };
1119
+ content: {
1120
+ "application/json": {
1121
+ /** @enum {string} */
1122
+ status?: "accepted";
1123
+ /** Format: uuid */
1124
+ org_id?: string | null;
1125
+ /** Format: uuid */
1126
+ tenant_id?: string | null;
1127
+ role?: string;
1128
+ };
1129
+ };
1130
+ };
1131
+ /** @description Invalid or expired token. */
1132
+ 400: {
1133
+ headers: {
1134
+ [name: string]: unknown;
1135
+ };
1136
+ content?: never;
1137
+ };
1138
+ 401: components["responses"]["Unauthorized"];
1139
+ };
1140
+ };
1141
+ delete?: never;
1142
+ options?: never;
1143
+ head?: never;
1144
+ patch?: never;
1145
+ trace?: never;
1146
+ };
1147
+ "/v1/invitations/{invitation_id}/decline": {
1148
+ parameters: {
1149
+ query?: never;
1150
+ header?: never;
1151
+ path?: never;
1152
+ cookie?: never;
1153
+ };
1154
+ get?: never;
1155
+ put?: never;
1156
+ /** Decline an invitation */
1157
+ post: {
1158
+ parameters: {
1159
+ query?: never;
1160
+ header?: never;
1161
+ path: {
1162
+ invitation_id: string;
1163
+ };
1164
+ cookie?: never;
1165
+ };
1166
+ requestBody?: never;
1167
+ responses: {
1168
+ /** @description Declined. */
1169
+ 200: {
1170
+ headers: {
1171
+ [name: string]: unknown;
1172
+ };
1173
+ content?: never;
1174
+ };
1175
+ 404: components["responses"]["NotFound"];
1176
+ };
1177
+ };
1178
+ delete?: never;
1179
+ options?: never;
1180
+ head?: never;
1181
+ patch?: never;
1182
+ trace?: never;
1183
+ };
1184
+ "/v1/invitations/{invitation_id}": {
1185
+ parameters: {
1186
+ query?: never;
1187
+ header?: never;
1188
+ path?: never;
1189
+ cookie?: never;
1190
+ };
1191
+ get?: never;
1192
+ put?: never;
1193
+ post?: never;
1194
+ /** Cancel a pending invitation (inviter action) */
1195
+ delete: {
1196
+ parameters: {
1197
+ query?: never;
1198
+ header?: never;
1199
+ path: {
1200
+ invitation_id: string;
1201
+ };
1202
+ cookie?: never;
1203
+ };
1204
+ requestBody?: never;
1205
+ responses: {
1206
+ /** @description Cancelled. */
1207
+ 204: {
1208
+ headers: {
1209
+ [name: string]: unknown;
1210
+ };
1211
+ content?: never;
1212
+ };
1213
+ 403: components["responses"]["Forbidden"];
1214
+ 404: components["responses"]["NotFound"];
1215
+ };
1216
+ };
1217
+ options?: never;
1218
+ head?: never;
1219
+ patch?: never;
1220
+ trace?: never;
1221
+ };
1222
+ "/v1/user/profile": {
1223
+ parameters: {
1224
+ query?: never;
1225
+ header?: never;
1226
+ path?: never;
1227
+ cookie?: never;
1228
+ };
1229
+ /** Get user profile */
1230
+ get: {
1231
+ parameters: {
1232
+ query?: never;
1233
+ header?: never;
1234
+ path?: never;
1235
+ cookie?: never;
1236
+ };
1237
+ requestBody?: never;
1238
+ responses: {
1239
+ /** @description Profile */
1240
+ 200: {
1241
+ headers: {
1242
+ [name: string]: unknown;
1243
+ };
1244
+ content?: never;
1245
+ };
1246
+ };
1247
+ };
1248
+ put?: never;
1249
+ post?: never;
1250
+ delete?: never;
1251
+ options?: never;
1252
+ head?: never;
1253
+ /** Update user profile */
1254
+ patch: {
1255
+ parameters: {
1256
+ query?: never;
1257
+ header?: never;
1258
+ path?: never;
1259
+ cookie?: never;
1260
+ };
1261
+ requestBody?: never;
1262
+ responses: {
1263
+ /** @description Updated */
1264
+ 200: {
1265
+ headers: {
1266
+ [name: string]: unknown;
1267
+ };
1268
+ content?: never;
1269
+ };
1270
+ };
1271
+ };
1272
+ trace?: never;
1273
+ };
1274
+ "/v1/preview-token": {
1275
+ parameters: {
1276
+ query?: never;
1277
+ header?: never;
1278
+ path?: never;
1279
+ cookie?: never;
1280
+ };
1281
+ get?: never;
1282
+ put?: never;
1283
+ /** Create preview auth token */
1284
+ post: {
1285
+ parameters: {
1286
+ query?: never;
1287
+ header?: never;
1288
+ path?: never;
1289
+ cookie?: never;
1290
+ };
1291
+ requestBody?: never;
1292
+ responses: {
1293
+ /** @description Preview token */
1294
+ 200: {
1295
+ headers: {
1296
+ [name: string]: unknown;
1297
+ };
1298
+ content: {
1299
+ "application/json": {
1300
+ token?: string;
1301
+ /** Format: date-time */
1302
+ expires_at?: string;
1303
+ };
1304
+ };
1305
+ };
1306
+ };
1307
+ };
1308
+ delete?: never;
1309
+ options?: never;
1310
+ head?: never;
1311
+ patch?: never;
1312
+ trace?: never;
1313
+ };
1314
+ "/v1/services": {
1315
+ parameters: {
1316
+ query?: never;
1317
+ header?: never;
1318
+ path?: never;
1319
+ cookie?: never;
1320
+ };
1321
+ /** List service definitions */
1322
+ get: {
1323
+ parameters: {
1324
+ query?: never;
1325
+ header?: never;
1326
+ path?: never;
1327
+ cookie?: never;
1328
+ };
1329
+ requestBody?: never;
1330
+ responses: {
1331
+ /** @description Service list */
1332
+ 200: {
1333
+ headers: {
1334
+ [name: string]: unknown;
1335
+ };
1336
+ content?: never;
1337
+ };
1338
+ };
1339
+ };
1340
+ put?: never;
1341
+ /** Create service definition */
1342
+ post: {
1343
+ parameters: {
1344
+ query?: never;
1345
+ header?: never;
1346
+ path?: never;
1347
+ cookie?: never;
1348
+ };
1349
+ requestBody?: never;
1350
+ responses: {
1351
+ /** @description Created */
1352
+ 201: {
1353
+ headers: {
1354
+ [name: string]: unknown;
1355
+ };
1356
+ content?: never;
1357
+ };
1358
+ };
1359
+ };
1360
+ delete?: never;
1361
+ options?: never;
1362
+ head?: never;
1363
+ patch?: never;
1364
+ trace?: never;
1365
+ };
1366
+ "/v1/services/discover": {
1367
+ parameters: {
1368
+ query?: never;
1369
+ header?: never;
1370
+ path?: never;
1371
+ cookie?: never;
1372
+ };
1373
+ /** Discover available services for tool creation */
1374
+ get: {
1375
+ parameters: {
1376
+ query?: never;
1377
+ header?: never;
1378
+ path?: never;
1379
+ cookie?: never;
1380
+ };
1381
+ requestBody?: never;
1382
+ responses: {
1383
+ /** @description Available services with connection status */
1384
+ 200: {
1385
+ headers: {
1386
+ [name: string]: unknown;
1387
+ };
1388
+ content?: never;
1389
+ };
1390
+ };
1391
+ };
1392
+ put?: never;
1393
+ post?: never;
1394
+ delete?: never;
1395
+ options?: never;
1396
+ head?: never;
1397
+ patch?: never;
1398
+ trace?: never;
1399
+ };
1400
+ "/v1/services/{id}": {
1401
+ parameters: {
1402
+ query?: never;
1403
+ header?: never;
1404
+ path?: never;
1405
+ cookie?: never;
1406
+ };
1407
+ /** Get service definition */
1408
+ get: {
1409
+ parameters: {
1410
+ query?: never;
1411
+ header?: never;
1412
+ path: {
1413
+ id: string;
1414
+ };
1415
+ cookie?: never;
1416
+ };
1417
+ requestBody?: never;
1418
+ responses: {
1419
+ /** @description Service definition */
1420
+ 200: {
1421
+ headers: {
1422
+ [name: string]: unknown;
1423
+ };
1424
+ content?: never;
1425
+ };
1426
+ };
1427
+ };
1428
+ put?: never;
1429
+ post?: never;
1430
+ delete?: never;
1431
+ options?: never;
1432
+ head?: never;
1433
+ patch?: never;
1434
+ trace?: never;
1435
+ };
1436
+ "/v1/services/{id}/resolve": {
1437
+ parameters: {
1438
+ query?: never;
1439
+ header?: never;
1440
+ path?: never;
1441
+ cookie?: never;
1442
+ };
1443
+ /** Resolve service credentials */
1444
+ get: {
1445
+ parameters: {
1446
+ query?: {
1447
+ user_id?: string;
1448
+ session?: string;
1449
+ };
1450
+ header?: never;
1451
+ path: {
1452
+ id: string;
1453
+ };
1454
+ cookie?: never;
1455
+ };
1456
+ requestBody?: never;
1457
+ responses: {
1458
+ /** @description Resolved credentials */
1459
+ 200: {
1460
+ headers: {
1461
+ [name: string]: unknown;
1462
+ };
1463
+ content?: never;
1464
+ };
1465
+ /** @description OAuth grant required */
1466
+ 403: {
1467
+ headers: {
1468
+ [name: string]: unknown;
1469
+ };
1470
+ content?: never;
1471
+ };
1472
+ };
1473
+ };
1474
+ put?: never;
1475
+ post?: never;
1476
+ delete?: never;
1477
+ options?: never;
1478
+ head?: never;
1479
+ patch?: never;
1480
+ trace?: never;
1481
+ };
1482
+ "/v1/services/{id}/token": {
1483
+ parameters: {
1484
+ query?: never;
1485
+ header?: never;
1486
+ path?: never;
1487
+ cookie?: never;
1488
+ };
1489
+ /** Get access token (with cascade) */
1490
+ get: {
1491
+ parameters: {
1492
+ query?: never;
1493
+ header?: never;
1494
+ path: {
1495
+ id: string;
1496
+ };
1497
+ cookie?: never;
1498
+ };
1499
+ requestBody?: never;
1500
+ responses: {
1501
+ /** @description Access token */
1502
+ 200: {
1503
+ headers: {
1504
+ [name: string]: unknown;
1505
+ };
1506
+ content?: never;
1507
+ };
1508
+ };
1509
+ };
1510
+ put?: never;
1511
+ post?: never;
1512
+ delete?: never;
1513
+ options?: never;
1514
+ head?: never;
1515
+ patch?: never;
1516
+ trace?: never;
1517
+ };
1518
+ "/v1/services/{id}/credentials": {
1519
+ parameters: {
1520
+ query?: never;
1521
+ header?: never;
1522
+ path?: never;
1523
+ cookie?: never;
1524
+ };
1525
+ get?: never;
1526
+ put?: never;
1527
+ /** Create API key credential */
1528
+ post: {
1529
+ parameters: {
1530
+ query?: never;
1531
+ header?: never;
1532
+ path: {
1533
+ id: string;
1534
+ };
1535
+ cookie?: never;
1536
+ };
1537
+ requestBody?: never;
1538
+ responses: {
1539
+ /** @description Credential created */
1540
+ 201: {
1541
+ headers: {
1542
+ [name: string]: unknown;
1543
+ };
1544
+ content?: never;
1545
+ };
1546
+ };
1547
+ };
1548
+ delete?: never;
1549
+ options?: never;
1550
+ head?: never;
1551
+ patch?: never;
1552
+ trace?: never;
1553
+ };
1554
+ "/v1/service-configs": {
1555
+ parameters: {
1556
+ query?: never;
1557
+ header?: never;
1558
+ path?: never;
1559
+ cookie?: never;
1560
+ };
1561
+ get?: never;
1562
+ put?: never;
1563
+ /**
1564
+ * Create/update service config
1565
+ * @description Create or upsert a service config at org or tenant scope.
1566
+ *
1567
+ * **Note**: the list form (`GET /v1/service-configs`) previously
1568
+ * existed as a stub but was removed in PR #144 — no consumer
1569
+ * called it, and the per-service form below is the working
1570
+ * pattern. Use `GET /v1/service-configs/{service_id}` instead.
1571
+ */
1572
+ post: {
1573
+ parameters: {
1574
+ query?: never;
1575
+ header?: never;
1576
+ path?: never;
1577
+ cookie?: never;
1578
+ };
1579
+ requestBody?: never;
1580
+ responses: {
1581
+ /** @description Config saved */
1582
+ 200: {
1583
+ headers: {
1584
+ [name: string]: unknown;
1585
+ };
1586
+ content?: never;
1587
+ };
1588
+ };
1589
+ };
1590
+ delete?: never;
1591
+ options?: never;
1592
+ head?: never;
1593
+ patch?: never;
1594
+ trace?: never;
1595
+ };
1596
+ "/v1/service-configs/{service_id}": {
1597
+ parameters: {
1598
+ query?: never;
1599
+ header?: never;
1600
+ path?: never;
1601
+ cookie?: never;
1602
+ };
1603
+ /** Get service config */
1604
+ get: {
1605
+ parameters: {
1606
+ query?: never;
1607
+ header?: never;
1608
+ path: {
1609
+ service_id: string;
1610
+ };
1611
+ cookie?: never;
1612
+ };
1613
+ requestBody?: never;
1614
+ responses: {
1615
+ /** @description Config */
1616
+ 200: {
1617
+ headers: {
1618
+ [name: string]: unknown;
1619
+ };
1620
+ content?: never;
1621
+ };
1622
+ };
1623
+ };
1624
+ put?: never;
1625
+ post?: never;
1626
+ /** Delete service config */
1627
+ delete: {
1628
+ parameters: {
1629
+ query?: never;
1630
+ header?: never;
1631
+ path: {
1632
+ service_id: string;
1633
+ };
1634
+ cookie?: never;
1635
+ };
1636
+ requestBody?: never;
1637
+ responses: {
1638
+ /** @description Deleted */
1639
+ 204: {
1640
+ headers: {
1641
+ [name: string]: unknown;
1642
+ };
1643
+ content?: never;
1644
+ };
1645
+ };
1646
+ };
1647
+ options?: never;
1648
+ head?: never;
1649
+ patch?: never;
1650
+ trace?: never;
1651
+ };
1652
+ "/v1/service-grants": {
1653
+ parameters: {
1654
+ query?: never;
1655
+ header?: never;
1656
+ path?: never;
1657
+ cookie?: never;
1658
+ };
1659
+ /** List OAuth grants for current user */
1660
+ get: {
1661
+ parameters: {
1662
+ query?: never;
1663
+ header?: never;
1664
+ path?: never;
1665
+ cookie?: never;
1666
+ };
1667
+ requestBody?: never;
1668
+ responses: {
1669
+ /** @description Grant list */
1670
+ 200: {
1671
+ headers: {
1672
+ [name: string]: unknown;
1673
+ };
1674
+ content?: never;
1675
+ };
1676
+ };
1677
+ };
1678
+ put?: never;
1679
+ post?: never;
1680
+ delete?: never;
1681
+ options?: never;
1682
+ head?: never;
1683
+ patch?: never;
1684
+ trace?: never;
1685
+ };
1686
+ "/v1/service-grants/{service_id}": {
1687
+ parameters: {
1688
+ query?: never;
1689
+ header?: never;
1690
+ path?: never;
1691
+ cookie?: never;
1692
+ };
1693
+ /** Get grant for a service */
1694
+ get: {
1695
+ parameters: {
1696
+ query?: never;
1697
+ header?: never;
1698
+ path: {
1699
+ service_id: string;
1700
+ };
1701
+ cookie?: never;
1702
+ };
1703
+ requestBody?: never;
1704
+ responses: {
1705
+ /** @description Grant */
1706
+ 200: {
1707
+ headers: {
1708
+ [name: string]: unknown;
1709
+ };
1710
+ content?: never;
1711
+ };
1712
+ };
1713
+ };
1714
+ put?: never;
1715
+ post?: never;
1716
+ /** Revoke grant */
1717
+ delete: {
1718
+ parameters: {
1719
+ query?: never;
1720
+ header?: never;
1721
+ path: {
1722
+ service_id: string;
1723
+ };
1724
+ cookie?: never;
1725
+ };
1726
+ requestBody?: never;
1727
+ responses: {
1728
+ /** @description Revoked */
1729
+ 200: {
1730
+ headers: {
1731
+ [name: string]: unknown;
1732
+ };
1733
+ content?: never;
1734
+ };
1735
+ };
1736
+ };
1737
+ options?: never;
1738
+ head?: never;
1739
+ patch?: never;
1740
+ trace?: never;
1741
+ };
1742
+ "/v1/service-grants/{service_id}/auth/init": {
1743
+ parameters: {
1744
+ query?: never;
1745
+ header?: never;
1746
+ path?: never;
1747
+ cookie?: never;
1748
+ };
1749
+ get?: never;
1750
+ put?: never;
1751
+ /** Start OAuth flow */
1752
+ post: {
1753
+ parameters: {
1754
+ query?: never;
1755
+ header?: never;
1756
+ path: {
1757
+ service_id: string;
1758
+ };
1759
+ cookie?: never;
1760
+ };
1761
+ requestBody?: never;
1762
+ responses: {
1763
+ /** @description Auth URL */
1764
+ 200: {
1765
+ headers: {
1766
+ [name: string]: unknown;
1767
+ };
1768
+ content: {
1769
+ "application/json": {
1770
+ /** Format: uri */
1771
+ auth_url?: string;
1772
+ };
1773
+ };
1774
+ };
1775
+ };
1776
+ };
1777
+ delete?: never;
1778
+ options?: never;
1779
+ head?: never;
1780
+ patch?: never;
1781
+ trace?: never;
1782
+ };
1783
+ "/v1/feed/threads/{id}/dismiss": {
1784
+ parameters: {
1785
+ query?: never;
1786
+ header?: never;
1787
+ path?: never;
1788
+ cookie?: never;
1789
+ };
1790
+ get?: never;
1791
+ put?: never;
1792
+ /** Dismiss feed thread */
1793
+ post: {
1794
+ parameters: {
1795
+ query?: never;
1796
+ header?: never;
1797
+ path: {
1798
+ id: string;
1799
+ };
1800
+ cookie?: never;
1801
+ };
1802
+ requestBody?: never;
1803
+ responses: {
1804
+ /** @description Dismissed */
1805
+ 200: {
1806
+ headers: {
1807
+ [name: string]: unknown;
1808
+ };
1809
+ content?: never;
1810
+ };
1811
+ };
1812
+ };
1813
+ delete?: never;
1814
+ options?: never;
1815
+ head?: never;
1816
+ patch?: never;
1817
+ trace?: never;
1818
+ };
1819
+ "/v1/feed/threads/{id}/read": {
1820
+ parameters: {
1821
+ query?: never;
1822
+ header?: never;
1823
+ path?: never;
1824
+ cookie?: never;
1825
+ };
1826
+ get?: never;
1827
+ put?: never;
1828
+ /** Mark feed thread as read */
1829
+ post: {
1830
+ parameters: {
1831
+ query?: never;
1832
+ header?: never;
1833
+ path: {
1834
+ id: string;
1835
+ };
1836
+ cookie?: never;
1837
+ };
1838
+ requestBody?: never;
1839
+ responses: {
1840
+ /** @description Marked read */
1841
+ 200: {
1842
+ headers: {
1843
+ [name: string]: unknown;
1844
+ };
1845
+ content?: never;
1846
+ };
1847
+ };
1848
+ };
1849
+ delete?: never;
1850
+ options?: never;
1851
+ head?: never;
1852
+ patch?: never;
1853
+ trace?: never;
1854
+ };
1855
+ "/v1/tools/from-spec": {
1856
+ parameters: {
1857
+ query?: never;
1858
+ header?: never;
1859
+ path?: never;
1860
+ cookie?: never;
1861
+ };
1862
+ get?: never;
1863
+ put?: never;
1864
+ /** Create tool from spec */
1865
+ post: {
1866
+ parameters: {
1867
+ query?: never;
1868
+ header?: never;
1869
+ path?: never;
1870
+ cookie?: never;
1871
+ };
1872
+ requestBody?: never;
1873
+ responses: {
1874
+ /** @description Tool created */
1875
+ 201: {
1876
+ headers: {
1877
+ [name: string]: unknown;
1878
+ };
1879
+ content?: never;
1880
+ };
1881
+ };
1882
+ };
1883
+ delete?: never;
1884
+ options?: never;
1885
+ head?: never;
1886
+ patch?: never;
1887
+ trace?: never;
1888
+ };
1889
+ "/v1/agents/from-spec": {
1890
+ parameters: {
1891
+ query?: never;
1892
+ header?: never;
1893
+ path?: never;
1894
+ cookie?: never;
1895
+ };
1896
+ get?: never;
1897
+ put?: never;
1898
+ /** Create agent from spec */
1899
+ post: {
1900
+ parameters: {
1901
+ query?: never;
1902
+ header?: never;
1903
+ path?: never;
1904
+ cookie?: never;
1905
+ };
1906
+ requestBody?: never;
1907
+ responses: {
1908
+ /** @description Agent created */
1909
+ 201: {
1910
+ headers: {
1911
+ [name: string]: unknown;
1912
+ };
1913
+ content?: never;
1914
+ };
1915
+ };
1916
+ };
1917
+ delete?: never;
1918
+ options?: never;
1919
+ head?: never;
1920
+ patch?: never;
1921
+ trace?: never;
1922
+ };
1923
+ "/v1/marketplace": {
1924
+ parameters: {
1925
+ query?: never;
1926
+ header?: never;
1927
+ path?: never;
1928
+ cookie?: never;
1929
+ };
1930
+ /** List marketplace items */
1931
+ get: {
1932
+ parameters: {
1933
+ query?: never;
1934
+ header?: never;
1935
+ path?: never;
1936
+ cookie?: never;
1937
+ };
1938
+ requestBody?: never;
1939
+ responses: {
1940
+ /** @description Item list */
1941
+ 200: {
1942
+ headers: {
1943
+ [name: string]: unknown;
1944
+ };
1945
+ content?: never;
1946
+ };
1947
+ };
1948
+ };
1949
+ put?: never;
1950
+ post?: never;
1951
+ delete?: never;
1952
+ options?: never;
1953
+ head?: never;
1954
+ patch?: never;
1955
+ trace?: never;
1956
+ };
1957
+ "/v1/marketplace/{scope}/{name}": {
1958
+ parameters: {
1959
+ query?: never;
1960
+ header?: never;
1961
+ path?: never;
1962
+ cookie?: never;
1963
+ };
1964
+ /** Get marketplace item */
1965
+ get: {
1966
+ parameters: {
1967
+ query?: never;
1968
+ header?: never;
1969
+ path: {
1970
+ scope: string;
1971
+ name: string;
1972
+ };
1973
+ cookie?: never;
1974
+ };
1975
+ requestBody?: never;
1976
+ responses: {
1977
+ /** @description Item */
1978
+ 200: {
1979
+ headers: {
1980
+ [name: string]: unknown;
1981
+ };
1982
+ content?: never;
1983
+ };
1984
+ };
1985
+ };
1986
+ put?: never;
1987
+ post?: never;
1988
+ /** Delete marketplace item */
1989
+ delete: {
1990
+ parameters: {
1991
+ query?: never;
1992
+ header?: never;
1993
+ path: {
1994
+ scope: string;
1995
+ name: string;
1996
+ };
1997
+ cookie?: never;
1998
+ };
1999
+ requestBody?: never;
2000
+ responses: {
2001
+ /** @description Deleted */
2002
+ 204: {
2003
+ headers: {
2004
+ [name: string]: unknown;
2005
+ };
2006
+ content?: never;
2007
+ };
2008
+ };
2009
+ };
2010
+ options?: never;
2011
+ head?: never;
2012
+ patch?: never;
2013
+ trace?: never;
2014
+ };
2015
+ "/v1/marketplace/install": {
2016
+ parameters: {
2017
+ query?: never;
2018
+ header?: never;
2019
+ path?: never;
2020
+ cookie?: never;
2021
+ };
2022
+ get?: never;
2023
+ put?: never;
2024
+ /** Install marketplace item */
2025
+ post: {
2026
+ parameters: {
2027
+ query?: never;
2028
+ header?: never;
2029
+ path?: never;
2030
+ cookie?: never;
2031
+ };
2032
+ requestBody?: never;
2033
+ responses: {
2034
+ /** @description Installed */
2035
+ 200: {
2036
+ headers: {
2037
+ [name: string]: unknown;
2038
+ };
2039
+ content?: never;
2040
+ };
2041
+ };
2042
+ };
2043
+ delete?: never;
2044
+ options?: never;
2045
+ head?: never;
2046
+ patch?: never;
2047
+ trace?: never;
2048
+ };
2049
+ "/v1/marketplace/installed": {
2050
+ parameters: {
2051
+ query?: never;
2052
+ header?: never;
2053
+ path?: never;
2054
+ cookie?: never;
2055
+ };
2056
+ /** List installed items */
2057
+ get: {
2058
+ parameters: {
2059
+ query?: never;
2060
+ header?: never;
2061
+ path?: never;
2062
+ cookie?: never;
2063
+ };
2064
+ requestBody?: never;
2065
+ responses: {
2066
+ /** @description Installed items */
2067
+ 200: {
2068
+ headers: {
2069
+ [name: string]: unknown;
2070
+ };
2071
+ content?: never;
2072
+ };
2073
+ };
2074
+ };
2075
+ put?: never;
2076
+ post?: never;
2077
+ delete?: never;
2078
+ options?: never;
2079
+ head?: never;
2080
+ patch?: never;
2081
+ trace?: never;
2082
+ };
2083
+ "/v1/marketplace/validate": {
2084
+ parameters: {
2085
+ query?: never;
2086
+ header?: never;
2087
+ path?: never;
2088
+ cookie?: never;
2089
+ };
2090
+ get?: never;
2091
+ put?: never;
2092
+ /** Validate marketplace item */
2093
+ post: {
2094
+ parameters: {
2095
+ query?: never;
2096
+ header?: never;
2097
+ path?: never;
2098
+ cookie?: never;
2099
+ };
2100
+ requestBody?: never;
2101
+ responses: {
2102
+ /** @description Validation result */
2103
+ 200: {
2104
+ headers: {
2105
+ [name: string]: unknown;
2106
+ };
2107
+ content?: never;
2108
+ };
2109
+ };
2110
+ };
2111
+ delete?: never;
2112
+ options?: never;
2113
+ head?: never;
2114
+ patch?: never;
2115
+ trace?: never;
2116
+ };
2117
+ "/v1/marketplace/publish": {
2118
+ parameters: {
2119
+ query?: never;
2120
+ header?: never;
2121
+ path?: never;
2122
+ cookie?: never;
2123
+ };
2124
+ get?: never;
2125
+ put?: never;
2126
+ /** Publish to marketplace */
2127
+ post: {
2128
+ parameters: {
2129
+ query?: never;
2130
+ header?: never;
2131
+ path?: never;
2132
+ cookie?: never;
2133
+ };
2134
+ requestBody?: never;
2135
+ responses: {
2136
+ /** @description Published */
2137
+ 201: {
2138
+ headers: {
2139
+ [name: string]: unknown;
2140
+ };
2141
+ content?: never;
2142
+ };
2143
+ };
2144
+ };
2145
+ delete?: never;
2146
+ options?: never;
2147
+ head?: never;
2148
+ patch?: never;
2149
+ trace?: never;
2150
+ };
2151
+ "/v1/marketplace/bundles": {
2152
+ parameters: {
2153
+ query?: never;
2154
+ header?: never;
2155
+ path?: never;
2156
+ cookie?: never;
2157
+ };
2158
+ /** List bundles */
2159
+ get: {
2160
+ parameters: {
2161
+ query?: never;
2162
+ header?: never;
2163
+ path?: never;
2164
+ cookie?: never;
2165
+ };
2166
+ requestBody?: never;
2167
+ responses: {
2168
+ /** @description Bundle list */
2169
+ 200: {
2170
+ headers: {
2171
+ [name: string]: unknown;
2172
+ };
2173
+ content?: never;
2174
+ };
2175
+ };
2176
+ };
2177
+ put?: never;
2178
+ /** Create bundle */
2179
+ post: {
2180
+ parameters: {
2181
+ query?: never;
2182
+ header?: never;
2183
+ path?: never;
2184
+ cookie?: never;
2185
+ };
2186
+ requestBody?: never;
2187
+ responses: {
2188
+ /** @description Created */
2189
+ 201: {
2190
+ headers: {
2191
+ [name: string]: unknown;
2192
+ };
2193
+ content?: never;
2194
+ };
2195
+ };
2196
+ };
2197
+ delete?: never;
2198
+ options?: never;
2199
+ head?: never;
2200
+ patch?: never;
2201
+ trace?: never;
2202
+ };
2203
+ "/v1/marketplace/bundles/{scope}/{bundle}": {
2204
+ parameters: {
2205
+ query?: never;
2206
+ header?: never;
2207
+ path?: never;
2208
+ cookie?: never;
2209
+ };
2210
+ /** Get bundle */
2211
+ get: {
2212
+ parameters: {
2213
+ query?: never;
2214
+ header?: never;
2215
+ path: {
2216
+ scope: string;
2217
+ bundle: string;
2218
+ };
2219
+ cookie?: never;
2220
+ };
2221
+ requestBody?: never;
2222
+ responses: {
2223
+ /** @description Bundle */
2224
+ 200: {
2225
+ headers: {
2226
+ [name: string]: unknown;
2227
+ };
2228
+ content?: never;
2229
+ };
2230
+ };
2231
+ };
2232
+ /** Update bundle */
2233
+ put: {
2234
+ parameters: {
2235
+ query?: never;
2236
+ header?: never;
2237
+ path: {
2238
+ scope: string;
2239
+ bundle: string;
2240
+ };
2241
+ cookie?: never;
2242
+ };
2243
+ requestBody?: never;
2244
+ responses: {
2245
+ /** @description Updated */
2246
+ 200: {
2247
+ headers: {
2248
+ [name: string]: unknown;
2249
+ };
2250
+ content?: never;
2251
+ };
2252
+ };
2253
+ };
2254
+ post?: never;
2255
+ /** Delete bundle */
2256
+ delete: {
2257
+ parameters: {
2258
+ query?: never;
2259
+ header?: never;
2260
+ path: {
2261
+ scope: string;
2262
+ bundle: string;
2263
+ };
2264
+ cookie?: never;
2265
+ };
2266
+ requestBody?: never;
2267
+ responses: {
2268
+ /** @description Deleted */
2269
+ 204: {
2270
+ headers: {
2271
+ [name: string]: unknown;
2272
+ };
2273
+ content?: never;
2274
+ };
2275
+ };
2276
+ };
2277
+ options?: never;
2278
+ head?: never;
2279
+ patch?: never;
2280
+ trace?: never;
2281
+ };
2282
+ "/v1/marketplace/bundles/{scope}/{bundle}/install": {
2283
+ parameters: {
2284
+ query?: never;
2285
+ header?: never;
2286
+ path?: never;
2287
+ cookie?: never;
2288
+ };
2289
+ get?: never;
2290
+ put?: never;
2291
+ /** Install bundle */
2292
+ post: {
2293
+ parameters: {
2294
+ query?: never;
2295
+ header?: never;
2296
+ path: {
2297
+ scope: string;
2298
+ bundle: string;
2299
+ };
2300
+ cookie?: never;
2301
+ };
2302
+ requestBody?: never;
2303
+ responses: {
2304
+ /** @description Installed */
2305
+ 200: {
2306
+ headers: {
2307
+ [name: string]: unknown;
2308
+ };
2309
+ content?: never;
2310
+ };
2311
+ };
2312
+ };
2313
+ delete?: never;
2314
+ options?: never;
2315
+ head?: never;
2316
+ patch?: never;
2317
+ trace?: never;
2318
+ };
2319
+ "/v1/tree": {
2320
+ parameters: {
2321
+ query?: never;
2322
+ header?: never;
2323
+ path?: never;
2324
+ cookie?: never;
2325
+ };
2326
+ /** Get tree root */
2327
+ get: {
2328
+ parameters: {
2329
+ query?: never;
2330
+ header?: never;
2331
+ path?: never;
2332
+ cookie?: never;
2333
+ };
2334
+ requestBody?: never;
2335
+ responses: {
2336
+ /** @description Root node */
2337
+ 200: {
2338
+ headers: {
2339
+ [name: string]: unknown;
2340
+ };
2341
+ content?: never;
2342
+ };
2343
+ };
2344
+ };
2345
+ put?: never;
2346
+ post?: never;
2347
+ delete?: never;
2348
+ options?: never;
2349
+ head?: never;
2350
+ patch?: never;
2351
+ trace?: never;
2352
+ };
2353
+ "/v1/tree/by-name/{name}": {
2354
+ parameters: {
2355
+ query?: never;
2356
+ header?: never;
2357
+ path?: never;
2358
+ cookie?: never;
2359
+ };
2360
+ /** Find tree node by name */
2361
+ get: {
2362
+ parameters: {
2363
+ query?: never;
2364
+ header?: never;
2365
+ path: {
2366
+ name: string;
2367
+ };
2368
+ cookie?: never;
2369
+ };
2370
+ requestBody?: never;
2371
+ responses: {
2372
+ /** @description Tree node */
2373
+ 200: {
2374
+ headers: {
2375
+ [name: string]: unknown;
2376
+ };
2377
+ content?: never;
2378
+ };
2379
+ };
2380
+ };
2381
+ put?: never;
2382
+ post?: never;
2383
+ delete?: never;
2384
+ options?: never;
2385
+ head?: never;
2386
+ patch?: never;
2387
+ trace?: never;
2388
+ };
2389
+ "/v1/tree/search": {
2390
+ parameters: {
2391
+ query?: never;
2392
+ header?: never;
2393
+ path?: never;
2394
+ cookie?: never;
2395
+ };
2396
+ /** Search tree */
2397
+ get: {
2398
+ parameters: {
2399
+ query?: {
2400
+ q?: string;
2401
+ tag?: string;
2402
+ };
2403
+ header?: never;
2404
+ path?: never;
2405
+ cookie?: never;
2406
+ };
2407
+ requestBody?: never;
2408
+ responses: {
2409
+ /** @description Search results */
2410
+ 200: {
2411
+ headers: {
2412
+ [name: string]: unknown;
2413
+ };
2414
+ content?: never;
2415
+ };
2416
+ };
2417
+ };
2418
+ put?: never;
2419
+ post?: never;
2420
+ delete?: never;
2421
+ options?: never;
2422
+ head?: never;
2423
+ patch?: never;
2424
+ trace?: never;
2425
+ };
2426
+ "/v1/tree/segments": {
2427
+ parameters: {
2428
+ query?: never;
2429
+ header?: never;
2430
+ path?: never;
2431
+ cookie?: never;
2432
+ };
2433
+ /** List all segments */
2434
+ get: {
2435
+ parameters: {
2436
+ query?: never;
2437
+ header?: never;
2438
+ path?: never;
2439
+ cookie?: never;
2440
+ };
2441
+ requestBody?: never;
2442
+ responses: {
2443
+ /** @description Segment list */
2444
+ 200: {
2445
+ headers: {
2446
+ [name: string]: unknown;
2447
+ };
2448
+ content?: never;
2449
+ };
2450
+ };
2451
+ };
2452
+ put?: never;
2453
+ post?: never;
2454
+ delete?: never;
2455
+ options?: never;
2456
+ head?: never;
2457
+ patch?: never;
2458
+ trace?: never;
2459
+ };
2460
+ "/v1/tree/{id}/children": {
2461
+ parameters: {
2462
+ query?: never;
2463
+ header?: never;
2464
+ path?: never;
2465
+ cookie?: never;
2466
+ };
2467
+ /** Get node children */
2468
+ get: {
2469
+ parameters: {
2470
+ query?: never;
2471
+ header?: never;
2472
+ path: {
2473
+ id: string;
2474
+ };
2475
+ cookie?: never;
2476
+ };
2477
+ requestBody?: never;
2478
+ responses: {
2479
+ /** @description Children */
2480
+ 200: {
2481
+ headers: {
2482
+ [name: string]: unknown;
2483
+ };
2484
+ content?: never;
2485
+ };
2486
+ };
2487
+ };
2488
+ put?: never;
2489
+ post?: never;
2490
+ delete?: never;
2491
+ options?: never;
2492
+ head?: never;
2493
+ patch?: never;
2494
+ trace?: never;
2495
+ };
2496
+ "/v1/tree/{id}/ancestors": {
2497
+ parameters: {
2498
+ query?: never;
2499
+ header?: never;
2500
+ path?: never;
2501
+ cookie?: never;
2502
+ };
2503
+ /** Get node ancestors */
2504
+ get: {
2505
+ parameters: {
2506
+ query?: never;
2507
+ header?: never;
2508
+ path: {
2509
+ id: string;
2510
+ };
2511
+ cookie?: never;
2512
+ };
2513
+ requestBody?: never;
2514
+ responses: {
2515
+ /** @description Ancestors */
2516
+ 200: {
2517
+ headers: {
2518
+ [name: string]: unknown;
2519
+ };
2520
+ content?: never;
2521
+ };
2522
+ };
2523
+ };
2524
+ put?: never;
2525
+ post?: never;
2526
+ delete?: never;
2527
+ options?: never;
2528
+ head?: never;
2529
+ patch?: never;
2530
+ trace?: never;
2531
+ };
2532
+ "/v1/tree/{id}/address": {
2533
+ parameters: {
2534
+ query?: never;
2535
+ header?: never;
2536
+ path?: never;
2537
+ cookie?: never;
2538
+ };
2539
+ /** Get SAPL address */
2540
+ get: {
2541
+ parameters: {
2542
+ query?: never;
2543
+ header?: never;
2544
+ path: {
2545
+ id: string;
2546
+ };
2547
+ cookie?: never;
2548
+ };
2549
+ requestBody?: never;
2550
+ responses: {
2551
+ /** @description Address */
2552
+ 200: {
2553
+ headers: {
2554
+ [name: string]: unknown;
2555
+ };
2556
+ content?: never;
2557
+ };
2558
+ };
2559
+ };
2560
+ put?: never;
2561
+ post?: never;
2562
+ delete?: never;
2563
+ options?: never;
2564
+ head?: never;
2565
+ patch?: never;
2566
+ trace?: never;
2567
+ };
2568
+ "/v1/resolve/by-name/{name}": {
2569
+ parameters: {
2570
+ query?: never;
2571
+ header?: never;
2572
+ path?: never;
2573
+ cookie?: never;
2574
+ };
2575
+ /** Resolve content by name */
2576
+ get: {
2577
+ parameters: {
2578
+ query?: never;
2579
+ header?: never;
2580
+ path: {
2581
+ name: string;
2582
+ };
2583
+ cookie?: never;
2584
+ };
2585
+ requestBody?: never;
2586
+ responses: {
2587
+ /** @description Resolved content */
2588
+ 200: {
2589
+ headers: {
2590
+ [name: string]: unknown;
2591
+ };
2592
+ content?: never;
2593
+ };
2594
+ };
2595
+ };
2596
+ put?: never;
2597
+ post?: never;
2598
+ delete?: never;
2599
+ options?: never;
2600
+ head?: never;
2601
+ patch?: never;
2602
+ trace?: never;
2603
+ };
2604
+ "/v1/compose/execute": {
2605
+ parameters: {
2606
+ query?: never;
2607
+ header?: never;
2608
+ path?: never;
2609
+ cookie?: never;
2610
+ };
2611
+ get?: never;
2612
+ put?: never;
2613
+ /** Execute SAPL pipeline */
2614
+ post: {
2615
+ parameters: {
2616
+ query?: never;
2617
+ header?: never;
2618
+ path?: never;
2619
+ cookie?: never;
2620
+ };
2621
+ requestBody?: never;
2622
+ responses: {
2623
+ /** @description Execution result */
2624
+ 200: {
2625
+ headers: {
2626
+ [name: string]: unknown;
2627
+ };
2628
+ content?: never;
2629
+ };
2630
+ };
2631
+ };
2632
+ delete?: never;
2633
+ options?: never;
2634
+ head?: never;
2635
+ patch?: never;
2636
+ trace?: never;
2637
+ };
2638
+ "/v1/compose/validate": {
2639
+ parameters: {
2640
+ query?: never;
2641
+ header?: never;
2642
+ path?: never;
2643
+ cookie?: never;
2644
+ };
2645
+ get?: never;
2646
+ put?: never;
2647
+ /** Validate SAPL composition */
2648
+ post: {
2649
+ parameters: {
2650
+ query?: never;
2651
+ header?: never;
2652
+ path?: never;
2653
+ cookie?: never;
2654
+ };
2655
+ requestBody?: never;
2656
+ responses: {
2657
+ /** @description Validation result */
2658
+ 200: {
2659
+ headers: {
2660
+ [name: string]: unknown;
2661
+ };
2662
+ content?: never;
2663
+ };
2664
+ };
2665
+ };
2666
+ delete?: never;
2667
+ options?: never;
2668
+ head?: never;
2669
+ patch?: never;
2670
+ trace?: never;
2671
+ };
2672
+ "/v1/render/{name}/resolve": {
2673
+ parameters: {
2674
+ query?: never;
2675
+ header?: never;
2676
+ path?: never;
2677
+ cookie?: never;
2678
+ };
2679
+ /** Resolve renderable by name */
2680
+ get: {
2681
+ parameters: {
2682
+ query?: never;
2683
+ header?: never;
2684
+ path: {
2685
+ name: string;
2686
+ };
2687
+ cookie?: never;
2688
+ };
2689
+ requestBody?: never;
2690
+ responses: {
2691
+ /** @description Resolved renderable */
2692
+ 200: {
2693
+ headers: {
2694
+ [name: string]: unknown;
2695
+ };
2696
+ content?: never;
2697
+ };
2698
+ };
2699
+ };
2700
+ put?: never;
2701
+ post?: never;
2702
+ delete?: never;
2703
+ options?: never;
2704
+ head?: never;
2705
+ patch?: never;
2706
+ trace?: never;
2707
+ };
2708
+ "/v1/directory/search": {
2709
+ parameters: {
2710
+ query?: never;
2711
+ header?: never;
2712
+ path?: never;
2713
+ cookie?: never;
2714
+ };
2715
+ /** Search agent directory */
2716
+ get: {
2717
+ parameters: {
2718
+ query?: {
2719
+ q?: string;
2720
+ categories?: string[];
2721
+ };
2722
+ header?: never;
2723
+ path?: never;
2724
+ cookie?: never;
2725
+ };
2726
+ requestBody?: never;
2727
+ responses: {
2728
+ /** @description Search results */
2729
+ 200: {
2730
+ headers: {
2731
+ [name: string]: unknown;
2732
+ };
2733
+ content?: never;
2734
+ };
2735
+ };
2736
+ };
2737
+ put?: never;
2738
+ post?: never;
2739
+ delete?: never;
2740
+ options?: never;
2741
+ head?: never;
2742
+ patch?: never;
2743
+ trace?: never;
2744
+ };
2745
+ "/v1/directory/listings": {
2746
+ parameters: {
2747
+ query?: never;
2748
+ header?: never;
2749
+ path?: never;
2750
+ cookie?: never;
2751
+ };
2752
+ /** List all directory listings */
2753
+ get: {
2754
+ parameters: {
2755
+ query?: never;
2756
+ header?: never;
2757
+ path?: never;
2758
+ cookie?: never;
2759
+ };
2760
+ requestBody?: never;
2761
+ responses: {
2762
+ /** @description All listings */
2763
+ 200: {
2764
+ headers: {
2765
+ [name: string]: unknown;
2766
+ };
2767
+ content?: never;
2768
+ };
2769
+ };
2770
+ };
2771
+ put?: never;
2772
+ post?: never;
2773
+ delete?: never;
2774
+ options?: never;
2775
+ head?: never;
2776
+ patch?: never;
2777
+ trace?: never;
2778
+ };
2779
+ "/v1/directory/listings/{address}": {
2780
+ parameters: {
2781
+ query?: never;
2782
+ header?: never;
2783
+ path?: never;
2784
+ cookie?: never;
2785
+ };
2786
+ /** Get directory listing */
2787
+ get: {
2788
+ parameters: {
2789
+ query?: never;
2790
+ header?: never;
2791
+ path: {
2792
+ address: string;
2793
+ };
2794
+ cookie?: never;
2795
+ };
2796
+ requestBody?: never;
2797
+ responses: {
2798
+ /** @description Listing */
2799
+ 200: {
2800
+ headers: {
2801
+ [name: string]: unknown;
2802
+ };
2803
+ content?: never;
2804
+ };
2805
+ };
2806
+ };
2807
+ put?: never;
2808
+ post?: never;
2809
+ delete?: never;
2810
+ options?: never;
2811
+ head?: never;
2812
+ patch?: never;
2813
+ trace?: never;
2814
+ };
2815
+ "/v1/directory/categories": {
2816
+ parameters: {
2817
+ query?: never;
2818
+ header?: never;
2819
+ path?: never;
2820
+ cookie?: never;
2821
+ };
2822
+ /** List directory categories */
2823
+ get: {
2824
+ parameters: {
2825
+ query?: never;
2826
+ header?: never;
2827
+ path?: never;
2828
+ cookie?: never;
2829
+ };
2830
+ requestBody?: never;
2831
+ responses: {
2832
+ /** @description Categories */
2833
+ 200: {
2834
+ headers: {
2835
+ [name: string]: unknown;
2836
+ };
2837
+ content?: never;
2838
+ };
2839
+ };
2840
+ };
2841
+ put?: never;
2842
+ post?: never;
2843
+ delete?: never;
2844
+ options?: never;
2845
+ head?: never;
2846
+ patch?: never;
2847
+ trace?: never;
2848
+ };
2849
+ "/v1/orgs": {
2850
+ parameters: {
2851
+ query?: never;
2852
+ header?: never;
2853
+ path?: never;
2854
+ cookie?: never;
2855
+ };
2856
+ get?: never;
2857
+ put?: never;
2858
+ /** Create organization */
2859
+ post: {
2860
+ parameters: {
2861
+ query?: never;
2862
+ header?: never;
2863
+ path?: never;
2864
+ cookie?: never;
2865
+ };
2866
+ requestBody?: never;
2867
+ responses: {
2868
+ /** @description Created */
2869
+ 201: {
2870
+ headers: {
2871
+ [name: string]: unknown;
2872
+ };
2873
+ content?: never;
2874
+ };
2875
+ };
2876
+ };
2877
+ delete?: never;
2878
+ options?: never;
2879
+ head?: never;
2880
+ patch?: never;
2881
+ trace?: never;
2882
+ };
2883
+ "/v1/orgs/{org_id}": {
2884
+ parameters: {
2885
+ query?: never;
2886
+ header?: never;
2887
+ path?: never;
2888
+ cookie?: never;
2889
+ };
2890
+ /** Get organization */
2891
+ get: {
2892
+ parameters: {
2893
+ query?: never;
2894
+ header?: never;
2895
+ path: {
2896
+ org_id: string;
2897
+ };
2898
+ cookie?: never;
2899
+ };
2900
+ requestBody?: never;
2901
+ responses: {
2902
+ /** @description Organization */
2903
+ 200: {
2904
+ headers: {
2905
+ [name: string]: unknown;
2906
+ };
2907
+ content?: never;
2908
+ };
2909
+ };
2910
+ };
2911
+ /** Update organization */
2912
+ put: {
2913
+ parameters: {
2914
+ query?: never;
2915
+ header?: never;
2916
+ path: {
2917
+ org_id: string;
2918
+ };
2919
+ cookie?: never;
2920
+ };
2921
+ requestBody?: never;
2922
+ responses: {
2923
+ /** @description Updated */
2924
+ 200: {
2925
+ headers: {
2926
+ [name: string]: unknown;
2927
+ };
2928
+ content?: never;
2929
+ };
2930
+ };
2931
+ };
2932
+ post?: never;
2933
+ /** Delete organization */
2934
+ delete: {
2935
+ parameters: {
2936
+ query?: never;
2937
+ header?: never;
2938
+ path: {
2939
+ org_id: string;
2940
+ };
2941
+ cookie?: never;
2942
+ };
2943
+ requestBody?: never;
2944
+ responses: {
2945
+ /** @description Deleted */
2946
+ 204: {
2947
+ headers: {
2948
+ [name: string]: unknown;
2949
+ };
2950
+ content?: never;
2951
+ };
2952
+ };
2953
+ };
2954
+ options?: never;
2955
+ head?: never;
2956
+ patch?: never;
2957
+ trace?: never;
2958
+ };
2959
+ "/v1/orgs/{org_id}/members": {
2960
+ parameters: {
2961
+ query?: never;
2962
+ header?: never;
2963
+ path?: never;
2964
+ cookie?: never;
2965
+ };
2966
+ /** List org members */
2967
+ get: {
2968
+ parameters: {
2969
+ query?: never;
2970
+ header?: never;
2971
+ path: {
2972
+ org_id: string;
2973
+ };
2974
+ cookie?: never;
2975
+ };
2976
+ requestBody?: never;
2977
+ responses: {
2978
+ /** @description Members */
2979
+ 200: {
2980
+ headers: {
2981
+ [name: string]: unknown;
2982
+ };
2983
+ content?: never;
2984
+ };
2985
+ };
2986
+ };
2987
+ put?: never;
2988
+ /** Add org member */
2989
+ post: {
2990
+ parameters: {
2991
+ query?: never;
2992
+ header?: never;
2993
+ path: {
2994
+ org_id: string;
2995
+ };
2996
+ cookie?: never;
2997
+ };
2998
+ requestBody?: never;
2999
+ responses: {
3000
+ /** @description Added */
3001
+ 201: {
3002
+ headers: {
3003
+ [name: string]: unknown;
3004
+ };
3005
+ content?: never;
3006
+ };
3007
+ };
3008
+ };
3009
+ delete?: never;
3010
+ options?: never;
3011
+ head?: never;
3012
+ patch?: never;
3013
+ trace?: never;
3014
+ };
3015
+ "/v1/orgs/{org_id}/tenants": {
3016
+ parameters: {
3017
+ query?: never;
3018
+ header?: never;
3019
+ path?: never;
3020
+ cookie?: never;
3021
+ };
3022
+ /** List org tenants */
3023
+ get: {
3024
+ parameters: {
3025
+ query?: never;
3026
+ header?: never;
3027
+ path: {
3028
+ org_id: string;
3029
+ };
3030
+ cookie?: never;
3031
+ };
3032
+ requestBody?: never;
3033
+ responses: {
3034
+ /** @description Tenants */
3035
+ 200: {
3036
+ headers: {
3037
+ [name: string]: unknown;
3038
+ };
3039
+ content?: never;
3040
+ };
3041
+ };
3042
+ };
3043
+ put?: never;
3044
+ /** Create tenant in org */
3045
+ post: {
3046
+ parameters: {
3047
+ query?: never;
3048
+ header?: never;
3049
+ path: {
3050
+ org_id: string;
3051
+ };
3052
+ cookie?: never;
3053
+ };
3054
+ requestBody?: never;
3055
+ responses: {
3056
+ /** @description Created */
3057
+ 201: {
3058
+ headers: {
3059
+ [name: string]: unknown;
3060
+ };
3061
+ content?: never;
3062
+ };
3063
+ };
3064
+ };
3065
+ delete?: never;
3066
+ options?: never;
3067
+ head?: never;
3068
+ patch?: never;
3069
+ trace?: never;
3070
+ };
3071
+ "/v1/tenants/{tenant_id}/members": {
3072
+ parameters: {
3073
+ query?: never;
3074
+ header?: never;
3075
+ path?: never;
3076
+ cookie?: never;
3077
+ };
3078
+ /** List tenant members */
3079
+ get: {
3080
+ parameters: {
3081
+ query?: never;
3082
+ header?: never;
3083
+ path: {
3084
+ tenant_id: string;
3085
+ };
3086
+ cookie?: never;
3087
+ };
3088
+ requestBody?: never;
3089
+ responses: {
3090
+ /** @description Members */
3091
+ 200: {
3092
+ headers: {
3093
+ [name: string]: unknown;
3094
+ };
3095
+ content?: never;
3096
+ };
3097
+ };
3098
+ };
3099
+ put?: never;
3100
+ /** Add tenant member */
3101
+ post: {
3102
+ parameters: {
3103
+ query?: never;
3104
+ header?: never;
3105
+ path: {
3106
+ tenant_id: string;
3107
+ };
3108
+ cookie?: never;
3109
+ };
3110
+ requestBody?: never;
3111
+ responses: {
3112
+ /** @description Added */
3113
+ 201: {
3114
+ headers: {
3115
+ [name: string]: unknown;
3116
+ };
3117
+ content?: never;
3118
+ };
3119
+ };
3120
+ };
3121
+ delete?: never;
3122
+ options?: never;
3123
+ head?: never;
3124
+ patch?: never;
3125
+ trace?: never;
3126
+ };
3127
+ "/v1/tenants/{tenant_id}/audit": {
3128
+ parameters: {
3129
+ query?: never;
3130
+ header?: never;
3131
+ path?: never;
3132
+ cookie?: never;
3133
+ };
3134
+ /** Get tenant audit log */
3135
+ get: {
3136
+ parameters: {
3137
+ query?: never;
3138
+ header?: never;
3139
+ path: {
3140
+ tenant_id: string;
3141
+ };
3142
+ cookie?: never;
3143
+ };
3144
+ requestBody?: never;
3145
+ responses: {
3146
+ /** @description Audit log */
3147
+ 200: {
3148
+ headers: {
3149
+ [name: string]: unknown;
3150
+ };
3151
+ content?: never;
3152
+ };
3153
+ };
3154
+ };
3155
+ put?: never;
3156
+ post?: never;
3157
+ delete?: never;
3158
+ options?: never;
3159
+ head?: never;
3160
+ patch?: never;
3161
+ trace?: never;
3162
+ };
3163
+ "/v1/debug/trace": {
3164
+ parameters: {
3165
+ query?: never;
3166
+ header?: never;
3167
+ path?: never;
3168
+ cookie?: never;
3169
+ };
3170
+ /** Debug trace */
3171
+ get: {
3172
+ parameters: {
3173
+ query?: {
3174
+ period?: string;
3175
+ session?: string;
3176
+ };
3177
+ header?: never;
3178
+ path?: never;
3179
+ cookie?: never;
3180
+ };
3181
+ requestBody?: never;
3182
+ responses: {
3183
+ /** @description Trace data */
3184
+ 200: {
3185
+ headers: {
3186
+ [name: string]: unknown;
3187
+ };
3188
+ content?: never;
3189
+ };
3190
+ };
3191
+ };
3192
+ put?: never;
3193
+ post?: never;
3194
+ delete?: never;
3195
+ options?: never;
3196
+ head?: never;
3197
+ patch?: never;
3198
+ trace?: never;
3199
+ };
3200
+ "/v1/context-traces": {
3201
+ parameters: {
3202
+ query?: never;
3203
+ header?: never;
3204
+ path?: never;
3205
+ cookie?: never;
3206
+ };
3207
+ /** List context traces (LOD18 observability) */
3208
+ get: {
3209
+ parameters: {
3210
+ query?: never;
3211
+ header?: never;
3212
+ path?: never;
3213
+ cookie?: never;
3214
+ };
3215
+ requestBody?: never;
3216
+ responses: {
3217
+ /** @description Context traces */
3218
+ 200: {
3219
+ headers: {
3220
+ [name: string]: unknown;
3221
+ };
3222
+ content?: never;
3223
+ };
3224
+ };
3225
+ };
3226
+ put?: never;
3227
+ post?: never;
3228
+ delete?: never;
3229
+ options?: never;
3230
+ head?: never;
3231
+ patch?: never;
3232
+ trace?: never;
3233
+ };
3234
+ "/v1/usage": {
3235
+ parameters: {
3236
+ query?: never;
3237
+ header?: never;
3238
+ path?: never;
3239
+ cookie?: never;
3240
+ };
3241
+ /** Get token usage */
3242
+ get: {
3243
+ parameters: {
3244
+ query?: never;
3245
+ header?: never;
3246
+ path?: never;
3247
+ cookie?: never;
3248
+ };
3249
+ requestBody?: never;
3250
+ responses: {
3251
+ /** @description Usage data */
3252
+ 200: {
3253
+ headers: {
3254
+ [name: string]: unknown;
3255
+ };
3256
+ content?: never;
3257
+ };
3258
+ };
3259
+ };
3260
+ put?: never;
3261
+ post?: never;
3262
+ delete?: never;
3263
+ options?: never;
3264
+ head?: never;
3265
+ patch?: never;
3266
+ trace?: never;
3267
+ };
3268
+ "/v1/system/status": {
3269
+ parameters: {
3270
+ query?: never;
3271
+ header?: never;
3272
+ path?: never;
3273
+ cookie?: never;
3274
+ };
3275
+ /**
3276
+ * System status
3277
+ * @description Public health/status probe used by dashboards.
3278
+ */
3279
+ get: {
3280
+ parameters: {
3281
+ query?: never;
3282
+ header?: never;
3283
+ path?: never;
3284
+ cookie?: never;
3285
+ };
3286
+ requestBody?: never;
3287
+ responses: {
3288
+ /** @description Status */
3289
+ 200: {
3290
+ headers: {
3291
+ [name: string]: unknown;
3292
+ };
3293
+ content?: never;
3294
+ };
3295
+ };
3296
+ };
3297
+ put?: never;
3298
+ post?: never;
3299
+ delete?: never;
3300
+ options?: never;
3301
+ head?: never;
3302
+ patch?: never;
3303
+ trace?: never;
3304
+ };
3305
+ "/v1/system/circuit-breaker": {
3306
+ parameters: {
3307
+ query?: never;
3308
+ header?: never;
3309
+ path?: never;
3310
+ cookie?: never;
3311
+ };
3312
+ /**
3313
+ * Circuit breaker status
3314
+ * @description **Currently public — intended to be locked behind
3315
+ * `INTERNAL_API_KEY`.** Tracked in
3316
+ * [`../audit/04-fragility-inventory.md`](../audit/04-fragility-inventory.md).
3317
+ */
3318
+ get: {
3319
+ parameters: {
3320
+ query?: never;
3321
+ header?: never;
3322
+ path?: never;
3323
+ cookie?: never;
3324
+ };
3325
+ requestBody?: never;
3326
+ responses: {
3327
+ /** @description Status */
3328
+ 200: {
3329
+ headers: {
3330
+ [name: string]: unknown;
3331
+ };
3332
+ content?: never;
3333
+ };
3334
+ };
3335
+ };
3336
+ put?: never;
3337
+ post?: never;
3338
+ delete?: never;
3339
+ options?: never;
3340
+ head?: never;
3341
+ patch?: never;
3342
+ trace?: never;
3343
+ };
3344
+ "/v1/system/pubsub/status": {
3345
+ parameters: {
3346
+ query?: never;
3347
+ header?: never;
3348
+ path?: never;
3349
+ cookie?: never;
3350
+ };
3351
+ /**
3352
+ * Pub/Sub subscription status
3353
+ * @description **Currently public — intended to be locked behind
3354
+ * `INTERNAL_API_KEY`.**
3355
+ */
3356
+ get: {
3357
+ parameters: {
3358
+ query?: never;
3359
+ header?: never;
3360
+ path?: never;
3361
+ cookie?: never;
3362
+ };
3363
+ requestBody?: never;
3364
+ responses: {
3365
+ /** @description Status */
3366
+ 200: {
3367
+ headers: {
3368
+ [name: string]: unknown;
3369
+ };
3370
+ content?: never;
3371
+ };
3372
+ };
3373
+ };
3374
+ put?: never;
3375
+ post?: never;
3376
+ delete?: never;
3377
+ options?: never;
3378
+ head?: never;
3379
+ patch?: never;
3380
+ trace?: never;
3381
+ };
3382
+ "/v1/audio/speech/stream": {
3383
+ parameters: {
3384
+ query?: never;
3385
+ header?: never;
3386
+ path?: never;
3387
+ cookie?: never;
3388
+ };
3389
+ get?: never;
3390
+ put?: never;
3391
+ /** TTS streaming proxy */
3392
+ post: {
3393
+ parameters: {
3394
+ query?: never;
3395
+ header?: never;
3396
+ path?: never;
3397
+ cookie?: never;
3398
+ };
3399
+ requestBody?: never;
3400
+ responses: {
3401
+ /** @description Audio stream */
3402
+ 200: {
3403
+ headers: {
3404
+ [name: string]: unknown;
3405
+ };
3406
+ content?: never;
3407
+ };
3408
+ };
3409
+ };
3410
+ delete?: never;
3411
+ options?: never;
3412
+ head?: never;
3413
+ patch?: never;
3414
+ trace?: never;
3415
+ };
3416
+ "/v1/webhooks/google/calendar": {
3417
+ parameters: {
3418
+ query?: never;
3419
+ header?: never;
3420
+ path?: never;
3421
+ cookie?: never;
3422
+ };
3423
+ get?: never;
3424
+ put?: never;
3425
+ /**
3426
+ * Google Calendar webhook
3427
+ * @description Invoked by Google Calendar watch; validated via channel token.
3428
+ */
3429
+ post: {
3430
+ parameters: {
3431
+ query?: never;
3432
+ header?: never;
3433
+ path?: never;
3434
+ cookie?: never;
3435
+ };
3436
+ requestBody?: never;
3437
+ responses: {
3438
+ /** @description Processed */
3439
+ 200: {
3440
+ headers: {
3441
+ [name: string]: unknown;
3442
+ };
3443
+ content?: never;
3444
+ };
3445
+ };
3446
+ };
3447
+ delete?: never;
3448
+ options?: never;
3449
+ head?: never;
3450
+ patch?: never;
3451
+ trace?: never;
3452
+ };
3453
+ "/v1/webhooks/google/gmail": {
3454
+ parameters: {
3455
+ query?: never;
3456
+ header?: never;
3457
+ path?: never;
3458
+ cookie?: never;
3459
+ };
3460
+ get?: never;
3461
+ put?: never;
3462
+ /** Gmail webhook */
3463
+ post: {
3464
+ parameters: {
3465
+ query?: never;
3466
+ header?: never;
3467
+ path?: never;
3468
+ cookie?: never;
3469
+ };
3470
+ requestBody?: never;
3471
+ responses: {
3472
+ /** @description Processed */
3473
+ 200: {
3474
+ headers: {
3475
+ [name: string]: unknown;
3476
+ };
3477
+ content?: never;
3478
+ };
3479
+ };
3480
+ };
3481
+ delete?: never;
3482
+ options?: never;
3483
+ head?: never;
3484
+ patch?: never;
3485
+ trace?: never;
3486
+ };
3487
+ "/v1/webhooks/google/drive": {
3488
+ parameters: {
3489
+ query?: never;
3490
+ header?: never;
3491
+ path?: never;
3492
+ cookie?: never;
3493
+ };
3494
+ get?: never;
3495
+ put?: never;
3496
+ /** Google Drive webhook */
3497
+ post: {
3498
+ parameters: {
3499
+ query?: never;
3500
+ header?: never;
3501
+ path?: never;
3502
+ cookie?: never;
3503
+ };
3504
+ requestBody?: never;
3505
+ responses: {
3506
+ /** @description Processed */
3507
+ 200: {
3508
+ headers: {
3509
+ [name: string]: unknown;
3510
+ };
3511
+ content?: never;
3512
+ };
3513
+ };
3514
+ };
3515
+ delete?: never;
3516
+ options?: never;
3517
+ head?: never;
3518
+ patch?: never;
3519
+ trace?: never;
3520
+ };
3521
+ "/v1/webhooks/google/chat": {
3522
+ parameters: {
3523
+ query?: never;
3524
+ header?: never;
3525
+ path?: never;
3526
+ cookie?: never;
3527
+ };
3528
+ get?: never;
3529
+ put?: never;
3530
+ /** Google Chat webhook */
3531
+ post: {
3532
+ parameters: {
3533
+ query?: never;
3534
+ header?: never;
3535
+ path?: never;
3536
+ cookie?: never;
3537
+ };
3538
+ requestBody?: never;
3539
+ responses: {
3540
+ /** @description Response */
3541
+ 200: {
3542
+ headers: {
3543
+ [name: string]: unknown;
3544
+ };
3545
+ content?: never;
3546
+ };
3547
+ };
3548
+ };
3549
+ delete?: never;
3550
+ options?: never;
3551
+ head?: never;
3552
+ patch?: never;
3553
+ trace?: never;
3554
+ };
3555
+ }
3556
+ export type webhooks = Record<string, never>;
3557
+ export interface components {
3558
+ schemas: {
3559
+ Breadcrumb: {
3560
+ /** Format: uuid */
3561
+ id?: string;
3562
+ /** Format: uuid */
3563
+ tenant_id?: string;
3564
+ name?: string;
3565
+ title?: string;
3566
+ content?: Record<string, never>;
3567
+ tags?: string[];
3568
+ created_by?: {
3569
+ /** @enum {string} */
3570
+ type?: "user" | "agent" | "system" | "tool";
3571
+ id?: string;
3572
+ };
3573
+ version?: number;
3574
+ /** Format: date-time */
3575
+ created_at?: string;
3576
+ };
3577
+ CreateBreadcrumbRequest: {
3578
+ name?: string;
3579
+ title: string;
3580
+ content: Record<string, never>;
3581
+ tags?: string[];
3582
+ created_by?: {
3583
+ type?: string;
3584
+ id?: string;
3585
+ };
3586
+ /** @default false */
3587
+ upsert: boolean;
3588
+ };
3589
+ UpdateBreadcrumbRequest: {
3590
+ title?: string;
3591
+ content?: Record<string, never>;
3592
+ tags?: string[];
3593
+ version: number;
3594
+ };
3595
+ BreadcrumbResponse: {
3596
+ breadcrumb?: components["schemas"]["Breadcrumb"];
3597
+ /** @enum {string} */
3598
+ action?: "created" | "updated";
3599
+ };
3600
+ MeResponse: {
3601
+ user?: {
3602
+ /** Format: uuid */
3603
+ id?: string;
3604
+ /** Format: email */
3605
+ email?: string;
3606
+ name?: string;
3607
+ /** Format: uri */
3608
+ picture?: string;
3609
+ };
3610
+ is_platform_admin?: boolean;
3611
+ organizations?: {
3612
+ /** Format: uuid */
3613
+ id?: string;
3614
+ name?: string;
3615
+ role?: string;
3616
+ }[];
3617
+ tenants?: {
3618
+ /** Format: uuid */
3619
+ id?: string;
3620
+ name?: string;
3621
+ role?: string;
3622
+ }[];
3623
+ active_tenant?: {
3624
+ /** Format: uuid */
3625
+ id?: string;
3626
+ name?: string;
3627
+ role?: string;
3628
+ };
3629
+ permissions?: string[];
3630
+ grants?: Record<string, never>[];
3631
+ };
3632
+ Error: {
3633
+ /**
3634
+ * @description The backend is mid-migration to the typed `ErrorDetail`
3635
+ * shape. Clients MUST handle both flat-string and typed
3636
+ * forms. See `../guides/07-error-handling.md`.
3637
+ */
3638
+ error: string | components["schemas"]["ErrorDetail"];
3639
+ };
3640
+ ErrorDetail: {
3641
+ /**
3642
+ * @description Stable machine-readable code. SCREAMING_SNAKE_CASE. Safe
3643
+ * to switch on.
3644
+ * @example INVALID_REQUEST
3645
+ */
3646
+ code?: string;
3647
+ /**
3648
+ * @description Human-readable summary.
3649
+ * @example tenant_id is required
3650
+ */
3651
+ message: string;
3652
+ /** @description Optional structured detail (field paths, hints). */
3653
+ details?: {
3654
+ [key: string]: unknown;
3655
+ };
3656
+ };
3657
+ /**
3658
+ * @description Which visual treatment the renderer applies. The agent picks;
3659
+ * the consumer implements all 14. See
3660
+ * `../concepts/05-jit-ui.md`.
3661
+ * @enum {string}
3662
+ */
3663
+ CardLayout: "claim" | "list-feed" | "timeline" | "stat" | "chart" | "compare" | "draft" | "decision" | "rating" | "input" | "progress" | "receipt" | "connect" | "info";
3664
+ CardHeader: {
3665
+ title: string;
3666
+ subtitle?: string;
3667
+ emoji?: string;
3668
+ /** @description Lucide icon name, as an alternative to emoji */
3669
+ icon?: string;
3670
+ /**
3671
+ * @description Drives chart palette + home placement. E.g. `health`,
3672
+ * `finance`, `work`.
3673
+ */
3674
+ domain_tag?: string;
3675
+ };
3676
+ CardAction: {
3677
+ /**
3678
+ * @description What gets PATCHed as `content.status` when tapped. Canonical
3679
+ * values `approved` / `rejected` / `dismissed` / `edited` /
3680
+ * custom.
3681
+ */
3682
+ id: string;
3683
+ label: string;
3684
+ /**
3685
+ * @default ghost
3686
+ * @enum {string}
3687
+ */
3688
+ style: "primary" | "secondary" | "ghost" | "destructive";
3689
+ emoji?: string;
3690
+ /**
3691
+ * @description Optional explicit result payload. Default when not set is
3692
+ * `{status: <id>}`.
3693
+ */
3694
+ result?: Record<string, never>;
3695
+ };
3696
+ CardFooter: {
3697
+ actions?: components["schemas"]["CardAction"][];
3698
+ /** @default false */
3699
+ dismissable: boolean;
3700
+ };
3701
+ ChartSpec: {
3702
+ /** @enum {string} */
3703
+ kind: "spark" | "line" | "bar" | "area" | "ring" | "heatmap" | "histogram";
3704
+ } & {
3705
+ [key: string]: unknown;
3706
+ };
3707
+ /**
3708
+ * @description Layout-specific body shape. Fields used depend on `layout`.
3709
+ * See `../concepts/05-jit-ui.md` for the per-layout contract.
3710
+ */
3711
+ CardBody: {
3712
+ text?: string;
3713
+ rows?: {
3714
+ [key: string]: unknown;
3715
+ }[];
3716
+ metrics?: {
3717
+ [key: string]: unknown;
3718
+ }[];
3719
+ chart?: components["schemas"]["ChartSpec"];
3720
+ draft?: {
3721
+ [key: string]: unknown;
3722
+ };
3723
+ inputs?: {
3724
+ [key: string]: unknown;
3725
+ }[];
3726
+ rating?: {
3727
+ [key: string]: unknown;
3728
+ };
3729
+ progress?: {
3730
+ [key: string]: unknown;
3731
+ };
3732
+ connect?: {
3733
+ service_id?: string;
3734
+ scope_description?: string;
3735
+ account_label?: string;
3736
+ ask_label?: boolean;
3737
+ };
3738
+ columns?: {
3739
+ [key: string]: unknown;
3740
+ }[];
3741
+ } & {
3742
+ [key: string]: unknown;
3743
+ };
3744
+ Card: {
3745
+ layout: components["schemas"]["CardLayout"];
3746
+ header: components["schemas"]["CardHeader"];
3747
+ body?: components["schemas"]["CardBody"];
3748
+ footer?: components["schemas"]["CardFooter"];
3749
+ /**
3750
+ * @default chat
3751
+ * @enum {string}
3752
+ */
3753
+ target: "chat" | "home" | "both";
3754
+ entity_refs?: string[];
3755
+ /**
3756
+ * @description Optional explicit dedupe key. When set, pending-action writes
3757
+ * with the same key within 5 min are dropped. Without this,
3758
+ * implicit dedupe fires on `(layout, service_id, title)` for
3759
+ * connect cards and `(layout, title)` otherwise.
3760
+ */
3761
+ dedupe_key?: string;
3762
+ };
3763
+ ServiceGrantSummary: {
3764
+ /** Format: uuid */
3765
+ id?: string;
3766
+ /** @example google-workspace */
3767
+ service_id?: string;
3768
+ /** @example work */
3769
+ account_label?: string | null;
3770
+ /** Format: email */
3771
+ email?: string | null;
3772
+ scopes?: string[];
3773
+ /** @enum {string} */
3774
+ status?: "connected" | "revoked" | "error";
3775
+ /** Format: date-time */
3776
+ granted_at?: string;
3777
+ };
3778
+ InitiateAuthRequest: {
3779
+ /**
3780
+ * @default per_user
3781
+ * @enum {string}
3782
+ */
3783
+ grant_type: "per_user" | "service_account";
3784
+ /** @description Scope ids from the service's OAuth config. */
3785
+ scopes?: string[];
3786
+ /**
3787
+ * Format: uri
3788
+ * @description Where the browser lands after consent.
3789
+ */
3790
+ redirect_uri?: string;
3791
+ /**
3792
+ * @description Label this grant as a specific account. Lets a user
3793
+ * connect multiple accounts of the same service (e.g. `work`
3794
+ * + `personal` google).
3795
+ */
3796
+ account_label?: string;
3797
+ };
3798
+ InitiateAuthResponse: {
3799
+ /**
3800
+ * Format: uri
3801
+ * @description Provider OAuth URL. Open in a popup / in-app browser; the
3802
+ * provider redirects to our `/v1/oauth/callback` which writes
3803
+ * the grant and redirects to your `redirect_uri`.
3804
+ */
3805
+ auth_url: string;
3806
+ };
3807
+ InvitationSummary: {
3808
+ /** Format: uuid */
3809
+ id?: string;
3810
+ /** Format: uuid */
3811
+ org_id?: string | null;
3812
+ /** Format: uuid */
3813
+ tenant_id?: string | null;
3814
+ /** Format: email */
3815
+ email?: string;
3816
+ /** @example member */
3817
+ role?: string;
3818
+ /** @enum {string} */
3819
+ status?: "pending" | "accepted" | "declined" | "expired" | "cancelled";
3820
+ /** Format: date-time */
3821
+ expires_at?: string;
3822
+ invited_by?: {
3823
+ /** Format: uuid */
3824
+ id?: string;
3825
+ name?: string;
3826
+ };
3827
+ };
3828
+ AcceptInvitationRequest: {
3829
+ /** @description Invitation token from the emailed accept link. */
3830
+ token: string;
3831
+ };
3832
+ };
3833
+ responses: {
3834
+ /** @description Missing or invalid bearer token. */
3835
+ Unauthorized: {
3836
+ headers: {
3837
+ [name: string]: unknown;
3838
+ };
3839
+ content: {
3840
+ "application/json": components["schemas"]["Error"];
3841
+ };
3842
+ };
3843
+ /**
3844
+ * @description Authenticated but not authorised (missing role, wrong workspace,
3845
+ * platform-admin required).
3846
+ */
3847
+ Forbidden: {
3848
+ headers: {
3849
+ [name: string]: unknown;
3850
+ };
3851
+ content: {
3852
+ "application/json": components["schemas"]["Error"];
3853
+ };
3854
+ };
3855
+ /** @description Resource not found or not visible to this workspace. */
3856
+ NotFound: {
3857
+ headers: {
3858
+ [name: string]: unknown;
3859
+ };
3860
+ content: {
3861
+ "application/json": components["schemas"]["Error"];
3862
+ };
3863
+ };
3864
+ /**
3865
+ * @description Optimistic-locking conflict. Refetch, merge, retry with the
3866
+ * new version.
3867
+ */
3868
+ Conflict: {
3869
+ headers: {
3870
+ [name: string]: unknown;
3871
+ };
3872
+ content: {
3873
+ "application/json": components["schemas"]["Error"];
3874
+ };
3875
+ };
3876
+ /**
3877
+ * @description Per-tenant rate limit hit (1000 req/min). Honour
3878
+ * `Retry-After` header.
3879
+ */
3880
+ TooManyRequests: {
3881
+ headers: {
3882
+ /** @description Seconds to wait. */
3883
+ "Retry-After"?: number;
3884
+ [name: string]: unknown;
3885
+ };
3886
+ content: {
3887
+ "application/json": components["schemas"]["Error"];
3888
+ };
3889
+ };
3890
+ };
3891
+ parameters: {
3892
+ BreadcrumbId: string;
3893
+ };
3894
+ requestBodies: never;
3895
+ headers: never;
3896
+ pathItems: never;
3897
+ }
3898
+ export type $defs = Record<string, never>;
3899
+ export type operations = Record<string, never>;
3900
+ //# sourceMappingURL=openapi.d.ts.map