@vibexp/api-client 0.1.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 (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist/axios/client/client.gen.d.ts +2 -0
  4. package/dist/axios/client/client.gen.js +130 -0
  5. package/dist/axios/client/index.d.ts +10 -0
  6. package/dist/axios/client/index.js +6 -0
  7. package/dist/axios/client/types.gen.d.ts +87 -0
  8. package/dist/axios/client/types.gen.js +2 -0
  9. package/dist/axios/client/utils.gen.d.ts +14 -0
  10. package/dist/axios/client/utils.gen.js +168 -0
  11. package/dist/axios/client.gen.d.ts +12 -0
  12. package/dist/axios/client.gen.js +3 -0
  13. package/dist/axios/core/auth.gen.d.ts +25 -0
  14. package/dist/axios/core/auth.gen.js +14 -0
  15. package/dist/axios/core/bodySerializer.gen.d.ts +25 -0
  16. package/dist/axios/core/bodySerializer.gen.js +57 -0
  17. package/dist/axios/core/params.gen.d.ts +43 -0
  18. package/dist/axios/core/params.gen.js +100 -0
  19. package/dist/axios/core/pathSerializer.gen.d.ts +33 -0
  20. package/dist/axios/core/pathSerializer.gen.js +106 -0
  21. package/dist/axios/core/queryKeySerializer.gen.d.ts +18 -0
  22. package/dist/axios/core/queryKeySerializer.gen.js +92 -0
  23. package/dist/axios/core/serverSentEvents.gen.d.ts +71 -0
  24. package/dist/axios/core/serverSentEvents.gen.js +132 -0
  25. package/dist/axios/core/types.gen.d.ts +83 -0
  26. package/dist/axios/core/types.gen.js +2 -0
  27. package/dist/axios/core/utils.gen.d.ts +19 -0
  28. package/dist/axios/core/utils.gen.js +87 -0
  29. package/dist/axios/index.d.ts +2 -0
  30. package/dist/axios/index.js +2 -0
  31. package/dist/axios/sdk.gen.d.ts +1391 -0
  32. package/dist/axios/sdk.gen.js +3600 -0
  33. package/dist/axios/types.gen.d.ts +11043 -0
  34. package/dist/axios/types.gen.js +2 -0
  35. package/dist/axios-entry.d.ts +2 -0
  36. package/dist/axios-entry.js +6 -0
  37. package/dist/index.d.ts +15 -0
  38. package/dist/index.js +17 -0
  39. package/dist/schema.d.ts +18671 -0
  40. package/dist/schema.js +5 -0
  41. package/package.json +51 -0
@@ -0,0 +1,3600 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ import { formDataBodySerializer } from './client';
3
+ import { client } from './client.gen';
4
+ /**
5
+ * Health ping endpoint
6
+ *
7
+ * Simple endpoint to check if the service is running
8
+ */
9
+ export const ping = (options) => (options?.client ?? client).get({
10
+ responseType: 'text',
11
+ url: '/ping',
12
+ ...options
13
+ });
14
+ /**
15
+ * Detailed health check
16
+ *
17
+ * Returns detailed health status of the service
18
+ */
19
+ export const health = (options) => (options?.client ?? client).get({
20
+ responseType: 'json',
21
+ url: '/health',
22
+ ...options
23
+ });
24
+ /**
25
+ * Initiate WorkOS login
26
+ *
27
+ * Generates a CSRF state, stores it in a signed `vx_state` cookie, and returns the
28
+ * WorkOS AuthKit authorization URL. The client should redirect the user to this URL
29
+ * to begin the authentication flow.
30
+ *
31
+ */
32
+ export const login = (options) => (options?.client ?? client).get({
33
+ responseType: 'json',
34
+ url: '/api/v1/auth/login',
35
+ ...options
36
+ });
37
+ /**
38
+ * Handle WorkOS OAuth callback
39
+ *
40
+ * Validates the CSRF `vx_state` cookie, exchanges the authorization code with WorkOS,
41
+ * looks up or creates the user, writes a session cookie, and issues a 302 redirect
42
+ * to the frontend home page. This endpoint is called by the browser after the user
43
+ * authenticates with WorkOS — it does not return a JSON body on success.
44
+ *
45
+ */
46
+ export const authCallback = (options) => (options.client ?? client).get({ url: '/api/v1/auth/callback', ...options });
47
+ /**
48
+ * Log out current user
49
+ *
50
+ * Clears the session cookie and returns a JSON confirmation. After calling this
51
+ * endpoint the client should discard any cached user state and redirect to the
52
+ * login page.
53
+ *
54
+ */
55
+ export const logout = (options) => (options?.client ?? client).post({
56
+ responseType: 'json',
57
+ url: '/api/v1/auth/logout',
58
+ ...options
59
+ });
60
+ /**
61
+ * Dev login (development only)
62
+ *
63
+ * Creates or retrieves a user by email address and sets a session cookie without
64
+ * going through WorkOS. Only available when the server is running in development
65
+ * mode (`DEV_LOGIN_ENABLED=true`). Returns 404 in all other environments.
66
+ *
67
+ */
68
+ export const devLogin = (options) => (options.client ?? client).post({
69
+ responseType: 'json',
70
+ url: '/api/v1/auth/dev/login',
71
+ ...options,
72
+ headers: {
73
+ 'Content-Type': 'application/json',
74
+ ...options.headers
75
+ }
76
+ });
77
+ /**
78
+ * Get current user information
79
+ *
80
+ * Returns information about the currently authenticated user. Authentication is
81
+ * verified via the encrypted session cookie (`vx_session`) set during the WorkOS
82
+ * OAuth flow or dev login.
83
+ *
84
+ */
85
+ export const getMe = (options) => (options?.client ?? client).get({
86
+ responseType: 'json',
87
+ security: [{
88
+ key: 'BearerAuth',
89
+ scheme: 'bearer',
90
+ type: 'http'
91
+ }],
92
+ url: '/api/v1/auth/me',
93
+ ...options
94
+ });
95
+ /**
96
+ * List API keys
97
+ *
98
+ * Retrieves all API keys for the authenticated user
99
+ */
100
+ export const listApiKeys = (options) => (options?.client ?? client).get({
101
+ responseType: 'json',
102
+ security: [{
103
+ key: 'BearerAuth',
104
+ scheme: 'bearer',
105
+ type: 'http'
106
+ }],
107
+ url: '/api/v1/api-keys',
108
+ ...options
109
+ });
110
+ /**
111
+ * Create new API key
112
+ *
113
+ * Creates a new API key for the authenticated user
114
+ */
115
+ export const createApiKey = (options) => (options.client ?? client).post({
116
+ responseType: 'json',
117
+ security: [{
118
+ key: 'BearerAuth',
119
+ scheme: 'bearer',
120
+ type: 'http'
121
+ }],
122
+ url: '/api/v1/api-keys',
123
+ ...options,
124
+ headers: {
125
+ 'Content-Type': 'application/json',
126
+ ...options.headers
127
+ }
128
+ });
129
+ /**
130
+ * Delete API key
131
+ *
132
+ * Deletes an API key by ID
133
+ */
134
+ export const deleteApiKey = (options) => (options.client ?? client).delete({
135
+ responseType: 'json',
136
+ security: [{
137
+ key: 'BearerAuth',
138
+ scheme: 'bearer',
139
+ type: 'http'
140
+ }],
141
+ url: '/api/v1/api-keys/{id}',
142
+ ...options
143
+ });
144
+ /**
145
+ * List API keys (Settings)
146
+ *
147
+ * Retrieves all API keys for the authenticated user (settings route)
148
+ */
149
+ export const listApiKeysSettings = (options) => (options?.client ?? client).get({
150
+ responseType: 'json',
151
+ security: [{
152
+ key: 'BearerAuth',
153
+ scheme: 'bearer',
154
+ type: 'http'
155
+ }],
156
+ url: '/api/v1/settings/api-keys',
157
+ ...options
158
+ });
159
+ /**
160
+ * Create new API key (Settings)
161
+ *
162
+ * Creates a new API key for the authenticated user (settings route)
163
+ */
164
+ export const createApiKeySettings = (options) => (options.client ?? client).post({
165
+ responseType: 'json',
166
+ security: [{
167
+ key: 'BearerAuth',
168
+ scheme: 'bearer',
169
+ type: 'http'
170
+ }],
171
+ url: '/api/v1/settings/api-keys',
172
+ ...options,
173
+ headers: {
174
+ 'Content-Type': 'application/json',
175
+ ...options.headers
176
+ }
177
+ });
178
+ /**
179
+ * Delete API key (Settings)
180
+ *
181
+ * Deletes an API key by ID (settings route)
182
+ */
183
+ export const deleteApiKeySettings = (options) => (options.client ?? client).delete({
184
+ responseType: 'json',
185
+ security: [{
186
+ key: 'BearerAuth',
187
+ scheme: 'bearer',
188
+ type: 'http'
189
+ }],
190
+ url: '/api/v1/settings/api-keys/{id}',
191
+ ...options
192
+ });
193
+ /**
194
+ * Submit support request
195
+ *
196
+ * Submit a support request from an authenticated user. The request is sent to the VibeXP support team
197
+ * via email. Optionally, an acknowledgement email can be sent to the user.
198
+ *
199
+ */
200
+ export const submitSupportRequest = (options) => (options.client ?? client).post({
201
+ responseType: 'json',
202
+ security: [{
203
+ key: 'BearerAuth',
204
+ scheme: 'bearer',
205
+ type: 'http'
206
+ }],
207
+ url: '/api/v1/support/message',
208
+ ...options,
209
+ headers: {
210
+ 'Content-Type': 'application/json',
211
+ ...options.headers
212
+ }
213
+ });
214
+ /**
215
+ * List artifacts
216
+ *
217
+ * Retrieves all artifacts for the specified team with optional filtering
218
+ */
219
+ export const listArtifacts = (options) => (options.client ?? client).get({
220
+ responseType: 'json',
221
+ security: [{
222
+ key: 'BearerAuth',
223
+ scheme: 'bearer',
224
+ type: 'http'
225
+ }],
226
+ url: '/api/v1/{team_id}/artifacts',
227
+ ...options
228
+ });
229
+ /**
230
+ * Create new artifact
231
+ *
232
+ * Creates a new artifact for the authenticated user within the specified team
233
+ */
234
+ export const createArtifact = (options) => (options.client ?? client).post({
235
+ responseType: 'json',
236
+ security: [{
237
+ key: 'BearerAuth',
238
+ scheme: 'bearer',
239
+ type: 'http'
240
+ }],
241
+ url: '/api/v1/{team_id}/artifacts',
242
+ ...options,
243
+ headers: {
244
+ 'Content-Type': 'application/json',
245
+ ...options.headers
246
+ }
247
+ });
248
+ /**
249
+ * Get artifact statistics
250
+ *
251
+ * Returns statistics about artifacts for the specified team
252
+ */
253
+ export const getArtifactStats = (options) => (options.client ?? client).get({
254
+ responseType: 'json',
255
+ security: [{
256
+ key: 'BearerAuth',
257
+ scheme: 'bearer',
258
+ type: 'http'
259
+ }],
260
+ url: '/api/v1/{team_id}/artifacts/stats',
261
+ ...options
262
+ });
263
+ /**
264
+ * List artifacts by project
265
+ *
266
+ * Retrieves artifacts for a specific project within the specified team
267
+ */
268
+ export const listArtifactsByProject = (options) => (options.client ?? client).get({
269
+ responseType: 'json',
270
+ security: [{
271
+ key: 'BearerAuth',
272
+ scheme: 'bearer',
273
+ type: 'http'
274
+ }],
275
+ url: '/api/v1/{team_id}/artifacts/{project_id}',
276
+ ...options
277
+ });
278
+ /**
279
+ * Delete artifact by project and slug
280
+ *
281
+ * Deletes a specific artifact by project ID and slug within the specified team
282
+ */
283
+ export const deleteArtifact = (options) => (options.client ?? client).delete({
284
+ security: [{
285
+ key: 'BearerAuth',
286
+ scheme: 'bearer',
287
+ type: 'http'
288
+ }],
289
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}',
290
+ ...options
291
+ });
292
+ /**
293
+ * Get artifact by project and slug
294
+ *
295
+ * Retrieves a specific artifact by project ID and slug within the specified team
296
+ */
297
+ export const getArtifact = (options) => (options.client ?? client).get({
298
+ responseType: 'json',
299
+ security: [{
300
+ key: 'BearerAuth',
301
+ scheme: 'bearer',
302
+ type: 'http'
303
+ }],
304
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}',
305
+ ...options
306
+ });
307
+ /**
308
+ * Update artifact by project and slug
309
+ *
310
+ * Updates a specific artifact by project ID and slug within the specified team
311
+ */
312
+ export const updateArtifact = (options) => (options.client ?? client).put({
313
+ responseType: 'json',
314
+ security: [{
315
+ key: 'BearerAuth',
316
+ scheme: 'bearer',
317
+ type: 'http'
318
+ }],
319
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}',
320
+ ...options,
321
+ headers: {
322
+ 'Content-Type': 'application/json',
323
+ ...options.headers
324
+ }
325
+ });
326
+ /**
327
+ * List attachments for an owner
328
+ *
329
+ * Returns all attachments for the resource identified by the `owner_type` and `owner_id` query parameters, newest first, plus their combined size.
330
+ *
331
+ */
332
+ export const listAttachments = (options) => (options.client ?? client).get({
333
+ responseType: 'json',
334
+ security: [{
335
+ key: 'BearerAuth',
336
+ scheme: 'bearer',
337
+ type: 'http'
338
+ }],
339
+ url: '/api/v1/{team_id}/attachments',
340
+ ...options
341
+ });
342
+ /**
343
+ * Upload an attachment
344
+ *
345
+ * Uploads a single file (multipart field `file`) as an attachment on the resource identified by `owner_type` + `owner_id`. The owner_type must have a registered authorizer (currently `artifact`, `prompt`, `blueprint`); an unsupported owner_type returns 404. Enforces a 5 MB per-file limit, a 10 MB cumulative limit per owner, and a safe file-type allowlist.
346
+ *
347
+ */
348
+ export const uploadAttachment = (options) => (options.client ?? client).post({
349
+ ...formDataBodySerializer,
350
+ responseType: 'json',
351
+ security: [{
352
+ key: 'BearerAuth',
353
+ scheme: 'bearer',
354
+ type: 'http'
355
+ }],
356
+ url: '/api/v1/{team_id}/attachments',
357
+ ...options,
358
+ headers: {
359
+ 'Content-Type': null,
360
+ ...options.headers
361
+ }
362
+ });
363
+ /**
364
+ * Delete an attachment
365
+ *
366
+ * Deletes the attachment metadata row and the stored object. The attachment id is sufficient; its owner is read from the stored row and authorized via the owner authorizer registry.
367
+ *
368
+ */
369
+ export const deleteAttachment = (options) => (options.client ?? client).delete({
370
+ security: [{
371
+ key: 'BearerAuth',
372
+ scheme: 'bearer',
373
+ type: 'http'
374
+ }],
375
+ url: '/api/v1/{team_id}/attachments/{id}',
376
+ ...options
377
+ });
378
+ /**
379
+ * Download an attachment
380
+ *
381
+ * Streams the attachment file as a download (Content-Disposition: attachment). The attachment id is sufficient; its owner is read from the stored row and authorized via the owner authorizer registry.
382
+ *
383
+ */
384
+ export const downloadAttachment = (options) => (options.client ?? client).get({
385
+ responseType: 'blob',
386
+ security: [{
387
+ key: 'BearerAuth',
388
+ scheme: 'bearer',
389
+ type: 'http'
390
+ }],
391
+ url: '/api/v1/{team_id}/attachments/{id}',
392
+ ...options
393
+ });
394
+ /**
395
+ * List attachments for an artifact
396
+ *
397
+ * Returns all attachments on the artifact, newest first, plus their combined size.
398
+ *
399
+ * @deprecated
400
+ */
401
+ export const listArtifactAttachments = (options) => (options.client ?? client).get({
402
+ responseType: 'json',
403
+ security: [{
404
+ key: 'BearerAuth',
405
+ scheme: 'bearer',
406
+ type: 'http'
407
+ }],
408
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/attachments',
409
+ ...options
410
+ });
411
+ /**
412
+ * Upload an attachment to an artifact
413
+ *
414
+ * Uploads a single file (multipart field `file`) as an attachment on the artifact. Enforces a 5 MB per-file limit, a 10 MB cumulative limit per artifact, and a safe file-type allowlist.
415
+ *
416
+ *
417
+ * @deprecated
418
+ */
419
+ export const uploadArtifactAttachment = (options) => (options.client ?? client).post({
420
+ ...formDataBodySerializer,
421
+ responseType: 'json',
422
+ security: [{
423
+ key: 'BearerAuth',
424
+ scheme: 'bearer',
425
+ type: 'http'
426
+ }],
427
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/attachments',
428
+ ...options,
429
+ headers: {
430
+ 'Content-Type': null,
431
+ ...options.headers
432
+ }
433
+ });
434
+ /**
435
+ * Delete an artifact attachment
436
+ *
437
+ * Deletes the attachment metadata row and the stored object.
438
+ *
439
+ * @deprecated
440
+ */
441
+ export const deleteArtifactAttachment = (options) => (options.client ?? client).delete({
442
+ security: [{
443
+ key: 'BearerAuth',
444
+ scheme: 'bearer',
445
+ type: 'http'
446
+ }],
447
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/attachments/{id}',
448
+ ...options
449
+ });
450
+ /**
451
+ * Download an artifact attachment
452
+ *
453
+ * Streams the attachment file as a download (Content-Disposition attachment).
454
+ *
455
+ * @deprecated
456
+ */
457
+ export const downloadArtifactAttachment = (options) => (options.client ?? client).get({
458
+ responseType: 'blob',
459
+ security: [{
460
+ key: 'BearerAuth',
461
+ scheme: 'bearer',
462
+ type: 'http'
463
+ }],
464
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/attachments/{id}',
465
+ ...options
466
+ });
467
+ /**
468
+ * List artifact content versions
469
+ *
470
+ * Returns the content-version history (newest first) for an artifact
471
+ */
472
+ export const listArtifactVersions = (options) => (options.client ?? client).get({
473
+ responseType: 'json',
474
+ security: [{
475
+ key: 'BearerAuth',
476
+ scheme: 'bearer',
477
+ type: 'http'
478
+ }],
479
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/versions',
480
+ ...options
481
+ });
482
+ /**
483
+ * Get a specific artifact content version
484
+ *
485
+ * Returns a single content-version snapshot of an artifact by version number
486
+ */
487
+ export const getArtifactVersion = (options) => (options.client ?? client).get({
488
+ responseType: 'json',
489
+ security: [{
490
+ key: 'BearerAuth',
491
+ scheme: 'bearer',
492
+ type: 'http'
493
+ }],
494
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/versions/{version_number}',
495
+ ...options
496
+ });
497
+ /**
498
+ * Restore an artifact to a content version
499
+ *
500
+ * Restores the artifact's content to the given version. The pre-restore content is snapshotted as a new version. Returns the updated artifact.
501
+ */
502
+ export const restoreArtifactVersion = (options) => (options.client ?? client).post({
503
+ responseType: 'json',
504
+ security: [{
505
+ key: 'BearerAuth',
506
+ scheme: 'bearer',
507
+ type: 'http'
508
+ }],
509
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/versions/{version_number}/restore',
510
+ ...options
511
+ });
512
+ /**
513
+ * Semantic search across team resources
514
+ *
515
+ * Performs a pgvector cosine-similarity semantic search over the team's prompts, artifacts, blueprints and memories, returning relevance-ranked chunk excerpts for RAG retrieval. One result is returned per matching embedding chunk.
516
+ */
517
+ export const searchTeamResources = (options) => (options.client ?? client).post({
518
+ responseType: 'json',
519
+ security: [{
520
+ key: 'BearerAuth',
521
+ scheme: 'bearer',
522
+ type: 'http'
523
+ }],
524
+ url: '/api/v1/{team_id}/search',
525
+ ...options,
526
+ headers: {
527
+ 'Content-Type': 'application/json',
528
+ ...options.headers
529
+ }
530
+ });
531
+ /**
532
+ * Per-resource daily access metrics
533
+ *
534
+ * Returns a zero-filled daily access timeseries for a single resource, grouped by source (web, cli, mcp, api), for the resource detail-page chart. Every day in the requested range appears even when its count is zero. Free-tier accessible to team members.
535
+ */
536
+ export const getResourceAccessMetrics = (options) => (options.client ?? client).get({
537
+ responseType: 'json',
538
+ security: [{
539
+ key: 'BearerAuth',
540
+ scheme: 'bearer',
541
+ type: 'http'
542
+ }],
543
+ url: '/api/v1/{team_id}/resource-access-metrics',
544
+ ...options
545
+ });
546
+ /**
547
+ * List memories
548
+ *
549
+ * Retrieves all memories for the authenticated user within the specified team with optional filtering
550
+ */
551
+ export const listMemories = (options) => (options.client ?? client).get({
552
+ responseType: 'json',
553
+ security: [{
554
+ key: 'BearerAuth',
555
+ scheme: 'bearer',
556
+ type: 'http'
557
+ }],
558
+ url: '/api/v1/{team_id}/memories',
559
+ ...options
560
+ });
561
+ /**
562
+ * Create new memory
563
+ *
564
+ * Creates a new memory for the authenticated user within the specified team
565
+ */
566
+ export const createMemory = (options) => (options.client ?? client).post({
567
+ responseType: 'json',
568
+ security: [{
569
+ key: 'BearerAuth',
570
+ scheme: 'bearer',
571
+ type: 'http'
572
+ }],
573
+ url: '/api/v1/{team_id}/memories',
574
+ ...options,
575
+ headers: {
576
+ 'Content-Type': 'application/json',
577
+ ...options.headers
578
+ }
579
+ });
580
+ /**
581
+ * Search memories by metadata
582
+ *
583
+ * Searches memories by specific metadata key-value pairs within the specified team
584
+ */
585
+ export const searchMemoriesByMetadata = (options) => (options.client ?? client).get({
586
+ responseType: 'json',
587
+ security: [{
588
+ key: 'BearerAuth',
589
+ scheme: 'bearer',
590
+ type: 'http'
591
+ }],
592
+ url: '/api/v1/{team_id}/memories/search',
593
+ ...options
594
+ });
595
+ /**
596
+ * Delete memory by ID
597
+ *
598
+ * Deletes a specific memory by its ID within the specified team
599
+ */
600
+ export const deleteMemory = (options) => (options.client ?? client).delete({
601
+ security: [{
602
+ key: 'BearerAuth',
603
+ scheme: 'bearer',
604
+ type: 'http'
605
+ }],
606
+ url: '/api/v1/{team_id}/memories/{id}',
607
+ ...options
608
+ });
609
+ /**
610
+ * Get memory by ID
611
+ *
612
+ * Retrieves a specific memory by its ID within the specified team
613
+ */
614
+ export const getMemory = (options) => (options.client ?? client).get({
615
+ responseType: 'json',
616
+ security: [{
617
+ key: 'BearerAuth',
618
+ scheme: 'bearer',
619
+ type: 'http'
620
+ }],
621
+ url: '/api/v1/{team_id}/memories/{id}',
622
+ ...options
623
+ });
624
+ /**
625
+ * Update memory by ID
626
+ *
627
+ * Updates a specific memory by its ID within the specified team
628
+ */
629
+ export const updateMemory = (options) => (options.client ?? client).put({
630
+ responseType: 'json',
631
+ security: [{
632
+ key: 'BearerAuth',
633
+ scheme: 'bearer',
634
+ type: 'http'
635
+ }],
636
+ url: '/api/v1/{team_id}/memories/{id}',
637
+ ...options,
638
+ headers: {
639
+ 'Content-Type': 'application/json',
640
+ ...options.headers
641
+ }
642
+ });
643
+ /**
644
+ * List memory content versions
645
+ *
646
+ * Returns the content-version history (newest first) for a memory
647
+ */
648
+ export const listMemoryVersions = (options) => (options.client ?? client).get({
649
+ responseType: 'json',
650
+ security: [{
651
+ key: 'BearerAuth',
652
+ scheme: 'bearer',
653
+ type: 'http'
654
+ }],
655
+ url: '/api/v1/{team_id}/memories/{id}/versions',
656
+ ...options
657
+ });
658
+ /**
659
+ * Get a specific memory content version
660
+ *
661
+ * Returns a single content-version snapshot of a memory by version number
662
+ */
663
+ export const getMemoryVersion = (options) => (options.client ?? client).get({
664
+ responseType: 'json',
665
+ security: [{
666
+ key: 'BearerAuth',
667
+ scheme: 'bearer',
668
+ type: 'http'
669
+ }],
670
+ url: '/api/v1/{team_id}/memories/{id}/versions/{version_number}',
671
+ ...options
672
+ });
673
+ /**
674
+ * Restore a memory to a content version
675
+ *
676
+ * Restores the memory's text to the given version. The pre-restore text is snapshotted as a new version. Returns the updated memory.
677
+ */
678
+ export const restoreMemoryVersion = (options) => (options.client ?? client).post({
679
+ responseType: 'json',
680
+ security: [{
681
+ key: 'BearerAuth',
682
+ scheme: 'bearer',
683
+ type: 'http'
684
+ }],
685
+ url: '/api/v1/{team_id}/memories/{id}/versions/{version_number}/restore',
686
+ ...options
687
+ });
688
+ /**
689
+ * Get project statistics
690
+ *
691
+ * Returns resource counts for a specific project within the specified team.
692
+ */
693
+ export const getProjectStats = (options) => (options.client ?? client).get({
694
+ responseType: 'json',
695
+ security: [{
696
+ key: 'BearerAuth',
697
+ scheme: 'bearer',
698
+ type: 'http'
699
+ }],
700
+ url: '/api/v1/{team_id}/projects/{slug}/stats',
701
+ ...options
702
+ });
703
+ /**
704
+ * Per-project daily resource-creation metrics
705
+ *
706
+ * Returns a zero-filled daily creation timeseries for a single project, counting prompts, artifacts, blueprints, and memories created on each day, for the project detail-page chart. Every day in the requested range appears even when its count is zero. Authorized via team ownership/membership (same boundary as the project stats endpoint).
707
+ */
708
+ export const getProjectResourceCreationMetrics = (options) => (options.client ?? client).get({
709
+ responseType: 'json',
710
+ security: [{
711
+ key: 'BearerAuth',
712
+ scheme: 'bearer',
713
+ type: 'http'
714
+ }],
715
+ url: '/api/v1/{team_id}/projects/{slug}/resource-creation-metrics',
716
+ ...options
717
+ });
718
+ /**
719
+ * List spec libraries
720
+ *
721
+ * Retrieves all spec libraries for the authenticated user with optional filtering and pagination
722
+ */
723
+ export const listSpecLibraries = (options) => (options.client ?? client).get({
724
+ responseType: 'json',
725
+ security: [{
726
+ key: 'BearerAuth',
727
+ scheme: 'bearer',
728
+ type: 'http'
729
+ }],
730
+ url: '/api/v1/{team_id}/blueprints',
731
+ ...options
732
+ });
733
+ /**
734
+ * Create new spec library
735
+ *
736
+ * Creates a new spec library for the authenticated user. Spec libraries are used to store API specifications (OpenAPI, AsyncAPI, etc.) and other technical documentation.
737
+ */
738
+ export const createBlueprint = (options) => (options.client ?? client).post({
739
+ responseType: 'json',
740
+ security: [{
741
+ key: 'BearerAuth',
742
+ scheme: 'bearer',
743
+ type: 'http'
744
+ }],
745
+ url: '/api/v1/{team_id}/blueprints',
746
+ ...options,
747
+ headers: {
748
+ 'Content-Type': 'application/json',
749
+ ...options.headers
750
+ }
751
+ });
752
+ /**
753
+ * Get spec library statistics
754
+ *
755
+ * Returns statistics about user's spec libraries including counts by type, status, and recent additions
756
+ */
757
+ export const getBlueprintStats = (options) => (options.client ?? client).get({
758
+ responseType: 'json',
759
+ security: [{
760
+ key: 'BearerAuth',
761
+ scheme: 'bearer',
762
+ type: 'http'
763
+ }],
764
+ url: '/api/v1/{team_id}/blueprints/stats',
765
+ ...options
766
+ });
767
+ /**
768
+ * List spec libraries by project
769
+ *
770
+ * Retrieves spec libraries for a specific project with optional filtering
771
+ */
772
+ export const listSpecLibrariesByProject = (options) => (options.client ?? client).get({
773
+ responseType: 'json',
774
+ security: [{
775
+ key: 'BearerAuth',
776
+ scheme: 'bearer',
777
+ type: 'http'
778
+ }],
779
+ url: '/api/v1/{team_id}/blueprints/{project_id}',
780
+ ...options
781
+ });
782
+ /**
783
+ * Delete spec library by project and slug
784
+ *
785
+ * Deletes a specific spec library by project name and slug. This also deletes associated embeddings.
786
+ */
787
+ export const deleteBlueprint = (options) => (options.client ?? client).delete({
788
+ security: [{
789
+ key: 'BearerAuth',
790
+ scheme: 'bearer',
791
+ type: 'http'
792
+ }],
793
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}',
794
+ ...options
795
+ });
796
+ /**
797
+ * Get spec library by project and slug
798
+ *
799
+ * Retrieves a specific spec library by project name and slug
800
+ */
801
+ export const getBlueprint = (options) => (options.client ?? client).get({
802
+ responseType: 'json',
803
+ security: [{
804
+ key: 'BearerAuth',
805
+ scheme: 'bearer',
806
+ type: 'http'
807
+ }],
808
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}',
809
+ ...options
810
+ });
811
+ /**
812
+ * Update spec library by project and slug
813
+ *
814
+ * Updates a specific spec library by project name and slug. All fields in the request body are optional - only provided fields will be updated.
815
+ */
816
+ export const updateBlueprint = (options) => (options.client ?? client).put({
817
+ responseType: 'json',
818
+ security: [{
819
+ key: 'BearerAuth',
820
+ scheme: 'bearer',
821
+ type: 'http'
822
+ }],
823
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}',
824
+ ...options,
825
+ headers: {
826
+ 'Content-Type': 'application/json',
827
+ ...options.headers
828
+ }
829
+ });
830
+ /**
831
+ * List blueprint content versions
832
+ *
833
+ * Returns the content-version history (newest first) for a blueprint
834
+ */
835
+ export const listBlueprintVersions = (options) => (options.client ?? client).get({
836
+ responseType: 'json',
837
+ security: [{
838
+ key: 'BearerAuth',
839
+ scheme: 'bearer',
840
+ type: 'http'
841
+ }],
842
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}/versions',
843
+ ...options
844
+ });
845
+ /**
846
+ * Get a specific blueprint content version
847
+ *
848
+ * Returns a single content-version snapshot of a blueprint by version number
849
+ */
850
+ export const getBlueprintVersion = (options) => (options.client ?? client).get({
851
+ responseType: 'json',
852
+ security: [{
853
+ key: 'BearerAuth',
854
+ scheme: 'bearer',
855
+ type: 'http'
856
+ }],
857
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}/versions/{version_number}',
858
+ ...options
859
+ });
860
+ /**
861
+ * Restore a blueprint to a content version
862
+ *
863
+ * Restores the blueprint's content to the given version. The pre-restore content is snapshotted as a new version. Returns the updated blueprint.
864
+ */
865
+ export const restoreBlueprintVersion = (options) => (options.client ?? client).post({
866
+ responseType: 'json',
867
+ security: [{
868
+ key: 'BearerAuth',
869
+ scheme: 'bearer',
870
+ type: 'http'
871
+ }],
872
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}/versions/{version_number}/restore',
873
+ ...options
874
+ });
875
+ /**
876
+ * Delete Claude Code session
877
+ *
878
+ * Deletes a specific Claude Code session and all associated hook data
879
+ */
880
+ export const deleteClaudeCodeSession = (options) => (options.client ?? client).delete({
881
+ security: [{
882
+ key: 'BearerAuth',
883
+ scheme: 'bearer',
884
+ type: 'http'
885
+ }],
886
+ url: '/api/v1/ai-tools/claude-code/sessions/{session_id}',
887
+ ...options
888
+ });
889
+ /**
890
+ * Delete Cursor IDE session
891
+ *
892
+ * Deletes a specific Cursor IDE session and all associated hook data
893
+ */
894
+ export const deleteCursorIdeSession = (options) => (options.client ?? client).delete({
895
+ security: [{
896
+ key: 'BearerAuth',
897
+ scheme: 'bearer',
898
+ type: 'http'
899
+ }],
900
+ url: '/api/v1/ai-tools/cursor-ide/sessions/{session_id}',
901
+ ...options
902
+ });
903
+ /**
904
+ * Get resource usage statistics
905
+ *
906
+ * Returns resource usage information for the authenticated user
907
+ */
908
+ export const getResourceUsage = (options) => (options?.client ?? client).get({
909
+ responseType: 'json',
910
+ security: [{
911
+ key: 'BearerAuth',
912
+ scheme: 'bearer',
913
+ type: 'http'
914
+ }],
915
+ url: '/api/v1/resource-usage',
916
+ ...options
917
+ });
918
+ /**
919
+ * List prompts
920
+ *
921
+ * Retrieves a paginated list of prompts for the specified team with optional filtering.
922
+ *
923
+ */
924
+ export const listPrompts = (options) => (options.client ?? client).get({
925
+ responseType: 'json',
926
+ security: [{
927
+ key: 'BearerAuth',
928
+ scheme: 'bearer',
929
+ type: 'http'
930
+ }],
931
+ url: '/api/v1/{team_id}/prompts',
932
+ ...options
933
+ });
934
+ /**
935
+ * Create a new prompt
936
+ *
937
+ * Creates a new prompt template for the specified team. The prompt can be used to store
938
+ * reusable AI instructions with placeholders and references.
939
+ *
940
+ */
941
+ export const createPrompt = (options) => (options.client ?? client).post({
942
+ responseType: 'json',
943
+ security: [{
944
+ key: 'BearerAuth',
945
+ scheme: 'bearer',
946
+ type: 'http'
947
+ }],
948
+ url: '/api/v1/{team_id}/prompts',
949
+ ...options,
950
+ headers: {
951
+ 'Content-Type': 'application/json',
952
+ ...options.headers
953
+ }
954
+ });
955
+ /**
956
+ * Get prompt labels
957
+ *
958
+ * Retrieves all unique labels used across prompts for the specified team.
959
+ *
960
+ */
961
+ export const getPromptLabels = (options) => (options.client ?? client).get({
962
+ responseType: 'json',
963
+ security: [{
964
+ key: 'BearerAuth',
965
+ scheme: 'bearer',
966
+ type: 'http'
967
+ }],
968
+ url: '/api/v1/{team_id}/prompts/labels',
969
+ ...options
970
+ });
971
+ /**
972
+ * Delete a prompt
973
+ *
974
+ * Deletes a prompt and its associated embeddings for the specified team.
975
+ *
976
+ */
977
+ export const deletePrompt = (options) => (options.client ?? client).delete({
978
+ security: [{
979
+ key: 'BearerAuth',
980
+ scheme: 'bearer',
981
+ type: 'http'
982
+ }],
983
+ url: '/api/v1/{team_id}/prompts/{slug}',
984
+ ...options
985
+ });
986
+ /**
987
+ * Get a prompt by slug
988
+ *
989
+ * Retrieves a specific prompt by its slug identifier for the specified team.
990
+ *
991
+ */
992
+ export const getPrompt = (options) => (options.client ?? client).get({
993
+ responseType: 'json',
994
+ security: [{
995
+ key: 'BearerAuth',
996
+ scheme: 'bearer',
997
+ type: 'http'
998
+ }],
999
+ url: '/api/v1/{team_id}/prompts/{slug}',
1000
+ ...options
1001
+ });
1002
+ /**
1003
+ * Update a prompt
1004
+ *
1005
+ * Updates an existing prompt for the specified team. All fields are optional.
1006
+ *
1007
+ */
1008
+ export const updatePrompt = (options) => (options.client ?? client).put({
1009
+ responseType: 'json',
1010
+ security: [{
1011
+ key: 'BearerAuth',
1012
+ scheme: 'bearer',
1013
+ type: 'http'
1014
+ }],
1015
+ url: '/api/v1/{team_id}/prompts/{slug}',
1016
+ ...options,
1017
+ headers: {
1018
+ 'Content-Type': 'application/json',
1019
+ ...options.headers
1020
+ }
1021
+ });
1022
+ /**
1023
+ * Get prompt placeholders
1024
+ *
1025
+ * Extracts and returns all placeholders (e.g., {{variable}}) found in the prompt body.
1026
+ *
1027
+ */
1028
+ export const getPromptPlaceholders = (options) => (options.client ?? client).get({
1029
+ responseType: 'json',
1030
+ security: [{
1031
+ key: 'BearerAuth',
1032
+ scheme: 'bearer',
1033
+ type: 'http'
1034
+ }],
1035
+ url: '/api/v1/{team_id}/prompts/{slug}/placeholders',
1036
+ ...options
1037
+ });
1038
+ /**
1039
+ * Get prompt dependencies
1040
+ *
1041
+ * Returns prompts that reference this prompt using @references syntax.
1042
+ *
1043
+ */
1044
+ export const getPromptDependencies = (options) => (options.client ?? client).get({
1045
+ responseType: 'json',
1046
+ security: [{
1047
+ key: 'BearerAuth',
1048
+ scheme: 'bearer',
1049
+ type: 'http'
1050
+ }],
1051
+ url: '/api/v1/{team_id}/prompts/{slug}/dependencies',
1052
+ ...options
1053
+ });
1054
+ /**
1055
+ * Render a prompt
1056
+ *
1057
+ * Renders a prompt by resolving @references and substituting placeholders with provided values.
1058
+ *
1059
+ */
1060
+ export const renderPrompt = (options) => (options.client ?? client).post({
1061
+ responseType: 'json',
1062
+ security: [{
1063
+ key: 'BearerAuth',
1064
+ scheme: 'bearer',
1065
+ type: 'http'
1066
+ }],
1067
+ url: '/api/v1/{team_id}/prompts/{slug}/render',
1068
+ ...options,
1069
+ headers: {
1070
+ 'Content-Type': 'application/json',
1071
+ ...options.headers
1072
+ }
1073
+ });
1074
+ /**
1075
+ * Delete prompt share
1076
+ *
1077
+ * Removes the share for a prompt, making it no longer accessible via the shared link
1078
+ */
1079
+ export const deletePromptShare = (options) => (options.client ?? client).delete({
1080
+ security: [{
1081
+ key: 'BearerAuth',
1082
+ scheme: 'bearer',
1083
+ type: 'http'
1084
+ }],
1085
+ url: '/api/v1/{team_id}/prompts/{slug}/share',
1086
+ ...options
1087
+ });
1088
+ /**
1089
+ * Get prompt share details
1090
+ *
1091
+ * Retrieves the share configuration for a prompt
1092
+ */
1093
+ export const getPromptShare = (options) => (options.client ?? client).get({
1094
+ responseType: 'json',
1095
+ security: [{
1096
+ key: 'BearerAuth',
1097
+ scheme: 'bearer',
1098
+ type: 'http'
1099
+ }],
1100
+ url: '/api/v1/{team_id}/prompts/{slug}/share',
1101
+ ...options
1102
+ });
1103
+ /**
1104
+ * Create or update prompt share
1105
+ *
1106
+ * Creates or updates a share for a prompt. Supports two share types:
1107
+ * - `public`: Anyone with the link can access the prompt
1108
+ * - `restricted`: Only specific email addresses can access the prompt
1109
+ *
1110
+ */
1111
+ export const createPromptShare = (options) => (options.client ?? client).post({
1112
+ responseType: 'json',
1113
+ security: [{
1114
+ key: 'BearerAuth',
1115
+ scheme: 'bearer',
1116
+ type: 'http'
1117
+ }],
1118
+ url: '/api/v1/{team_id}/prompts/{slug}/share',
1119
+ ...options,
1120
+ headers: {
1121
+ 'Content-Type': 'application/json',
1122
+ ...options.headers
1123
+ }
1124
+ });
1125
+ /**
1126
+ * List prompt content versions
1127
+ *
1128
+ * Returns the content-version history (newest first) for a prompt. Each snapshot holds the raw prompt Body template (placeholders and @slug references), not any rendered output.
1129
+ */
1130
+ export const listPromptVersions = (options) => (options.client ?? client).get({
1131
+ responseType: 'json',
1132
+ security: [{
1133
+ key: 'BearerAuth',
1134
+ scheme: 'bearer',
1135
+ type: 'http'
1136
+ }],
1137
+ url: '/api/v1/{team_id}/prompts/{slug}/versions',
1138
+ ...options
1139
+ });
1140
+ /**
1141
+ * Get a specific prompt content version
1142
+ *
1143
+ * Returns a single content-version snapshot of a prompt by version number
1144
+ */
1145
+ export const getPromptVersion = (options) => (options.client ?? client).get({
1146
+ responseType: 'json',
1147
+ security: [{
1148
+ key: 'BearerAuth',
1149
+ scheme: 'bearer',
1150
+ type: 'http'
1151
+ }],
1152
+ url: '/api/v1/{team_id}/prompts/{slug}/versions/{version_number}',
1153
+ ...options
1154
+ });
1155
+ /**
1156
+ * Restore a prompt to a content version
1157
+ *
1158
+ * Restores the prompt's raw Body template to the given version. The pre-restore body is snapshotted as a new version, so restore is non-destructive and preserves placeholders and @slug references. Returns the updated prompt.
1159
+ */
1160
+ export const restorePromptVersion = (options) => (options.client ?? client).post({
1161
+ responseType: 'json',
1162
+ security: [{
1163
+ key: 'BearerAuth',
1164
+ scheme: 'bearer',
1165
+ type: 'http'
1166
+ }],
1167
+ url: '/api/v1/{team_id}/prompts/{slug}/versions/{version_number}/restore',
1168
+ ...options
1169
+ });
1170
+ /**
1171
+ * Get prompt gallery categories
1172
+ *
1173
+ * Retrieves all prompt categories with counts
1174
+ */
1175
+ export const getPromptGalleryCategories = (options) => (options?.client ?? client).get({
1176
+ responseType: 'json',
1177
+ security: [{
1178
+ key: 'BearerAuth',
1179
+ scheme: 'bearer',
1180
+ type: 'http'
1181
+ }],
1182
+ url: '/api/v1/prompt-gallery/categories',
1183
+ ...options
1184
+ });
1185
+ /**
1186
+ * List prompt gallery prompts
1187
+ *
1188
+ * Retrieves prompts from the gallery with optional filtering
1189
+ */
1190
+ export const listPromptGalleryPrompts = (options) => (options?.client ?? client).get({
1191
+ responseType: 'json',
1192
+ security: [{
1193
+ key: 'BearerAuth',
1194
+ scheme: 'bearer',
1195
+ type: 'http'
1196
+ }],
1197
+ url: '/api/v1/prompt-gallery/prompts',
1198
+ ...options
1199
+ });
1200
+ /**
1201
+ * Get prompt gallery prompt by ID
1202
+ *
1203
+ * Retrieves a specific prompt from the gallery
1204
+ */
1205
+ export const getPromptGalleryPrompt = (options) => (options.client ?? client).get({
1206
+ responseType: 'json',
1207
+ security: [{
1208
+ key: 'BearerAuth',
1209
+ scheme: 'bearer',
1210
+ type: 'http'
1211
+ }],
1212
+ url: '/api/v1/prompt-gallery/prompts/{id}',
1213
+ ...options
1214
+ });
1215
+ /**
1216
+ * Track prompt gallery usage
1217
+ *
1218
+ * Tracks when a user uses a prompt from the gallery
1219
+ */
1220
+ export const trackPromptGalleryUsage = (options) => (options.client ?? client).post({
1221
+ responseType: 'json',
1222
+ security: [{
1223
+ key: 'BearerAuth',
1224
+ scheme: 'bearer',
1225
+ type: 'http'
1226
+ }],
1227
+ url: '/api/v1/prompt-gallery/prompts/{id}/use',
1228
+ ...options
1229
+ });
1230
+ /**
1231
+ * Access shared prompt
1232
+ *
1233
+ * Public endpoint to access a shared prompt via its share token.
1234
+ * - For `public` shares: No authentication required
1235
+ * - For `restricted` shares: JWT authentication required and email must be in the access list
1236
+ *
1237
+ * Returns the prompt with @references resolved but {{placeholders}} preserved for client-side substitution.
1238
+ *
1239
+ */
1240
+ export const getSharedPrompt = (options) => (options.client ?? client).get({
1241
+ responseType: 'json',
1242
+ security: [{
1243
+ key: 'BearerAuth',
1244
+ scheme: 'bearer',
1245
+ type: 'http'
1246
+ }],
1247
+ url: '/api/v1/shared/prompts/{token}',
1248
+ ...options
1249
+ });
1250
+ /**
1251
+ * Get usage and growth data
1252
+ *
1253
+ * Retrieves platform-wide usage metrics and per-user activity data.
1254
+ * This endpoint is for administrative purposes only and requires the back office admin API key.
1255
+ * It is NOT accessible via JWT tokens or regular API keys.
1256
+ *
1257
+ */
1258
+ export const getUsageAndGrowth = (options) => (options?.client ?? client).get({
1259
+ responseType: 'json',
1260
+ security: [{
1261
+ key: 'BackofficeAuth',
1262
+ scheme: 'bearer',
1263
+ type: 'http'
1264
+ }],
1265
+ url: '/bo/v1/reports/usage-and-growth',
1266
+ ...options
1267
+ });
1268
+ /**
1269
+ * Regenerate embeddings
1270
+ *
1271
+ * Republishes the `.created` event for embeddable entities (prompts,
1272
+ * artifacts, memories, blueprints, and feed items) so the embedding pipeline
1273
+ * regenerates vectors under the currently configured embedding model. This is
1274
+ * the operational step after an embedding model or dimension change. The
1275
+ * operation is idempotent (the pipeline uses delete-then-insert per entity).
1276
+ *
1277
+ * The scope is explicit: the request body must set exactly one of `all` or a
1278
+ * non-empty `entity_types`. Set `missing_only` to limit the run to entities
1279
+ * that lack an embedding for the configured model. This endpoint is for
1280
+ * administrative purposes only and requires the back office admin API key.
1281
+ *
1282
+ */
1283
+ export const backfillEmbeddings = (options) => (options.client ?? client).post({
1284
+ responseType: 'json',
1285
+ security: [{
1286
+ key: 'BackofficeAuth',
1287
+ scheme: 'bearer',
1288
+ type: 'http'
1289
+ }],
1290
+ url: '/bo/v1/embeddings/backfill',
1291
+ ...options,
1292
+ headers: {
1293
+ 'Content-Type': 'application/json',
1294
+ ...options.headers
1295
+ }
1296
+ });
1297
+ /**
1298
+ * Get GitHub App installation status
1299
+ *
1300
+ * Returns the GitHub App installation status for the specified team. Requires an active subscription.
1301
+ */
1302
+ export const getGitHubStatus = (options) => (options.client ?? client).get({
1303
+ responseType: 'json',
1304
+ security: [{
1305
+ key: 'BearerAuth',
1306
+ scheme: 'bearer',
1307
+ type: 'http'
1308
+ }],
1309
+ url: '/api/v1/{team_id}/integrations/github/status',
1310
+ ...options
1311
+ });
1312
+ /**
1313
+ * Get GitHub App installation URL
1314
+ *
1315
+ * Returns a signed GitHub App installation URL with CSRF protection. Requires an active subscription.
1316
+ */
1317
+ export const getGitHubInstallUrl = (options) => (options.client ?? client).get({
1318
+ responseType: 'json',
1319
+ security: [{
1320
+ key: 'BearerAuth',
1321
+ scheme: 'bearer',
1322
+ type: 'http'
1323
+ }],
1324
+ url: '/api/v1/{team_id}/integrations/github/install-url',
1325
+ ...options
1326
+ });
1327
+ /**
1328
+ * Handle GitHub App installation callback
1329
+ *
1330
+ * Completes the GitHub App installation flow after the user authorizes the app on GitHub.
1331
+ * The request must include the `installation_id` returned by GitHub and the signed `state`
1332
+ * parameter from the install URL to prevent CSRF attacks. Requires an active subscription.
1333
+ *
1334
+ */
1335
+ export const handleGitHubCallback = (options) => (options.client ?? client).post({
1336
+ responseType: 'json',
1337
+ security: [{
1338
+ key: 'BearerAuth',
1339
+ scheme: 'bearer',
1340
+ type: 'http'
1341
+ }],
1342
+ url: '/api/v1/{team_id}/integrations/github/callback',
1343
+ ...options,
1344
+ headers: {
1345
+ 'Content-Type': 'application/json',
1346
+ ...options.headers
1347
+ }
1348
+ });
1349
+ /**
1350
+ * List GitHub repositories
1351
+ *
1352
+ * Lists GitHub repositories accessible by the team's GitHub App installation with pagination. Requires an active subscription.
1353
+ */
1354
+ export const listGitHubRepositories = (options) => (options.client ?? client).get({
1355
+ responseType: 'json',
1356
+ security: [{
1357
+ key: 'BearerAuth',
1358
+ scheme: 'bearer',
1359
+ type: 'http'
1360
+ }],
1361
+ url: '/api/v1/{team_id}/integrations/github/repositories',
1362
+ ...options
1363
+ });
1364
+ /**
1365
+ * Import GitHub repository as a project
1366
+ *
1367
+ * Imports a GitHub repository as a VibeXP project for the team. If a project already exists
1368
+ * for the repository URL it returns the existing project (idempotent). Requires an active subscription.
1369
+ *
1370
+ */
1371
+ export const importGitHubProject = (options) => (options.client ?? client).post({
1372
+ responseType: 'json',
1373
+ security: [{
1374
+ key: 'BearerAuth',
1375
+ scheme: 'bearer',
1376
+ type: 'http'
1377
+ }],
1378
+ url: '/api/v1/{team_id}/integrations/github/repositories/{repo_id}/import-project',
1379
+ ...options
1380
+ });
1381
+ /**
1382
+ * Import AI assistant configurations as blueprints
1383
+ *
1384
+ * Scans the specified GitHub repository for AI assistant configuration files
1385
+ * (`.claude/`, `.cursor/`, `.codex/`, `.agents/`, `CLAUDE.md`, `CURSOR.md`, `AGENTS.md`)
1386
+ * and imports each markdown file as a blueprint. A project must already exist for the
1387
+ * repository — use the import-project endpoint first. Requires an active subscription.
1388
+ *
1389
+ */
1390
+ export const importGitHubBlueprints = (options) => (options.client ?? client).post({
1391
+ responseType: 'json',
1392
+ security: [{
1393
+ key: 'BearerAuth',
1394
+ scheme: 'bearer',
1395
+ type: 'http'
1396
+ }],
1397
+ url: '/api/v1/{team_id}/integrations/github/import-blueprints',
1398
+ ...options,
1399
+ headers: {
1400
+ 'Content-Type': 'application/json',
1401
+ ...options.headers
1402
+ }
1403
+ });
1404
+ /**
1405
+ * Disconnect GitHub App installation
1406
+ *
1407
+ * Removes the GitHub App installation link for the team. Requires an active subscription.
1408
+ */
1409
+ export const disconnectGitHub = (options) => (options.client ?? client).delete({
1410
+ security: [{
1411
+ key: 'BearerAuth',
1412
+ scheme: 'bearer',
1413
+ type: 'http'
1414
+ }],
1415
+ url: '/api/v1/{team_id}/integrations/github/disconnect',
1416
+ ...options
1417
+ });
1418
+ /**
1419
+ * Handle GitHub webhook events
1420
+ *
1421
+ * Receives and processes GitHub webhook events (e.g., push, installation changes).
1422
+ * This endpoint validates the webhook signature using the configured GitHub webhook secret.
1423
+ * This is a public endpoint — no authentication header is required; GitHub signs the payload.
1424
+ *
1425
+ */
1426
+ export const handleGitHubWebhook = (options) => (options.client ?? client).post({
1427
+ url: '/api/v1/webhooks/github',
1428
+ ...options,
1429
+ headers: {
1430
+ 'Content-Type': 'application/json',
1431
+ ...options.headers
1432
+ }
1433
+ });
1434
+ /**
1435
+ * List feeds
1436
+ *
1437
+ * Returns all feeds for the specified team with optional pagination
1438
+ */
1439
+ export const listFeeds = (options) => (options.client ?? client).get({
1440
+ responseType: 'json',
1441
+ security: [{
1442
+ key: 'BearerAuth',
1443
+ scheme: 'bearer',
1444
+ type: 'http'
1445
+ }, {
1446
+ key: 'ApiKeyAuth',
1447
+ scheme: 'bearer',
1448
+ type: 'http'
1449
+ }],
1450
+ url: '/api/v1/{team_id}/feeds',
1451
+ ...options
1452
+ });
1453
+ /**
1454
+ * Create a new feed
1455
+ *
1456
+ * Creates a new AI feed channel for the specified team (free-tier accessible)
1457
+ */
1458
+ export const createFeed = (options) => (options.client ?? client).post({
1459
+ responseType: 'json',
1460
+ security: [{
1461
+ key: 'BearerAuth',
1462
+ scheme: 'bearer',
1463
+ type: 'http'
1464
+ }, {
1465
+ key: 'ApiKeyAuth',
1466
+ scheme: 'bearer',
1467
+ type: 'http'
1468
+ }],
1469
+ url: '/api/v1/{team_id}/feeds',
1470
+ ...options,
1471
+ headers: {
1472
+ 'Content-Type': 'application/json',
1473
+ ...options.headers
1474
+ }
1475
+ });
1476
+ /**
1477
+ * Delete a feed
1478
+ *
1479
+ * Permanently deletes a feed and cascades deletion to all its items
1480
+ */
1481
+ export const deleteFeed = (options) => (options.client ?? client).delete({
1482
+ security: [{
1483
+ key: 'BearerAuth',
1484
+ scheme: 'bearer',
1485
+ type: 'http'
1486
+ }, {
1487
+ key: 'ApiKeyAuth',
1488
+ scheme: 'bearer',
1489
+ type: 'http'
1490
+ }],
1491
+ url: '/api/v1/{team_id}/feeds/{feed_id}',
1492
+ ...options
1493
+ });
1494
+ /**
1495
+ * Get a feed
1496
+ *
1497
+ * Retrieves a specific feed by ID
1498
+ */
1499
+ export const getFeed = (options) => (options.client ?? client).get({
1500
+ responseType: 'json',
1501
+ security: [{
1502
+ key: 'BearerAuth',
1503
+ scheme: 'bearer',
1504
+ type: 'http'
1505
+ }, {
1506
+ key: 'ApiKeyAuth',
1507
+ scheme: 'bearer',
1508
+ type: 'http'
1509
+ }],
1510
+ url: '/api/v1/{team_id}/feeds/{feed_id}',
1511
+ ...options
1512
+ });
1513
+ /**
1514
+ * Update a feed
1515
+ *
1516
+ * Updates the name and/or description of an existing feed
1517
+ */
1518
+ export const updateFeed = (options) => (options.client ?? client).put({
1519
+ responseType: 'json',
1520
+ security: [{
1521
+ key: 'BearerAuth',
1522
+ scheme: 'bearer',
1523
+ type: 'http'
1524
+ }, {
1525
+ key: 'ApiKeyAuth',
1526
+ scheme: 'bearer',
1527
+ type: 'http'
1528
+ }],
1529
+ url: '/api/v1/{team_id}/feeds/{feed_id}',
1530
+ ...options,
1531
+ headers: {
1532
+ 'Content-Type': 'application/json',
1533
+ ...options.headers
1534
+ }
1535
+ });
1536
+ /**
1537
+ * List items in a feed
1538
+ *
1539
+ * Returns paginated items for a specific feed
1540
+ */
1541
+ export const listFeedItemsByFeed = (options) => (options.client ?? client).get({
1542
+ responseType: 'json',
1543
+ security: [{
1544
+ key: 'BearerAuth',
1545
+ scheme: 'bearer',
1546
+ type: 'http'
1547
+ }, {
1548
+ key: 'ApiKeyAuth',
1549
+ scheme: 'bearer',
1550
+ type: 'http'
1551
+ }],
1552
+ url: '/api/v1/{team_id}/feeds/{feed_id}/items',
1553
+ ...options
1554
+ });
1555
+ /**
1556
+ * Create a feed item
1557
+ *
1558
+ * Posts a new AI-generated item to a specific feed
1559
+ */
1560
+ export const createFeedItem = (options) => (options.client ?? client).post({
1561
+ responseType: 'json',
1562
+ security: [{
1563
+ key: 'BearerAuth',
1564
+ scheme: 'bearer',
1565
+ type: 'http'
1566
+ }, {
1567
+ key: 'ApiKeyAuth',
1568
+ scheme: 'bearer',
1569
+ type: 'http'
1570
+ }],
1571
+ url: '/api/v1/{team_id}/feeds/{feed_id}/items',
1572
+ ...options,
1573
+ headers: {
1574
+ 'Content-Type': 'application/json',
1575
+ ...options.headers
1576
+ }
1577
+ });
1578
+ /**
1579
+ * List all feed items (cross-feed)
1580
+ *
1581
+ * Returns paginated feed items across all feeds for the team, with optional filters
1582
+ */
1583
+ export const listFeedItems = (options) => (options.client ?? client).get({
1584
+ responseType: 'json',
1585
+ security: [{
1586
+ key: 'BearerAuth',
1587
+ scheme: 'bearer',
1588
+ type: 'http'
1589
+ }, {
1590
+ key: 'ApiKeyAuth',
1591
+ scheme: 'bearer',
1592
+ type: 'http'
1593
+ }],
1594
+ url: '/api/v1/{team_id}/feed-items',
1595
+ ...options
1596
+ });
1597
+ /**
1598
+ * Delete a feed item
1599
+ *
1600
+ * Permanently deletes a feed item (hard delete)
1601
+ */
1602
+ export const deleteFeedItem = (options) => (options.client ?? client).delete({
1603
+ security: [{
1604
+ key: 'BearerAuth',
1605
+ scheme: 'bearer',
1606
+ type: 'http'
1607
+ }, {
1608
+ key: 'ApiKeyAuth',
1609
+ scheme: 'bearer',
1610
+ type: 'http'
1611
+ }],
1612
+ url: '/api/v1/{team_id}/feed-items/{item_id}',
1613
+ ...options
1614
+ });
1615
+ /**
1616
+ * Get a feed item
1617
+ *
1618
+ * Retrieves a specific feed item by ID (detail page)
1619
+ */
1620
+ export const getFeedItem = (options) => (options.client ?? client).get({
1621
+ responseType: 'json',
1622
+ security: [{
1623
+ key: 'BearerAuth',
1624
+ scheme: 'bearer',
1625
+ type: 'http'
1626
+ }, {
1627
+ key: 'ApiKeyAuth',
1628
+ scheme: 'bearer',
1629
+ type: 'http'
1630
+ }],
1631
+ url: '/api/v1/{team_id}/feed-items/{item_id}',
1632
+ ...options
1633
+ });
1634
+ /**
1635
+ * Archive a feed item
1636
+ *
1637
+ * Sets archived_at to the current server time for the specified feed item
1638
+ */
1639
+ export const archiveFeedItem = (options) => (options.client ?? client).post({
1640
+ security: [{
1641
+ key: 'BearerAuth',
1642
+ scheme: 'bearer',
1643
+ type: 'http'
1644
+ }, {
1645
+ key: 'ApiKeyAuth',
1646
+ scheme: 'bearer',
1647
+ type: 'http'
1648
+ }],
1649
+ url: '/api/v1/{team_id}/feed-items/{item_id}/archive',
1650
+ ...options
1651
+ });
1652
+ /**
1653
+ * Unarchive a feed item
1654
+ *
1655
+ * Clears archived_at (sets to NULL) for the specified feed item
1656
+ */
1657
+ export const unarchiveFeedItem = (options) => (options.client ?? client).post({
1658
+ security: [{
1659
+ key: 'BearerAuth',
1660
+ scheme: 'bearer',
1661
+ type: 'http'
1662
+ }, {
1663
+ key: 'ApiKeyAuth',
1664
+ scheme: 'bearer',
1665
+ type: 'http'
1666
+ }],
1667
+ url: '/api/v1/{team_id}/feed-items/{item_id}/unarchive',
1668
+ ...options
1669
+ });
1670
+ /**
1671
+ * Get invitation details by token
1672
+ *
1673
+ * Returns enriched invitation details (team name, inviter info, role, status, expiry)
1674
+ * for the email-link landing page so the user can review the invitation before
1675
+ * accepting or rejecting it.
1676
+ *
1677
+ * Returns honest, distinct HTTP statuses for the lifecycle:
1678
+ * - `200` — valid pending invitation
1679
+ * - `404` — unknown / not found token
1680
+ * - `410 Gone` — invitation pending but past `expires_at`
1681
+ * - `409 Conflict` — invitation already accepted, rejected, or revoked
1682
+ *
1683
+ */
1684
+ export const getInvitationByToken = (options) => (options.client ?? client).get({
1685
+ responseType: 'json',
1686
+ security: [{
1687
+ key: 'BearerAuth',
1688
+ scheme: 'bearer',
1689
+ type: 'http'
1690
+ }],
1691
+ url: '/api/v1/invitations/{token}',
1692
+ ...options
1693
+ });
1694
+ /**
1695
+ * List agents
1696
+ *
1697
+ * Returns the agents of the specified team with optional filtering, sorting, and pagination
1698
+ */
1699
+ export const listAgents = (options) => (options.client ?? client).get({
1700
+ responseType: 'json',
1701
+ security: [{
1702
+ key: 'ApiKeyAuth',
1703
+ scheme: 'bearer',
1704
+ type: 'http'
1705
+ }, {
1706
+ in: 'cookie',
1707
+ name: 'vx_session',
1708
+ type: 'apiKey'
1709
+ }],
1710
+ url: '/api/v1/{team_id}/agents',
1711
+ ...options
1712
+ });
1713
+ /**
1714
+ * Create new agent
1715
+ *
1716
+ * Registers a new A2A agent for the specified team. The agent card is fetched
1717
+ * from `card_url` at creation time; name and description default to the card
1718
+ * values when omitted.
1719
+ *
1720
+ */
1721
+ export const createAgent = (options) => (options.client ?? client).post({
1722
+ responseType: 'json',
1723
+ security: [{
1724
+ key: 'ApiKeyAuth',
1725
+ scheme: 'bearer',
1726
+ type: 'http'
1727
+ }, {
1728
+ in: 'cookie',
1729
+ name: 'vx_session',
1730
+ type: 'apiKey'
1731
+ }],
1732
+ url: '/api/v1/{team_id}/agents',
1733
+ ...options,
1734
+ headers: {
1735
+ 'Content-Type': 'application/json',
1736
+ ...options.headers
1737
+ }
1738
+ });
1739
+ /**
1740
+ * Preview agent card
1741
+ *
1742
+ * Fetches and returns an A2A agent card from the given URL without creating an agent
1743
+ */
1744
+ export const previewAgentCard = (options) => (options.client ?? client).post({
1745
+ responseType: 'json',
1746
+ security: [{
1747
+ key: 'ApiKeyAuth',
1748
+ scheme: 'bearer',
1749
+ type: 'http'
1750
+ }, {
1751
+ in: 'cookie',
1752
+ name: 'vx_session',
1753
+ type: 'apiKey'
1754
+ }],
1755
+ url: '/api/v1/{team_id}/agents/preview-card',
1756
+ ...options,
1757
+ headers: {
1758
+ 'Content-Type': 'application/json',
1759
+ ...options.headers
1760
+ }
1761
+ });
1762
+ /**
1763
+ * Get agent statistics
1764
+ *
1765
+ * Returns aggregate agent statistics and recent activity for the specified team
1766
+ */
1767
+ export const getAgentStats = (options) => (options.client ?? client).get({
1768
+ responseType: 'json',
1769
+ security: [{
1770
+ key: 'ApiKeyAuth',
1771
+ scheme: 'bearer',
1772
+ type: 'http'
1773
+ }, {
1774
+ in: 'cookie',
1775
+ name: 'vx_session',
1776
+ type: 'apiKey'
1777
+ }],
1778
+ url: '/api/v1/{team_id}/agents/stats',
1779
+ ...options
1780
+ });
1781
+ /**
1782
+ * Delete agent
1783
+ *
1784
+ * Permanently deletes an agent
1785
+ */
1786
+ export const deleteAgent = (options) => (options.client ?? client).delete({
1787
+ security: [{
1788
+ key: 'ApiKeyAuth',
1789
+ scheme: 'bearer',
1790
+ type: 'http'
1791
+ }, {
1792
+ in: 'cookie',
1793
+ name: 'vx_session',
1794
+ type: 'apiKey'
1795
+ }],
1796
+ url: '/api/v1/{team_id}/agents/{id}',
1797
+ ...options
1798
+ });
1799
+ /**
1800
+ * Get agent
1801
+ *
1802
+ * Retrieves a specific agent by ID
1803
+ */
1804
+ export const getAgent = (options) => (options.client ?? client).get({
1805
+ responseType: 'json',
1806
+ security: [{
1807
+ key: 'ApiKeyAuth',
1808
+ scheme: 'bearer',
1809
+ type: 'http'
1810
+ }, {
1811
+ in: 'cookie',
1812
+ name: 'vx_session',
1813
+ type: 'apiKey'
1814
+ }],
1815
+ url: '/api/v1/{team_id}/agents/{id}',
1816
+ ...options
1817
+ });
1818
+ /**
1819
+ * Update agent
1820
+ *
1821
+ * Updates an existing agent. When `card_url` is provided the agent card is
1822
+ * re-fetched. Agents cannot be moved between teams once created.
1823
+ *
1824
+ */
1825
+ export const updateAgent = (options) => (options.client ?? client).put({
1826
+ responseType: 'json',
1827
+ security: [{
1828
+ key: 'ApiKeyAuth',
1829
+ scheme: 'bearer',
1830
+ type: 'http'
1831
+ }, {
1832
+ in: 'cookie',
1833
+ name: 'vx_session',
1834
+ type: 'apiKey'
1835
+ }],
1836
+ url: '/api/v1/{team_id}/agents/{id}',
1837
+ ...options,
1838
+ headers: {
1839
+ 'Content-Type': 'application/json',
1840
+ ...options.headers
1841
+ }
1842
+ });
1843
+ /**
1844
+ * Update agent credentials
1845
+ *
1846
+ * Replaces the stored credentials for an agent. Values are encrypted at rest and never returned.
1847
+ */
1848
+ export const updateAgentCredentials = (options) => (options.client ?? client).put({
1849
+ security: [{
1850
+ key: 'ApiKeyAuth',
1851
+ scheme: 'bearer',
1852
+ type: 'http'
1853
+ }, {
1854
+ in: 'cookie',
1855
+ name: 'vx_session',
1856
+ type: 'apiKey'
1857
+ }],
1858
+ url: '/api/v1/{team_id}/agents/{id}/credentials',
1859
+ ...options,
1860
+ headers: {
1861
+ 'Content-Type': 'application/json',
1862
+ ...options.headers
1863
+ }
1864
+ });
1865
+ /**
1866
+ * Execute agent
1867
+ *
1868
+ * Invokes an agent via the A2A protocol. For streaming-capable agents the call
1869
+ * returns immediately with status `pending` or `submitted`; poll
1870
+ * `GET /agents/executions/{id}/status` and fetch
1871
+ * `GET /agents/executions/{id}/events` for progress. For non-streaming agents
1872
+ * the call blocks until the execution finishes with status `success` or `error`.
1873
+ *
1874
+ */
1875
+ export const executeAgent = (options) => (options.client ?? client).post({
1876
+ responseType: 'json',
1877
+ security: [{
1878
+ key: 'ApiKeyAuth',
1879
+ scheme: 'bearer',
1880
+ type: 'http'
1881
+ }, {
1882
+ in: 'cookie',
1883
+ name: 'vx_session',
1884
+ type: 'apiKey'
1885
+ }],
1886
+ url: '/api/v1/{team_id}/agents/{id}/execute',
1887
+ ...options,
1888
+ headers: {
1889
+ 'Content-Type': 'application/json',
1890
+ ...options.headers
1891
+ }
1892
+ });
1893
+ /**
1894
+ * List agent executions
1895
+ *
1896
+ * Returns executions for an agent with optional filtering and pagination
1897
+ */
1898
+ export const listAgentExecutions = (options) => (options.client ?? client).get({
1899
+ responseType: 'json',
1900
+ security: [{
1901
+ key: 'ApiKeyAuth',
1902
+ scheme: 'bearer',
1903
+ type: 'http'
1904
+ }, {
1905
+ in: 'cookie',
1906
+ name: 'vx_session',
1907
+ type: 'apiKey'
1908
+ }],
1909
+ url: '/api/v1/{team_id}/agents/{id}/executions',
1910
+ ...options
1911
+ });
1912
+ /**
1913
+ * Start agent execution
1914
+ *
1915
+ * Creates a new execution record for an agent (manual execution tracking)
1916
+ */
1917
+ export const startAgentExecution = (options) => (options.client ?? client).post({
1918
+ responseType: 'json',
1919
+ security: [{
1920
+ key: 'ApiKeyAuth',
1921
+ scheme: 'bearer',
1922
+ type: 'http'
1923
+ }, {
1924
+ in: 'cookie',
1925
+ name: 'vx_session',
1926
+ type: 'apiKey'
1927
+ }],
1928
+ url: '/api/v1/{team_id}/agents/{id}/executions',
1929
+ ...options,
1930
+ headers: {
1931
+ 'Content-Type': 'application/json',
1932
+ ...options.headers
1933
+ }
1934
+ });
1935
+ /**
1936
+ * List agent conversations
1937
+ *
1938
+ * Returns paginated conversation summaries for an agent
1939
+ */
1940
+ export const listAgentConversations = (options) => (options.client ?? client).get({
1941
+ responseType: 'json',
1942
+ security: [{
1943
+ key: 'ApiKeyAuth',
1944
+ scheme: 'bearer',
1945
+ type: 'http'
1946
+ }, {
1947
+ in: 'cookie',
1948
+ name: 'vx_session',
1949
+ type: 'apiKey'
1950
+ }],
1951
+ url: '/api/v1/{team_id}/agents/{id}/conversations',
1952
+ ...options
1953
+ });
1954
+ /**
1955
+ * Get agent execution
1956
+ *
1957
+ * Retrieves a specific agent execution by ID
1958
+ */
1959
+ export const getAgentExecution = (options) => (options.client ?? client).get({
1960
+ responseType: 'json',
1961
+ security: [{
1962
+ key: 'ApiKeyAuth',
1963
+ scheme: 'bearer',
1964
+ type: 'http'
1965
+ }, {
1966
+ in: 'cookie',
1967
+ name: 'vx_session',
1968
+ type: 'apiKey'
1969
+ }],
1970
+ url: '/api/v1/{team_id}/agents/executions/{execution_id}',
1971
+ ...options
1972
+ });
1973
+ /**
1974
+ * Complete agent execution
1975
+ *
1976
+ * Updates an execution with its final status, output, and optional error (manual execution tracking)
1977
+ */
1978
+ export const completeAgentExecution = (options) => (options.client ?? client).put({
1979
+ responseType: 'json',
1980
+ security: [{
1981
+ key: 'ApiKeyAuth',
1982
+ scheme: 'bearer',
1983
+ type: 'http'
1984
+ }, {
1985
+ in: 'cookie',
1986
+ name: 'vx_session',
1987
+ type: 'apiKey'
1988
+ }],
1989
+ url: '/api/v1/{team_id}/agents/executions/{execution_id}',
1990
+ ...options,
1991
+ headers: {
1992
+ 'Content-Type': 'application/json',
1993
+ ...options.headers
1994
+ }
1995
+ });
1996
+ /**
1997
+ * Get execution status
1998
+ *
1999
+ * Returns the current status and A2A state of an agent execution, including
2000
+ * artifacts. The execution's agent must belong to the specified team.
2001
+ *
2002
+ */
2003
+ export const getAgentExecutionStatus = (options) => (options.client ?? client).get({
2004
+ responseType: 'json',
2005
+ security: [{
2006
+ key: 'ApiKeyAuth',
2007
+ scheme: 'bearer',
2008
+ type: 'http'
2009
+ }, {
2010
+ in: 'cookie',
2011
+ name: 'vx_session',
2012
+ type: 'apiKey'
2013
+ }],
2014
+ url: '/api/v1/{team_id}/agents/executions/{id}/status',
2015
+ ...options
2016
+ });
2017
+ /**
2018
+ * Get execution events
2019
+ *
2020
+ * Returns streaming events for an execution. Supports two modes: cursor-based
2021
+ * polling via `?since={sequence}` (returns execution status plus events after
2022
+ * that sequence number) and page-based pagination via `?page`/`?limit` for
2023
+ * historical viewing.
2024
+ *
2025
+ */
2026
+ export const getAgentExecutionEvents = (options) => (options.client ?? client).get({
2027
+ responseType: 'json',
2028
+ security: [{
2029
+ key: 'ApiKeyAuth',
2030
+ scheme: 'bearer',
2031
+ type: 'http'
2032
+ }, {
2033
+ in: 'cookie',
2034
+ name: 'vx_session',
2035
+ type: 'apiKey'
2036
+ }],
2037
+ url: '/api/v1/{team_id}/agents/executions/{id}/events',
2038
+ ...options
2039
+ });
2040
+ /**
2041
+ * List conversation executions
2042
+ *
2043
+ * Returns the executions belonging to a conversation with cursor-based pagination (newest first, use `before` to page backwards)
2044
+ */
2045
+ export const listConversationExecutions = (options) => (options.client ?? client).get({
2046
+ responseType: 'json',
2047
+ security: [{
2048
+ key: 'ApiKeyAuth',
2049
+ scheme: 'bearer',
2050
+ type: 'http'
2051
+ }, {
2052
+ in: 'cookie',
2053
+ name: 'vx_session',
2054
+ type: 'apiKey'
2055
+ }],
2056
+ url: '/api/v1/{team_id}/agents/conversations/{conversation_id}/executions',
2057
+ ...options
2058
+ });
2059
+ /**
2060
+ * List Claude Code hook payloads
2061
+ *
2062
+ * Returns the authenticated user's stored Claude Code hook payloads with pagination and optional filters
2063
+ */
2064
+ export const listClaudeCodeHooks = (options) => (options?.client ?? client).get({
2065
+ responseType: 'json',
2066
+ security: [{
2067
+ key: 'ApiKeyAuth',
2068
+ scheme: 'bearer',
2069
+ type: 'http'
2070
+ }, {
2071
+ in: 'cookie',
2072
+ name: 'vx_session',
2073
+ type: 'apiKey'
2074
+ }],
2075
+ url: '/api/v1/ai-tools/claude-code/hooks',
2076
+ ...options
2077
+ });
2078
+ /**
2079
+ * List Claude Code sessions
2080
+ *
2081
+ * Returns the authenticated user's Claude Code session summaries with pagination
2082
+ */
2083
+ export const listClaudeCodeSessions = (options) => (options?.client ?? client).get({
2084
+ responseType: 'json',
2085
+ security: [{
2086
+ key: 'ApiKeyAuth',
2087
+ scheme: 'bearer',
2088
+ type: 'http'
2089
+ }, {
2090
+ in: 'cookie',
2091
+ name: 'vx_session',
2092
+ type: 'apiKey'
2093
+ }],
2094
+ url: '/api/v1/ai-tools/claude-code/sessions',
2095
+ ...options
2096
+ });
2097
+ /**
2098
+ * Get Claude Code session counts
2099
+ *
2100
+ * Returns the authenticated user's Claude Code session counts per day for the requested range
2101
+ */
2102
+ export const getClaudeCodeSessionCounts = (options) => (options?.client ?? client).get({
2103
+ responseType: 'json',
2104
+ security: [{
2105
+ key: 'ApiKeyAuth',
2106
+ scheme: 'bearer',
2107
+ type: 'http'
2108
+ }, {
2109
+ in: 'cookie',
2110
+ name: 'vx_session',
2111
+ type: 'apiKey'
2112
+ }],
2113
+ url: '/api/v1/ai-tools/claude-code/session-counts',
2114
+ ...options
2115
+ });
2116
+ /**
2117
+ * Get Claude Code overview statistics
2118
+ *
2119
+ * Returns aggregated Claude Code usage statistics for the authenticated user's overview dashboard
2120
+ */
2121
+ export const getClaudeCodeOverviewStats = (options) => (options?.client ?? client).get({
2122
+ responseType: 'json',
2123
+ security: [{
2124
+ key: 'ApiKeyAuth',
2125
+ scheme: 'bearer',
2126
+ type: 'http'
2127
+ }, {
2128
+ in: 'cookie',
2129
+ name: 'vx_session',
2130
+ type: 'apiKey'
2131
+ }],
2132
+ url: '/api/v1/ai-tools/claude-code/overview-stats',
2133
+ ...options
2134
+ });
2135
+ /**
2136
+ * List recent Claude Code activities
2137
+ *
2138
+ * Returns the authenticated user's recent Claude Code activities with pagination and optional filters
2139
+ */
2140
+ export const listClaudeCodeRecentActivities = (options) => (options?.client ?? client).get({
2141
+ responseType: 'json',
2142
+ security: [{
2143
+ key: 'ApiKeyAuth',
2144
+ scheme: 'bearer',
2145
+ type: 'http'
2146
+ }, {
2147
+ in: 'cookie',
2148
+ name: 'vx_session',
2149
+ type: 'apiKey'
2150
+ }],
2151
+ url: '/api/v1/ai-tools/claude-code/recent-activities',
2152
+ ...options
2153
+ });
2154
+ /**
2155
+ * List Cursor IDE hook payloads
2156
+ *
2157
+ * Returns the authenticated user's stored Cursor IDE hook payloads with pagination and optional filters
2158
+ */
2159
+ export const listCursorIdeHooks = (options) => (options?.client ?? client).get({
2160
+ responseType: 'json',
2161
+ security: [{
2162
+ key: 'ApiKeyAuth',
2163
+ scheme: 'bearer',
2164
+ type: 'http'
2165
+ }, {
2166
+ in: 'cookie',
2167
+ name: 'vx_session',
2168
+ type: 'apiKey'
2169
+ }],
2170
+ url: '/api/v1/ai-tools/cursor-ide/hooks',
2171
+ ...options
2172
+ });
2173
+ /**
2174
+ * List Cursor IDE sessions
2175
+ *
2176
+ * Returns the authenticated user's Cursor IDE session summaries with pagination
2177
+ */
2178
+ export const listCursorIdeSessions = (options) => (options?.client ?? client).get({
2179
+ responseType: 'json',
2180
+ security: [{
2181
+ key: 'ApiKeyAuth',
2182
+ scheme: 'bearer',
2183
+ type: 'http'
2184
+ }, {
2185
+ in: 'cookie',
2186
+ name: 'vx_session',
2187
+ type: 'apiKey'
2188
+ }],
2189
+ url: '/api/v1/ai-tools/cursor-ide/sessions',
2190
+ ...options
2191
+ });
2192
+ /**
2193
+ * Get Cursor IDE session counts
2194
+ *
2195
+ * Returns the authenticated user's Cursor IDE session counts per day for the requested range
2196
+ */
2197
+ export const getCursorIdeSessionCounts = (options) => (options?.client ?? client).get({
2198
+ responseType: 'json',
2199
+ security: [{
2200
+ key: 'ApiKeyAuth',
2201
+ scheme: 'bearer',
2202
+ type: 'http'
2203
+ }, {
2204
+ in: 'cookie',
2205
+ name: 'vx_session',
2206
+ type: 'apiKey'
2207
+ }],
2208
+ url: '/api/v1/ai-tools/cursor-ide/session-counts',
2209
+ ...options
2210
+ });
2211
+ /**
2212
+ * Get Cursor IDE overview statistics
2213
+ *
2214
+ * Returns aggregated Cursor IDE usage statistics for the authenticated user's overview dashboard
2215
+ */
2216
+ export const getCursorIdeOverviewStats = (options) => (options?.client ?? client).get({
2217
+ responseType: 'json',
2218
+ security: [{
2219
+ key: 'ApiKeyAuth',
2220
+ scheme: 'bearer',
2221
+ type: 'http'
2222
+ }, {
2223
+ in: 'cookie',
2224
+ name: 'vx_session',
2225
+ type: 'apiKey'
2226
+ }],
2227
+ url: '/api/v1/ai-tools/cursor-ide/overview-stats',
2228
+ ...options
2229
+ });
2230
+ /**
2231
+ * List recent Cursor IDE activities
2232
+ *
2233
+ * Returns the authenticated user's recent Cursor IDE activities with pagination and optional filters
2234
+ */
2235
+ export const listCursorIdeRecentActivities = (options) => (options?.client ?? client).get({
2236
+ responseType: 'json',
2237
+ security: [{
2238
+ key: 'ApiKeyAuth',
2239
+ scheme: 'bearer',
2240
+ type: 'http'
2241
+ }, {
2242
+ in: 'cookie',
2243
+ name: 'vx_session',
2244
+ type: 'apiKey'
2245
+ }],
2246
+ url: '/api/v1/ai-tools/cursor-ide/recent-activities',
2247
+ ...options
2248
+ });
2249
+ /**
2250
+ * Ingest Claude Code hook payload
2251
+ *
2252
+ * Stores a hook payload fired by the Claude Code CLI during an active coding session. Authenticated via API key (bearer) or session cookie; not IP-rate-limited. Responses use the legacy CLI-compatible `{status, message}` shape rather than the standard envelope. New sessions are checked against the user's `ai_session` resource limit (and `ai_tool` limit for the first-ever session), returning 403 when exceeded.
2253
+ */
2254
+ export const ingestClaudeCodeHook = (options) => (options.client ?? client).post({
2255
+ responseType: 'json',
2256
+ security: [{
2257
+ key: 'ApiKeyAuth',
2258
+ scheme: 'bearer',
2259
+ type: 'http'
2260
+ }, {
2261
+ in: 'cookie',
2262
+ name: 'vx_session',
2263
+ type: 'apiKey'
2264
+ }],
2265
+ url: '/api/v1/claude-code/hooks',
2266
+ ...options,
2267
+ headers: {
2268
+ 'Content-Type': 'application/json',
2269
+ ...options.headers
2270
+ }
2271
+ });
2272
+ /**
2273
+ * Ingest Cursor IDE hook payload
2274
+ *
2275
+ * Stores a hook payload fired by Cursor IDE hooks. Authenticated via API key (bearer) or session cookie; not IP-rate-limited. When `session_id` is absent, `conversation_id` is used as the session identifier (one of the two is required). Responses use the legacy CLI-compatible `{status, message}` shape rather than the standard envelope. New sessions are checked against the user's `ai_session` resource limit (and `ai_tool` limit for the first-ever session), returning 403 when exceeded.
2276
+ */
2277
+ export const ingestCursorIdeHook = (options) => (options.client ?? client).post({
2278
+ responseType: 'json',
2279
+ security: [{
2280
+ key: 'ApiKeyAuth',
2281
+ scheme: 'bearer',
2282
+ type: 'http'
2283
+ }, {
2284
+ in: 'cookie',
2285
+ name: 'vx_session',
2286
+ type: 'apiKey'
2287
+ }],
2288
+ url: '/api/v1/cursor-ide/hooks',
2289
+ ...options,
2290
+ headers: {
2291
+ 'Content-Type': 'application/json',
2292
+ ...options.headers
2293
+ }
2294
+ });
2295
+ /**
2296
+ * List teams
2297
+ *
2298
+ * Returns the paginated list of teams the current user belongs to. Invalid
2299
+ * `page`/`page_size` values silently fall back to the defaults.
2300
+ *
2301
+ */
2302
+ export const listTeams = (options) => (options?.client ?? client).get({
2303
+ responseType: 'json',
2304
+ security: [{
2305
+ key: 'ApiKeyAuth',
2306
+ scheme: 'bearer',
2307
+ type: 'http'
2308
+ }, {
2309
+ in: 'cookie',
2310
+ name: 'vx_session',
2311
+ type: 'apiKey'
2312
+ }],
2313
+ url: '/api/v1/teams',
2314
+ ...options
2315
+ });
2316
+ /**
2317
+ * Create a new team
2318
+ *
2319
+ * Creates a new team owned by the current user and synchronously bootstraps a
2320
+ * default "Project 1" project inside it so resources created immediately
2321
+ * afterwards are correctly scoped.
2322
+ *
2323
+ * Team creation is subject to the plan's team resource limit; exceeding it
2324
+ * returns `403` with code `RESOURCE_LIMIT_EXCEEDED`.
2325
+ *
2326
+ */
2327
+ export const createTeam = (options) => (options.client ?? client).post({
2328
+ responseType: 'json',
2329
+ security: [{
2330
+ key: 'ApiKeyAuth',
2331
+ scheme: 'bearer',
2332
+ type: 'http'
2333
+ }, {
2334
+ in: 'cookie',
2335
+ name: 'vx_session',
2336
+ type: 'apiKey'
2337
+ }],
2338
+ url: '/api/v1/teams',
2339
+ ...options,
2340
+ headers: {
2341
+ 'Content-Type': 'application/json',
2342
+ ...options.headers
2343
+ }
2344
+ });
2345
+ /**
2346
+ * Delete a team
2347
+ *
2348
+ * Deletes a team. Only team owners can delete a team; personal workspaces and
2349
+ * the default team cannot be deleted.
2350
+ *
2351
+ * Deletion conflicts return `409` with RFC 9457 problem details carrying an
2352
+ * UPPERCASE `code` and string-valued `metadata`:
2353
+ * - `ACTIVE_SUBSCRIPTION_EXISTS` — the team still has an active subscription
2354
+ * - `SUBSCRIPTION_CANCELING` — the subscription is scheduled to cancel; retry after `metadata.cancel_at`
2355
+ * - `TEAM_HAS_MEMBERS` — remove all members first (`metadata.member_count`)
2356
+ *
2357
+ */
2358
+ export const deleteTeam = (options) => (options.client ?? client).delete({
2359
+ security: [{
2360
+ key: 'ApiKeyAuth',
2361
+ scheme: 'bearer',
2362
+ type: 'http'
2363
+ }, {
2364
+ in: 'cookie',
2365
+ name: 'vx_session',
2366
+ type: 'apiKey'
2367
+ }],
2368
+ url: '/api/v1/teams/{id}',
2369
+ ...options
2370
+ });
2371
+ /**
2372
+ * Get a team
2373
+ *
2374
+ * Returns the team with the requesting user's role populated (member_count is only populated on list responses and is 0 here).
2375
+ */
2376
+ export const getTeam = (options) => (options.client ?? client).get({
2377
+ responseType: 'json',
2378
+ security: [{
2379
+ key: 'ApiKeyAuth',
2380
+ scheme: 'bearer',
2381
+ type: 'http'
2382
+ }, {
2383
+ in: 'cookie',
2384
+ name: 'vx_session',
2385
+ type: 'apiKey'
2386
+ }],
2387
+ url: '/api/v1/teams/{id}',
2388
+ ...options
2389
+ });
2390
+ /**
2391
+ * Update a team
2392
+ *
2393
+ * Updates the team's name and/or description. Only team owners can update a
2394
+ * team. At least one of `name` or `description` must be provided.
2395
+ *
2396
+ */
2397
+ export const updateTeam = (options) => (options.client ?? client).put({
2398
+ responseType: 'json',
2399
+ security: [{
2400
+ key: 'ApiKeyAuth',
2401
+ scheme: 'bearer',
2402
+ type: 'http'
2403
+ }, {
2404
+ in: 'cookie',
2405
+ name: 'vx_session',
2406
+ type: 'apiKey'
2407
+ }],
2408
+ url: '/api/v1/teams/{id}',
2409
+ ...options,
2410
+ headers: {
2411
+ 'Content-Type': 'application/json',
2412
+ ...options.headers
2413
+ }
2414
+ });
2415
+ /**
2416
+ * List team members
2417
+ *
2418
+ * Returns the paginated list of team members with user details and invitation
2419
+ * status. Invalid `page`/`page_size` values silently fall back to the defaults.
2420
+ *
2421
+ */
2422
+ export const getTeamMembers = (options) => (options.client ?? client).get({
2423
+ responseType: 'json',
2424
+ security: [{
2425
+ key: 'ApiKeyAuth',
2426
+ scheme: 'bearer',
2427
+ type: 'http'
2428
+ }, {
2429
+ in: 'cookie',
2430
+ name: 'vx_session',
2431
+ type: 'apiKey'
2432
+ }],
2433
+ url: '/api/v1/teams/{id}/members',
2434
+ ...options
2435
+ });
2436
+ /**
2437
+ * Remove a team member
2438
+ *
2439
+ * Removes a member from the team. Only team owners can remove members, and the
2440
+ * team owner cannot be removed.
2441
+ *
2442
+ */
2443
+ export const removeTeamMember = (options) => (options.client ?? client).delete({
2444
+ security: [{
2445
+ key: 'ApiKeyAuth',
2446
+ scheme: 'bearer',
2447
+ type: 'http'
2448
+ }, {
2449
+ in: 'cookie',
2450
+ name: 'vx_session',
2451
+ type: 'apiKey'
2452
+ }],
2453
+ url: '/api/v1/teams/{id}/members/{userId}',
2454
+ ...options
2455
+ });
2456
+ /**
2457
+ * List team invitations
2458
+ *
2459
+ * Returns all invitations for the team. The `token`, `team_name` and
2460
+ * `invited_by` fields are not populated on this listing.
2461
+ *
2462
+ */
2463
+ export const listTeamInvitations = (options) => (options.client ?? client).get({
2464
+ responseType: 'json',
2465
+ security: [{
2466
+ key: 'ApiKeyAuth',
2467
+ scheme: 'bearer',
2468
+ type: 'http'
2469
+ }, {
2470
+ in: 'cookie',
2471
+ name: 'vx_session',
2472
+ type: 'apiKey'
2473
+ }],
2474
+ url: '/api/v1/teams/{id}/invitations',
2475
+ ...options
2476
+ });
2477
+ /**
2478
+ * Send team invitations
2479
+ *
2480
+ * Sends invitations to join the team to up to 50 email addresses with the given
2481
+ * role. Requires an eligible team (not a personal workspace), an active team
2482
+ * subscription, and enough available seats.
2483
+ *
2484
+ * Limit failures return `403` with code `RESOURCE_LIMIT_EXCEEDED` and a
2485
+ * `metadata` object: for missing subscriptions it carries `team_id`, `feature`
2486
+ * and `upgrade_url`; for seat limits it carries `team_id` plus seat accounting fields
2487
+ * (`total_seats`, `occupied_seats`, `current_members`, `pending_invitations`,
2488
+ * `requested_invitations`, `available_seats`, `additional_seats_needed`,
2489
+ * `upgrade_url`).
2490
+ *
2491
+ * Inviting users who are already team members returns `409` with code
2492
+ * `DUPLICATE_MEMBERS` and a top-level `duplicate_emails` string array.
2493
+ *
2494
+ */
2495
+ export const sendTeamInvitations = (options) => (options.client ?? client).post({
2496
+ responseType: 'json',
2497
+ security: [{
2498
+ key: 'ApiKeyAuth',
2499
+ scheme: 'bearer',
2500
+ type: 'http'
2501
+ }, {
2502
+ in: 'cookie',
2503
+ name: 'vx_session',
2504
+ type: 'apiKey'
2505
+ }],
2506
+ url: '/api/v1/teams/{id}/invitations',
2507
+ ...options,
2508
+ headers: {
2509
+ 'Content-Type': 'application/json',
2510
+ ...options.headers
2511
+ }
2512
+ });
2513
+ /**
2514
+ * Revoke a team invitation
2515
+ *
2516
+ * Revokes a pending team invitation so its token can no longer be accepted.
2517
+ */
2518
+ export const revokeTeamInvitation = (options) => (options.client ?? client).delete({
2519
+ security: [{
2520
+ key: 'ApiKeyAuth',
2521
+ scheme: 'bearer',
2522
+ type: 'http'
2523
+ }, {
2524
+ in: 'cookie',
2525
+ name: 'vx_session',
2526
+ type: 'apiKey'
2527
+ }],
2528
+ url: '/api/v1/teams/{id}/invitations/{invitationId}',
2529
+ ...options
2530
+ });
2531
+ /**
2532
+ * Get team statistics
2533
+ *
2534
+ * Returns team-wide resource counts (projects, prompts, artifacts, blueprints, memories, feed items) for the team analytics page. Authorized via team membership.
2535
+ */
2536
+ export const getTeamStats = (options) => (options.client ?? client).get({
2537
+ responseType: 'json',
2538
+ security: [{
2539
+ key: 'ApiKeyAuth',
2540
+ scheme: 'bearer',
2541
+ type: 'http'
2542
+ }, {
2543
+ in: 'cookie',
2544
+ name: 'vx_session',
2545
+ type: 'apiKey'
2546
+ }],
2547
+ url: '/api/v1/teams/{id}/stats',
2548
+ ...options
2549
+ });
2550
+ /**
2551
+ * Per-team daily resource-creation metrics
2552
+ *
2553
+ * Returns a zero-filled daily creation timeseries for a team, counting prompts, artifacts, blueprints, memories, and projects created on each day, for the team analytics-page chart. Every day in the requested range appears even when its count is zero. Authorized via team membership.
2554
+ */
2555
+ export const getTeamResourceCreationMetrics = (options) => (options.client ?? client).get({
2556
+ responseType: 'json',
2557
+ security: [{
2558
+ key: 'ApiKeyAuth',
2559
+ scheme: 'bearer',
2560
+ type: 'http'
2561
+ }, {
2562
+ in: 'cookie',
2563
+ name: 'vx_session',
2564
+ type: 'apiKey'
2565
+ }],
2566
+ url: '/api/v1/teams/{id}/resource-creation-metrics',
2567
+ ...options
2568
+ });
2569
+ /**
2570
+ * Per-team daily access metrics
2571
+ *
2572
+ * Returns a zero-filled daily access timeseries for a team, grouped by source (web, cli, mcp, api), aggregated across every resource in the team, for the team analytics-page chart. Every day in the requested range appears even when its count is zero. Authorized via team membership.
2573
+ */
2574
+ export const getTeamResourceAccessMetrics = (options) => (options.client ?? client).get({
2575
+ responseType: 'json',
2576
+ security: [{
2577
+ key: 'ApiKeyAuth',
2578
+ scheme: 'bearer',
2579
+ type: 'http'
2580
+ }, {
2581
+ in: 'cookie',
2582
+ name: 'vx_session',
2583
+ type: 'apiKey'
2584
+ }],
2585
+ url: '/api/v1/teams/{id}/resource-access-metrics',
2586
+ ...options
2587
+ });
2588
+ /**
2589
+ * Per-team daily feed-creation metrics
2590
+ *
2591
+ * Returns a zero-filled daily feed-creation timeseries for a team, counting feeds (channels, by creation date) and feed_items (AI updates posted, by posted date) on each day, for the team analytics-page "AI feeds created" chart. Every day in the requested range appears even when its count is zero. Authorized via team membership.
2592
+ */
2593
+ export const getTeamFeedCreationMetrics = (options) => (options.client ?? client).get({
2594
+ responseType: 'json',
2595
+ security: [{
2596
+ key: 'ApiKeyAuth',
2597
+ scheme: 'bearer',
2598
+ type: 'http'
2599
+ }, {
2600
+ in: 'cookie',
2601
+ name: 'vx_session',
2602
+ type: 'apiKey'
2603
+ }],
2604
+ url: '/api/v1/teams/{id}/feed-creation-metrics',
2605
+ ...options
2606
+ });
2607
+ /**
2608
+ * Per-team most-accessed resources
2609
+ *
2610
+ * Returns the team's most-accessed resources over the requested window, ranked by access count descending and capped by the limit parameter, with each row's display name resolved so the frontend can render and deep-link it. Authorized via team membership.
2611
+ */
2612
+ export const getTeamTopAccessedResources = (options) => (options.client ?? client).get({
2613
+ responseType: 'json',
2614
+ security: [{
2615
+ key: 'ApiKeyAuth',
2616
+ scheme: 'bearer',
2617
+ type: 'http'
2618
+ }, {
2619
+ in: 'cookie',
2620
+ name: 'vx_session',
2621
+ type: 'apiKey'
2622
+ }],
2623
+ url: '/api/v1/teams/{id}/top-accessed-resources',
2624
+ ...options
2625
+ });
2626
+ /**
2627
+ * Get pending invitations for the current user
2628
+ *
2629
+ * Returns the current user's pending team invitations (matched by the user's
2630
+ * email), enriched with team name and inviter details where available. The
2631
+ * response is not actually paginated: all pending invitations are returned and
2632
+ * `page`/`page_size` are fixed at `1`/`20`.
2633
+ *
2634
+ */
2635
+ export const getPendingInvitations = (options) => (options?.client ?? client).get({
2636
+ responseType: 'json',
2637
+ security: [{
2638
+ key: 'ApiKeyAuth',
2639
+ scheme: 'bearer',
2640
+ type: 'http'
2641
+ }, {
2642
+ in: 'cookie',
2643
+ name: 'vx_session',
2644
+ type: 'apiKey'
2645
+ }],
2646
+ url: '/api/v1/invitations/pending',
2647
+ ...options
2648
+ });
2649
+ /**
2650
+ * Accept a team invitation
2651
+ *
2652
+ * Accepts a pending team invitation by token and adds the current user to the
2653
+ * team. The invitation must have been sent to the authenticated user's email
2654
+ * address.
2655
+ *
2656
+ */
2657
+ export const acceptInvitation = (options) => (options.client ?? client).post({
2658
+ responseType: 'json',
2659
+ security: [{
2660
+ key: 'ApiKeyAuth',
2661
+ scheme: 'bearer',
2662
+ type: 'http'
2663
+ }, {
2664
+ in: 'cookie',
2665
+ name: 'vx_session',
2666
+ type: 'apiKey'
2667
+ }],
2668
+ url: '/api/v1/invitations/{token}/accept',
2669
+ ...options
2670
+ });
2671
+ /**
2672
+ * Reject a team invitation
2673
+ *
2674
+ * Rejects a pending team invitation by token. Only the invited user can reject it.
2675
+ */
2676
+ export const rejectInvitation = (options) => (options.client ?? client).post({
2677
+ security: [{
2678
+ key: 'ApiKeyAuth',
2679
+ scheme: 'bearer',
2680
+ type: 'http'
2681
+ }, {
2682
+ in: 'cookie',
2683
+ name: 'vx_session',
2684
+ type: 'apiKey'
2685
+ }],
2686
+ url: '/api/v1/invitations/{token}/reject',
2687
+ ...options
2688
+ });
2689
+ /**
2690
+ * List notifications
2691
+ *
2692
+ * Returns the authenticated user's in-app notifications, newest first, with
2693
+ * offset-based pagination. `count` is the number of items in this page (≤ `limit`),
2694
+ * not the global total — use the unread-count endpoint for unread totals.
2695
+ *
2696
+ */
2697
+ export const listNotifications = (options) => (options?.client ?? client).get({
2698
+ responseType: 'json',
2699
+ security: [{
2700
+ key: 'ApiKeyAuth',
2701
+ scheme: 'bearer',
2702
+ type: 'http'
2703
+ }, {
2704
+ in: 'cookie',
2705
+ name: 'vx_session',
2706
+ type: 'apiKey'
2707
+ }],
2708
+ url: '/api/v1/notifications',
2709
+ ...options
2710
+ });
2711
+ /**
2712
+ * Get unread notification count
2713
+ *
2714
+ * Returns the total number of unread notifications for the authenticated user.
2715
+ */
2716
+ export const getUnreadNotificationCount = (options) => (options?.client ?? client).get({
2717
+ responseType: 'json',
2718
+ security: [{
2719
+ key: 'ApiKeyAuth',
2720
+ scheme: 'bearer',
2721
+ type: 'http'
2722
+ }, {
2723
+ in: 'cookie',
2724
+ name: 'vx_session',
2725
+ type: 'apiKey'
2726
+ }],
2727
+ url: '/api/v1/notifications/unread-count',
2728
+ ...options
2729
+ });
2730
+ /**
2731
+ * Mark notification as read
2732
+ *
2733
+ * Marks a single notification as read for the authenticated user. Idempotent —
2734
+ * succeeds with 204 even if the notification is already read or does not belong
2735
+ * to the user (no 404 is returned).
2736
+ *
2737
+ */
2738
+ export const markNotificationRead = (options) => (options.client ?? client).patch({
2739
+ security: [{
2740
+ key: 'ApiKeyAuth',
2741
+ scheme: 'bearer',
2742
+ type: 'http'
2743
+ }, {
2744
+ in: 'cookie',
2745
+ name: 'vx_session',
2746
+ type: 'apiKey'
2747
+ }],
2748
+ url: '/api/v1/notifications/{id}/read',
2749
+ ...options
2750
+ });
2751
+ /**
2752
+ * Mark all notifications as read
2753
+ *
2754
+ * Marks all of the authenticated user's notifications as read. No request body is required.
2755
+ */
2756
+ export const markAllNotificationsRead = (options) => (options?.client ?? client).patch({
2757
+ security: [{
2758
+ key: 'ApiKeyAuth',
2759
+ scheme: 'bearer',
2760
+ type: 'http'
2761
+ }, {
2762
+ in: 'cookie',
2763
+ name: 'vx_session',
2764
+ type: 'apiKey'
2765
+ }],
2766
+ url: '/api/v1/notifications/read-all',
2767
+ ...options
2768
+ });
2769
+ /**
2770
+ * List types for a resource
2771
+ *
2772
+ * Returns every type visible to the team for the given `resource_type`: the global system defaults plus the team's own custom types, system defaults first.
2773
+ *
2774
+ */
2775
+ export const listTypes = (options) => (options.client ?? client).get({
2776
+ responseType: 'json',
2777
+ security: [{
2778
+ key: 'ApiKeyAuth',
2779
+ scheme: 'bearer',
2780
+ type: 'http'
2781
+ }, {
2782
+ in: 'cookie',
2783
+ name: 'vx_session',
2784
+ type: 'apiKey'
2785
+ }],
2786
+ url: '/api/v1/{team_id}/types',
2787
+ ...options
2788
+ });
2789
+ /**
2790
+ * Create a custom type
2791
+ *
2792
+ * Creates a team-owned custom type for the given resource. The slug must be URL-safe (lowercase letters, numbers, hyphens) and unique within the team for the resource — a collision with a global default or an existing team type returns 409.
2793
+ *
2794
+ */
2795
+ export const createType = (options) => (options.client ?? client).post({
2796
+ responseType: 'json',
2797
+ security: [{
2798
+ key: 'ApiKeyAuth',
2799
+ scheme: 'bearer',
2800
+ type: 'http'
2801
+ }, {
2802
+ in: 'cookie',
2803
+ name: 'vx_session',
2804
+ type: 'apiKey'
2805
+ }],
2806
+ url: '/api/v1/{team_id}/types',
2807
+ ...options,
2808
+ headers: {
2809
+ 'Content-Type': 'application/json',
2810
+ ...options.headers
2811
+ }
2812
+ });
2813
+ /**
2814
+ * Delete a custom type
2815
+ *
2816
+ * Deletes a team-owned custom type. System defaults cannot be deleted (a delete targeting one — or another team's type — returns 404). Any resources still referencing the deleted type are reassigned to the resource's system default in the same transaction.
2817
+ *
2818
+ */
2819
+ export const deleteType = (options) => (options.client ?? client).delete({
2820
+ security: [{
2821
+ key: 'ApiKeyAuth',
2822
+ scheme: 'bearer',
2823
+ type: 'http'
2824
+ }, {
2825
+ in: 'cookie',
2826
+ name: 'vx_session',
2827
+ type: 'apiKey'
2828
+ }],
2829
+ url: '/api/v1/{team_id}/types/{id}',
2830
+ ...options
2831
+ });
2832
+ /**
2833
+ * List embedding providers
2834
+ *
2835
+ * Retrieves all embedding providers belonging to the authenticated user.
2836
+ * Returns a bare JSON array (no pagination envelope). Encrypted API keys
2837
+ * are never included; each item carries a `has_api_key` boolean instead.
2838
+ *
2839
+ */
2840
+ export const listEmbeddingProviders = (options) => (options?.client ?? client).get({
2841
+ responseType: 'json',
2842
+ security: [{
2843
+ key: 'ApiKeyAuth',
2844
+ scheme: 'bearer',
2845
+ type: 'http'
2846
+ }, {
2847
+ in: 'cookie',
2848
+ name: 'vx_session',
2849
+ type: 'apiKey'
2850
+ }],
2851
+ url: '/api/v1/embedding-providers',
2852
+ ...options
2853
+ });
2854
+ /**
2855
+ * Create embedding provider
2856
+ *
2857
+ * Creates a new embedding provider configuration for the authenticated user.
2858
+ * The `api_key` supplied in the request is encrypted at rest and is never
2859
+ * returned by the API — responses expose only a `has_api_key` boolean.
2860
+ * Returns 200 (not 201) on success.
2861
+ *
2862
+ */
2863
+ export const createEmbeddingProvider = (options) => (options.client ?? client).post({
2864
+ responseType: 'json',
2865
+ security: [{
2866
+ key: 'ApiKeyAuth',
2867
+ scheme: 'bearer',
2868
+ type: 'http'
2869
+ }, {
2870
+ in: 'cookie',
2871
+ name: 'vx_session',
2872
+ type: 'apiKey'
2873
+ }],
2874
+ url: '/api/v1/embedding-providers',
2875
+ ...options,
2876
+ headers: {
2877
+ 'Content-Type': 'application/json',
2878
+ ...options.headers
2879
+ }
2880
+ });
2881
+ /**
2882
+ * Delete embedding provider
2883
+ *
2884
+ * Deletes an embedding provider owned by the authenticated user. Deleting
2885
+ * the user's last remaining provider is blocked with a 400
2886
+ * `PROVIDER_LAST_DELETE_BLOCKED` error.
2887
+ *
2888
+ */
2889
+ export const deleteEmbeddingProvider = (options) => (options.client ?? client).delete({
2890
+ security: [{
2891
+ key: 'ApiKeyAuth',
2892
+ scheme: 'bearer',
2893
+ type: 'http'
2894
+ }, {
2895
+ in: 'cookie',
2896
+ name: 'vx_session',
2897
+ type: 'apiKey'
2898
+ }],
2899
+ url: '/api/v1/embedding-providers/{id}',
2900
+ ...options
2901
+ });
2902
+ /**
2903
+ * Get embedding provider
2904
+ *
2905
+ * Retrieves a single embedding provider owned by the authenticated user.
2906
+ * The encrypted API key is never returned; `has_api_key` indicates whether
2907
+ * one is stored.
2908
+ *
2909
+ */
2910
+ export const getEmbeddingProvider = (options) => (options.client ?? client).get({
2911
+ responseType: 'json',
2912
+ security: [{
2913
+ key: 'ApiKeyAuth',
2914
+ scheme: 'bearer',
2915
+ type: 'http'
2916
+ }, {
2917
+ in: 'cookie',
2918
+ name: 'vx_session',
2919
+ type: 'apiKey'
2920
+ }],
2921
+ url: '/api/v1/embedding-providers/{id}',
2922
+ ...options
2923
+ });
2924
+ /**
2925
+ * Update embedding provider
2926
+ *
2927
+ * Updates an existing embedding provider. All fields are optional; only
2928
+ * provided fields are changed. A supplied `api_key` replaces the stored
2929
+ * (encrypted) key and is never echoed back in the response.
2930
+ *
2931
+ */
2932
+ export const updateEmbeddingProvider = (options) => (options.client ?? client).put({
2933
+ responseType: 'json',
2934
+ security: [{
2935
+ key: 'ApiKeyAuth',
2936
+ scheme: 'bearer',
2937
+ type: 'http'
2938
+ }, {
2939
+ in: 'cookie',
2940
+ name: 'vx_session',
2941
+ type: 'apiKey'
2942
+ }],
2943
+ url: '/api/v1/embedding-providers/{id}',
2944
+ ...options,
2945
+ headers: {
2946
+ 'Content-Type': 'application/json',
2947
+ ...options.headers
2948
+ }
2949
+ });
2950
+ /**
2951
+ * Validate embedding provider configuration
2952
+ *
2953
+ * Validates an embedding provider configuration (connectivity/credentials)
2954
+ * without persisting anything. Validation outcome — including an invalid
2955
+ * configuration — is reported in the 200 response body (`is_valid`,
2956
+ * `message`, `details`); 500 is returned only for internal service errors.
2957
+ *
2958
+ */
2959
+ export const validateEmbeddingProvider = (options) => (options.client ?? client).post({
2960
+ responseType: 'json',
2961
+ security: [{
2962
+ key: 'ApiKeyAuth',
2963
+ scheme: 'bearer',
2964
+ type: 'http'
2965
+ }, {
2966
+ in: 'cookie',
2967
+ name: 'vx_session',
2968
+ type: 'apiKey'
2969
+ }],
2970
+ url: '/api/v1/embedding-providers/validate',
2971
+ ...options,
2972
+ headers: {
2973
+ 'Content-Type': 'application/json',
2974
+ ...options.headers
2975
+ }
2976
+ });
2977
+ /**
2978
+ * List embedding providers (Settings)
2979
+ *
2980
+ * Retrieves all embedding providers belonging to the authenticated user (settings route).
2981
+ * Returns a bare JSON array (no pagination envelope). Encrypted API keys
2982
+ * are never included; each item carries a `has_api_key` boolean instead.
2983
+ *
2984
+ */
2985
+ export const listEmbeddingProvidersSettings = (options) => (options?.client ?? client).get({
2986
+ responseType: 'json',
2987
+ security: [{
2988
+ key: 'ApiKeyAuth',
2989
+ scheme: 'bearer',
2990
+ type: 'http'
2991
+ }, {
2992
+ in: 'cookie',
2993
+ name: 'vx_session',
2994
+ type: 'apiKey'
2995
+ }],
2996
+ url: '/api/v1/settings/embedding-providers',
2997
+ ...options
2998
+ });
2999
+ /**
3000
+ * Create embedding provider (Settings)
3001
+ *
3002
+ * Creates a new embedding provider configuration for the authenticated user (settings route).
3003
+ * The `api_key` supplied in the request is encrypted at rest and is never
3004
+ * returned by the API — responses expose only a `has_api_key` boolean.
3005
+ * Returns 200 (not 201) on success.
3006
+ *
3007
+ */
3008
+ export const createEmbeddingProviderSettings = (options) => (options.client ?? client).post({
3009
+ responseType: 'json',
3010
+ security: [{
3011
+ key: 'ApiKeyAuth',
3012
+ scheme: 'bearer',
3013
+ type: 'http'
3014
+ }, {
3015
+ in: 'cookie',
3016
+ name: 'vx_session',
3017
+ type: 'apiKey'
3018
+ }],
3019
+ url: '/api/v1/settings/embedding-providers',
3020
+ ...options,
3021
+ headers: {
3022
+ 'Content-Type': 'application/json',
3023
+ ...options.headers
3024
+ }
3025
+ });
3026
+ /**
3027
+ * Delete embedding provider (Settings)
3028
+ *
3029
+ * Deletes an embedding provider owned by the authenticated user (settings route).
3030
+ * Deleting the user's last remaining provider is blocked with a 400
3031
+ * `PROVIDER_LAST_DELETE_BLOCKED` error.
3032
+ *
3033
+ */
3034
+ export const deleteEmbeddingProviderSettings = (options) => (options.client ?? client).delete({
3035
+ security: [{
3036
+ key: 'ApiKeyAuth',
3037
+ scheme: 'bearer',
3038
+ type: 'http'
3039
+ }, {
3040
+ in: 'cookie',
3041
+ name: 'vx_session',
3042
+ type: 'apiKey'
3043
+ }],
3044
+ url: '/api/v1/settings/embedding-providers/{id}',
3045
+ ...options
3046
+ });
3047
+ /**
3048
+ * Get embedding provider (Settings)
3049
+ *
3050
+ * Retrieves a single embedding provider owned by the authenticated user (settings route).
3051
+ * The encrypted API key is never returned; `has_api_key` indicates whether
3052
+ * one is stored.
3053
+ *
3054
+ */
3055
+ export const getEmbeddingProviderSettings = (options) => (options.client ?? client).get({
3056
+ responseType: 'json',
3057
+ security: [{
3058
+ key: 'ApiKeyAuth',
3059
+ scheme: 'bearer',
3060
+ type: 'http'
3061
+ }, {
3062
+ in: 'cookie',
3063
+ name: 'vx_session',
3064
+ type: 'apiKey'
3065
+ }],
3066
+ url: '/api/v1/settings/embedding-providers/{id}',
3067
+ ...options
3068
+ });
3069
+ /**
3070
+ * Update embedding provider (Settings)
3071
+ *
3072
+ * Updates an existing embedding provider (settings route). All fields are
3073
+ * optional; only provided fields are changed. A supplied `api_key`
3074
+ * replaces the stored (encrypted) key and is never echoed back in the
3075
+ * response.
3076
+ *
3077
+ */
3078
+ export const updateEmbeddingProviderSettings = (options) => (options.client ?? client).put({
3079
+ responseType: 'json',
3080
+ security: [{
3081
+ key: 'ApiKeyAuth',
3082
+ scheme: 'bearer',
3083
+ type: 'http'
3084
+ }, {
3085
+ in: 'cookie',
3086
+ name: 'vx_session',
3087
+ type: 'apiKey'
3088
+ }],
3089
+ url: '/api/v1/settings/embedding-providers/{id}',
3090
+ ...options,
3091
+ headers: {
3092
+ 'Content-Type': 'application/json',
3093
+ ...options.headers
3094
+ }
3095
+ });
3096
+ /**
3097
+ * Validate embedding provider configuration (Settings)
3098
+ *
3099
+ * Validates an embedding provider configuration (connectivity/credentials)
3100
+ * without persisting anything (settings route). Validation outcome —
3101
+ * including an invalid configuration — is reported in the 200 response
3102
+ * body (`is_valid`, `message`, `details`); 500 is returned only for
3103
+ * internal service errors.
3104
+ *
3105
+ */
3106
+ export const validateEmbeddingProviderSettings = (options) => (options.client ?? client).post({
3107
+ responseType: 'json',
3108
+ security: [{
3109
+ key: 'ApiKeyAuth',
3110
+ scheme: 'bearer',
3111
+ type: 'http'
3112
+ }, {
3113
+ in: 'cookie',
3114
+ name: 'vx_session',
3115
+ type: 'apiKey'
3116
+ }],
3117
+ url: '/api/v1/settings/embedding-providers/validate',
3118
+ ...options,
3119
+ headers: {
3120
+ 'Content-Type': 'application/json',
3121
+ ...options.headers
3122
+ }
3123
+ });
3124
+ /**
3125
+ * List projects
3126
+ *
3127
+ * Returns a paginated list of projects within the specified team. Each
3128
+ * project is enriched with a `github_connected` flag indicating whether
3129
+ * its git URL matches a repository accessible via the team's GitHub App
3130
+ * installation.
3131
+ *
3132
+ */
3133
+ export const listProjects = (options) => (options.client ?? client).get({
3134
+ responseType: 'json',
3135
+ security: [{
3136
+ key: 'ApiKeyAuth',
3137
+ scheme: 'bearer',
3138
+ type: 'http'
3139
+ }, {
3140
+ in: 'cookie',
3141
+ name: 'vx_session',
3142
+ type: 'apiKey'
3143
+ }],
3144
+ url: '/api/v1/{team_id}/projects',
3145
+ ...options
3146
+ });
3147
+ /**
3148
+ * Create new project
3149
+ *
3150
+ * Creates a new project within the specified team. Project slugs must be
3151
+ * unique within the team. Requires team membership and an active subscription.
3152
+ *
3153
+ */
3154
+ export const createProject = (options) => (options.client ?? client).post({
3155
+ responseType: 'json',
3156
+ security: [{
3157
+ key: 'ApiKeyAuth',
3158
+ scheme: 'bearer',
3159
+ type: 'http'
3160
+ }, {
3161
+ in: 'cookie',
3162
+ name: 'vx_session',
3163
+ type: 'apiKey'
3164
+ }],
3165
+ url: '/api/v1/{team_id}/projects',
3166
+ ...options,
3167
+ headers: {
3168
+ 'Content-Type': 'application/json',
3169
+ ...options.headers
3170
+ }
3171
+ });
3172
+ /**
3173
+ * Delete project
3174
+ *
3175
+ * Deletes a project identified by its slug. The last remaining project in
3176
+ * a team cannot be deleted (returns 400).
3177
+ *
3178
+ */
3179
+ export const deleteProject = (options) => (options.client ?? client).delete({
3180
+ security: [{
3181
+ key: 'ApiKeyAuth',
3182
+ scheme: 'bearer',
3183
+ type: 'http'
3184
+ }, {
3185
+ in: 'cookie',
3186
+ name: 'vx_session',
3187
+ type: 'apiKey'
3188
+ }],
3189
+ url: '/api/v1/{team_id}/projects/{slug}',
3190
+ ...options
3191
+ });
3192
+ /**
3193
+ * Get project by slug
3194
+ *
3195
+ * Returns a single project identified by its URL-encoded slug within the specified team.
3196
+ */
3197
+ export const getProject = (options) => (options.client ?? client).get({
3198
+ responseType: 'json',
3199
+ security: [{
3200
+ key: 'ApiKeyAuth',
3201
+ scheme: 'bearer',
3202
+ type: 'http'
3203
+ }, {
3204
+ in: 'cookie',
3205
+ name: 'vx_session',
3206
+ type: 'apiKey'
3207
+ }],
3208
+ url: '/api/v1/{team_id}/projects/{slug}',
3209
+ ...options
3210
+ });
3211
+ /**
3212
+ * Update project
3213
+ *
3214
+ * Partially updates a project identified by its slug. Only fields present
3215
+ * in the request body are changed. Uses optimistic locking — a concurrent
3216
+ * modification returns 409. Projects cannot be moved between teams.
3217
+ *
3218
+ */
3219
+ export const updateProject = (options) => (options.client ?? client).put({
3220
+ responseType: 'json',
3221
+ security: [{
3222
+ key: 'ApiKeyAuth',
3223
+ scheme: 'bearer',
3224
+ type: 'http'
3225
+ }, {
3226
+ in: 'cookie',
3227
+ name: 'vx_session',
3228
+ type: 'apiKey'
3229
+ }],
3230
+ url: '/api/v1/{team_id}/projects/{slug}',
3231
+ ...options,
3232
+ headers: {
3233
+ 'Content-Type': 'application/json',
3234
+ ...options.headers
3235
+ }
3236
+ });
3237
+ /**
3238
+ * Get project migration inventory
3239
+ *
3240
+ * Returns a count and item list of all migratable resources (prompts,
3241
+ * artifacts, spec libraries, feed items) in the given project, used to
3242
+ * drive the migration UI.
3243
+ *
3244
+ */
3245
+ export const getProjectMigrationInventory = (options) => (options.client ?? client).get({
3246
+ responseType: 'json',
3247
+ security: [{
3248
+ key: 'ApiKeyAuth',
3249
+ scheme: 'bearer',
3250
+ type: 'http'
3251
+ }, {
3252
+ in: 'cookie',
3253
+ name: 'vx_session',
3254
+ type: 'apiKey'
3255
+ }],
3256
+ url: '/api/v1/{team_id}/projects/{project_id}/migration/inventory',
3257
+ ...options
3258
+ });
3259
+ /**
3260
+ * Migrate project resources
3261
+ *
3262
+ * Moves selected resources (prompts, artifacts, spec libraries, feed items)
3263
+ * from the source project to a destination project in the same team.
3264
+ * Slug collisions are handled per the requested conflict policy
3265
+ * (skip, rename, or overwrite; defaults to skip). Returns per-type
3266
+ * migrated counts plus skipped/failed outcomes with a 200 status.
3267
+ *
3268
+ */
3269
+ export const migrateProject = (options) => (options.client ?? client).post({
3270
+ responseType: 'json',
3271
+ security: [{
3272
+ key: 'ApiKeyAuth',
3273
+ scheme: 'bearer',
3274
+ type: 'http'
3275
+ }, {
3276
+ in: 'cookie',
3277
+ name: 'vx_session',
3278
+ type: 'apiKey'
3279
+ }],
3280
+ url: '/api/v1/{team_id}/projects/{project_id}/migration',
3281
+ ...options,
3282
+ headers: {
3283
+ 'Content-Type': 'application/json',
3284
+ ...options.headers
3285
+ }
3286
+ });
3287
+ /**
3288
+ * List activities
3289
+ *
3290
+ * Returns a paginated list of the authenticated user's activities, with
3291
+ * optional filtering by type, entity, session, free-text search, and date
3292
+ * range. Activities are user-scoped (not team-scoped). Invalid filter or
3293
+ * pagination values are silently ignored and defaults applied.
3294
+ *
3295
+ */
3296
+ export const listActivities = (options) => (options?.client ?? client).get({
3297
+ responseType: 'json',
3298
+ security: [{
3299
+ key: 'ApiKeyAuth',
3300
+ scheme: 'bearer',
3301
+ type: 'http'
3302
+ }, {
3303
+ in: 'cookie',
3304
+ name: 'vx_session',
3305
+ type: 'apiKey'
3306
+ }],
3307
+ url: '/api/v1/activities',
3308
+ ...options
3309
+ });
3310
+ /**
3311
+ * Create activity
3312
+ *
3313
+ * Manually records an activity for the authenticated user. The server
3314
+ * enriches the activity metadata with manual_creation/created_via flags
3315
+ * and overwrites source_ip and user_agent from the request.
3316
+ *
3317
+ */
3318
+ export const createActivity = (options) => (options.client ?? client).post({
3319
+ responseType: 'json',
3320
+ security: [{
3321
+ key: 'ApiKeyAuth',
3322
+ scheme: 'bearer',
3323
+ type: 'http'
3324
+ }, {
3325
+ in: 'cookie',
3326
+ name: 'vx_session',
3327
+ type: 'apiKey'
3328
+ }],
3329
+ url: '/api/v1/activities',
3330
+ ...options,
3331
+ headers: {
3332
+ 'Content-Type': 'application/json',
3333
+ ...options.headers
3334
+ }
3335
+ });
3336
+ /**
3337
+ * Get activity statistics
3338
+ *
3339
+ * Returns aggregated activity statistics for the authenticated user,
3340
+ * including totals, top activity/entity types, recent activities, and a
3341
+ * per-day count for the current week.
3342
+ *
3343
+ */
3344
+ export const getActivityStats = (options) => (options?.client ?? client).get({
3345
+ responseType: 'json',
3346
+ security: [{
3347
+ key: 'ApiKeyAuth',
3348
+ scheme: 'bearer',
3349
+ type: 'http'
3350
+ }, {
3351
+ in: 'cookie',
3352
+ name: 'vx_session',
3353
+ type: 'apiKey'
3354
+ }],
3355
+ url: '/api/v1/activities/stats',
3356
+ ...options
3357
+ });
3358
+ /**
3359
+ * Get activity and entity types
3360
+ *
3361
+ * Returns the catalog of activity types this endpoint exposes (a curated subset of all recorded types) and the entity types, in a single response.
3362
+ */
3363
+ export const getActivityTypes = (options) => (options?.client ?? client).get({
3364
+ responseType: 'json',
3365
+ security: [{
3366
+ key: 'ApiKeyAuth',
3367
+ scheme: 'bearer',
3368
+ type: 'http'
3369
+ }, {
3370
+ in: 'cookie',
3371
+ name: 'vx_session',
3372
+ type: 'apiKey'
3373
+ }],
3374
+ url: '/api/v1/activities/types',
3375
+ ...options
3376
+ });
3377
+ /**
3378
+ * Get entity types
3379
+ *
3380
+ * Returns the static catalog of known entity types as a plain string array.
3381
+ */
3382
+ export const getActivityEntityTypes = (options) => (options?.client ?? client).get({
3383
+ responseType: 'json',
3384
+ security: [{
3385
+ key: 'ApiKeyAuth',
3386
+ scheme: 'bearer',
3387
+ type: 'http'
3388
+ }, {
3389
+ in: 'cookie',
3390
+ name: 'vx_session',
3391
+ type: 'apiKey'
3392
+ }],
3393
+ url: '/api/v1/activities/entity-types',
3394
+ ...options
3395
+ });
3396
+ /**
3397
+ * Get activity by ID
3398
+ *
3399
+ * Returns a single activity owned by the authenticated user.
3400
+ */
3401
+ export const getActivity = (options) => (options.client ?? client).get({
3402
+ responseType: 'json',
3403
+ security: [{
3404
+ key: 'ApiKeyAuth',
3405
+ scheme: 'bearer',
3406
+ type: 'http'
3407
+ }, {
3408
+ in: 'cookie',
3409
+ name: 'vx_session',
3410
+ type: 'apiKey'
3411
+ }],
3412
+ url: '/api/v1/activities/{id}',
3413
+ ...options
3414
+ });
3415
+ /**
3416
+ * Get user preferences
3417
+ *
3418
+ * Returns the authenticated user's preferences (email notification settings and
3419
+ * per-channel/per-type notification delivery preferences). Defaults are created
3420
+ * on first access if the user has no stored preferences.
3421
+ *
3422
+ */
3423
+ export const getPreferences = (options) => (options?.client ?? client).get({
3424
+ responseType: 'json',
3425
+ security: [{
3426
+ key: 'ApiKeyAuth',
3427
+ scheme: 'bearer',
3428
+ type: 'http'
3429
+ }, {
3430
+ in: 'cookie',
3431
+ name: 'vx_session',
3432
+ type: 'apiKey'
3433
+ }],
3434
+ url: '/api/v1/preferences',
3435
+ ...options
3436
+ });
3437
+ /**
3438
+ * Update user preferences
3439
+ *
3440
+ * Updates the authenticated user's preferences. Both top-level fields are optional;
3441
+ * only the categories present in the request body are updated.
3442
+ *
3443
+ */
3444
+ export const updatePreferences = (options) => (options.client ?? client).put({
3445
+ responseType: 'json',
3446
+ security: [{
3447
+ key: 'ApiKeyAuth',
3448
+ scheme: 'bearer',
3449
+ type: 'http'
3450
+ }, {
3451
+ in: 'cookie',
3452
+ name: 'vx_session',
3453
+ type: 'apiKey'
3454
+ }],
3455
+ url: '/api/v1/preferences',
3456
+ ...options,
3457
+ headers: {
3458
+ 'Content-Type': 'application/json',
3459
+ ...options.headers
3460
+ }
3461
+ });
3462
+ /**
3463
+ * Delete a device token
3464
+ *
3465
+ * Removes a push notification device token for the authenticated user. The token to
3466
+ * delete is supplied in the JSON request body. Request body is capped at 4 KB.
3467
+ *
3468
+ */
3469
+ export const deleteDeviceToken = (options) => (options.client ?? client).delete({
3470
+ security: [{
3471
+ key: 'ApiKeyAuth',
3472
+ scheme: 'bearer',
3473
+ type: 'http'
3474
+ }, {
3475
+ in: 'cookie',
3476
+ name: 'vx_session',
3477
+ type: 'apiKey'
3478
+ }],
3479
+ url: '/api/v1/device-tokens',
3480
+ ...options,
3481
+ headers: {
3482
+ 'Content-Type': 'application/json',
3483
+ ...options.headers
3484
+ }
3485
+ });
3486
+ /**
3487
+ * Register a device token
3488
+ *
3489
+ * Upserts a push notification device token for the authenticated user. Currently
3490
+ * only the "web" platform (Web Push / FCM browser push) is supported. Re-registering
3491
+ * the same token for the same user is idempotent. Request body is capped at 4 KB.
3492
+ * Free-tier accessible — push notification registration is not a gated resource.
3493
+ *
3494
+ */
3495
+ export const registerDeviceToken = (options) => (options.client ?? client).post({
3496
+ security: [{
3497
+ key: 'ApiKeyAuth',
3498
+ scheme: 'bearer',
3499
+ type: 'http'
3500
+ }, {
3501
+ in: 'cookie',
3502
+ name: 'vx_session',
3503
+ type: 'apiKey'
3504
+ }],
3505
+ url: '/api/v1/device-tokens',
3506
+ ...options,
3507
+ headers: {
3508
+ 'Content-Type': 'application/json',
3509
+ ...options.headers
3510
+ }
3511
+ });
3512
+ /**
3513
+ * Mark onboarding as completed
3514
+ *
3515
+ * Marks the authenticated user's onboarding flow as completed and returns the
3516
+ * updated user object. Takes no request body.
3517
+ *
3518
+ */
3519
+ export const completeOnboarding = (options) => (options?.client ?? client).post({
3520
+ responseType: 'json',
3521
+ security: [{
3522
+ key: 'ApiKeyAuth',
3523
+ scheme: 'bearer',
3524
+ type: 'http'
3525
+ }, {
3526
+ in: 'cookie',
3527
+ name: 'vx_session',
3528
+ type: 'apiKey'
3529
+ }],
3530
+ url: '/api/v1/user/onboarding/complete',
3531
+ ...options
3532
+ });
3533
+ /**
3534
+ * Send a contact form message
3535
+ *
3536
+ * Submits a contact form message from the public marketing website and fans it out
3537
+ * to the email provider. This is a public endpoint (no authentication) with a very
3538
+ * strict per-IP rate limit; exceeding it returns 429. Request body is capped at 64 KB.
3539
+ * Note — error responses deviate from the standard `ErrorResponse` shape: validation
3540
+ * failures (400) and email-send failures (500) return a `ContactFormResponse` with
3541
+ * `success: false`, while malformed JSON (400) and oversized bodies (413) return a
3542
+ * plain-text message.
3543
+ *
3544
+ */
3545
+ export const sendContactMessage = (options) => (options.client ?? client).post({
3546
+ responseType: 'json',
3547
+ url: '/api/v1/website/contact/send-message',
3548
+ ...options,
3549
+ headers: {
3550
+ 'Content-Type': 'application/json',
3551
+ ...options.headers
3552
+ }
3553
+ });
3554
+ /**
3555
+ * List feed item replies
3556
+ *
3557
+ * Returns paginated threaded replies for the specified feed item, team-scoped
3558
+ * (free-tier accessible).
3559
+ *
3560
+ */
3561
+ export const listFeedItemReplies = (options) => (options.client ?? client).get({
3562
+ responseType: 'json',
3563
+ security: [{
3564
+ key: 'ApiKeyAuth',
3565
+ scheme: 'bearer',
3566
+ type: 'http'
3567
+ }, {
3568
+ in: 'cookie',
3569
+ name: 'vx_session',
3570
+ type: 'apiKey'
3571
+ }],
3572
+ url: '/api/v1/{team_id}/feed-items/{item_id}/replies',
3573
+ ...options
3574
+ });
3575
+ /**
3576
+ * Create a feed item reply
3577
+ *
3578
+ * Posts a threaded reply to the specified feed item, team-scoped (free-tier
3579
+ * accessible). Replies cannot be posted to archived feed items. Reply creation
3580
+ * counts against the user's feed item resource limit.
3581
+ *
3582
+ */
3583
+ export const createFeedItemReply = (options) => (options.client ?? client).post({
3584
+ responseType: 'json',
3585
+ security: [{
3586
+ key: 'ApiKeyAuth',
3587
+ scheme: 'bearer',
3588
+ type: 'http'
3589
+ }, {
3590
+ in: 'cookie',
3591
+ name: 'vx_session',
3592
+ type: 'apiKey'
3593
+ }],
3594
+ url: '/api/v1/{team_id}/feed-items/{item_id}/replies',
3595
+ ...options,
3596
+ headers: {
3597
+ 'Content-Type': 'application/json',
3598
+ ...options.headers
3599
+ }
3600
+ });