@studyfetch/sdk 1.43.0 → 1.46.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 (149) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/package.json +1 -1
  3. package/resources/v1/assignment-grader/assignment-grader.d.mts +12 -0
  4. package/resources/v1/assignment-grader/assignment-grader.d.mts.map +1 -1
  5. package/resources/v1/assignment-grader/assignment-grader.d.ts +12 -0
  6. package/resources/v1/assignment-grader/assignment-grader.d.ts.map +1 -1
  7. package/resources/v1/assignment-grader/assignment-grader.js.map +1 -1
  8. package/resources/v1/assignment-grader/assignment-grader.mjs.map +1 -1
  9. package/resources/v1/assignment-grader/rubric-templates.d.mts +8 -0
  10. package/resources/v1/assignment-grader/rubric-templates.d.mts.map +1 -1
  11. package/resources/v1/assignment-grader/rubric-templates.d.ts +8 -0
  12. package/resources/v1/assignment-grader/rubric-templates.d.ts.map +1 -1
  13. package/resources/v1/chat.d.mts +53 -1
  14. package/resources/v1/chat.d.mts.map +1 -1
  15. package/resources/v1/chat.d.ts +53 -1
  16. package/resources/v1/chat.d.ts.map +1 -1
  17. package/resources/v1/chat.js +30 -0
  18. package/resources/v1/chat.js.map +1 -1
  19. package/resources/v1/chat.mjs +30 -0
  20. package/resources/v1/chat.mjs.map +1 -1
  21. package/resources/v1/components.d.mts +39 -7
  22. package/resources/v1/components.d.mts.map +1 -1
  23. package/resources/v1/components.d.ts +39 -7
  24. package/resources/v1/components.d.ts.map +1 -1
  25. package/resources/v1/embed/context.d.mts +61 -0
  26. package/resources/v1/embed/context.d.mts.map +1 -0
  27. package/resources/v1/embed/context.d.ts +61 -0
  28. package/resources/v1/embed/context.d.ts.map +1 -0
  29. package/resources/v1/embed/context.js +61 -0
  30. package/resources/v1/embed/context.js.map +1 -0
  31. package/resources/v1/embed/context.mjs +57 -0
  32. package/resources/v1/embed/context.mjs.map +1 -0
  33. package/resources/v1/embed/embed.d.mts +4 -0
  34. package/resources/v1/embed/embed.d.mts.map +1 -1
  35. package/resources/v1/embed/embed.d.ts +4 -0
  36. package/resources/v1/embed/embed.d.ts.map +1 -1
  37. package/resources/v1/embed/embed.js +4 -0
  38. package/resources/v1/embed/embed.js.map +1 -1
  39. package/resources/v1/embed/embed.mjs +4 -0
  40. package/resources/v1/embed/embed.mjs.map +1 -1
  41. package/resources/v1/embed/index.d.mts +1 -0
  42. package/resources/v1/embed/index.d.mts.map +1 -1
  43. package/resources/v1/embed/index.d.ts +1 -0
  44. package/resources/v1/embed/index.d.ts.map +1 -1
  45. package/resources/v1/embed/index.js +3 -1
  46. package/resources/v1/embed/index.js.map +1 -1
  47. package/resources/v1/embed/index.mjs +1 -0
  48. package/resources/v1/embed/index.mjs.map +1 -1
  49. package/resources/v1/folders.d.mts +25 -1
  50. package/resources/v1/folders.d.mts.map +1 -1
  51. package/resources/v1/folders.d.ts +25 -1
  52. package/resources/v1/folders.d.ts.map +1 -1
  53. package/resources/v1/folders.js +11 -0
  54. package/resources/v1/folders.js.map +1 -1
  55. package/resources/v1/folders.mjs +11 -0
  56. package/resources/v1/folders.mjs.map +1 -1
  57. package/resources/v1/index.d.mts +3 -2
  58. package/resources/v1/index.d.mts.map +1 -1
  59. package/resources/v1/index.d.ts +3 -2
  60. package/resources/v1/index.d.ts.map +1 -1
  61. package/resources/v1/index.js +3 -1
  62. package/resources/v1/index.js.map +1 -1
  63. package/resources/v1/index.mjs +1 -0
  64. package/resources/v1/index.mjs.map +1 -1
  65. package/resources/v1/materials/upload.d.mts +38 -4
  66. package/resources/v1/materials/upload.d.mts.map +1 -1
  67. package/resources/v1/materials/upload.d.ts +38 -4
  68. package/resources/v1/materials/upload.d.ts.map +1 -1
  69. package/resources/v1/materials/upload.js +20 -3
  70. package/resources/v1/materials/upload.js.map +1 -1
  71. package/resources/v1/materials/upload.mjs +19 -2
  72. package/resources/v1/materials/upload.mjs.map +1 -1
  73. package/resources/v1/pdf-generator/get.d.mts +4 -0
  74. package/resources/v1/pdf-generator/get.d.mts.map +1 -1
  75. package/resources/v1/pdf-generator/get.d.ts +4 -0
  76. package/resources/v1/pdf-generator/get.d.ts.map +1 -1
  77. package/resources/v1/pdf-generator/pdf-generator.d.mts +29 -0
  78. package/resources/v1/pdf-generator/pdf-generator.d.mts.map +1 -1
  79. package/resources/v1/pdf-generator/pdf-generator.d.ts +29 -0
  80. package/resources/v1/pdf-generator/pdf-generator.d.ts.map +1 -1
  81. package/resources/v1/pdf-generator/pdf-generator.js.map +1 -1
  82. package/resources/v1/pdf-generator/pdf-generator.mjs.map +1 -1
  83. package/resources/v1/performance-insights/conversations.d.mts +131 -0
  84. package/resources/v1/performance-insights/conversations.d.mts.map +1 -0
  85. package/resources/v1/performance-insights/conversations.d.ts +131 -0
  86. package/resources/v1/performance-insights/conversations.d.ts.map +1 -0
  87. package/resources/v1/performance-insights/conversations.js +131 -0
  88. package/resources/v1/performance-insights/conversations.js.map +1 -0
  89. package/resources/v1/performance-insights/conversations.mjs +127 -0
  90. package/resources/v1/performance-insights/conversations.mjs.map +1 -0
  91. package/resources/v1/performance-insights/index.d.mts +3 -0
  92. package/resources/v1/performance-insights/index.d.mts.map +1 -0
  93. package/resources/v1/performance-insights/index.d.ts +3 -0
  94. package/resources/v1/performance-insights/index.d.ts.map +1 -0
  95. package/resources/v1/performance-insights/index.js +9 -0
  96. package/resources/v1/performance-insights/index.js.map +1 -0
  97. package/resources/v1/performance-insights/index.mjs +4 -0
  98. package/resources/v1/performance-insights/index.mjs.map +1 -0
  99. package/resources/v1/performance-insights/performance-insights.d.mts +139 -0
  100. package/resources/v1/performance-insights/performance-insights.d.mts.map +1 -0
  101. package/resources/v1/performance-insights/performance-insights.d.ts +139 -0
  102. package/resources/v1/performance-insights/performance-insights.d.ts.map +1 -0
  103. package/resources/v1/performance-insights/performance-insights.js +55 -0
  104. package/resources/v1/performance-insights/performance-insights.js.map +1 -0
  105. package/resources/v1/performance-insights/performance-insights.mjs +50 -0
  106. package/resources/v1/performance-insights/performance-insights.mjs.map +1 -0
  107. package/resources/v1/performance-insights.d.mts +2 -0
  108. package/resources/v1/performance-insights.d.mts.map +1 -0
  109. package/resources/v1/performance-insights.d.ts +2 -0
  110. package/resources/v1/performance-insights.d.ts.map +1 -0
  111. package/resources/v1/performance-insights.js +6 -0
  112. package/resources/v1/performance-insights.js.map +1 -0
  113. package/resources/v1/performance-insights.mjs +3 -0
  114. package/resources/v1/performance-insights.mjs.map +1 -0
  115. package/resources/v1/usage.d.mts +8 -0
  116. package/resources/v1/usage.d.mts.map +1 -1
  117. package/resources/v1/usage.d.ts +8 -0
  118. package/resources/v1/usage.d.ts.map +1 -1
  119. package/resources/v1/v1.d.mts +8 -4
  120. package/resources/v1/v1.d.mts.map +1 -1
  121. package/resources/v1/v1.d.ts +8 -4
  122. package/resources/v1/v1.d.ts.map +1 -1
  123. package/resources/v1/v1.js +4 -0
  124. package/resources/v1/v1.js.map +1 -1
  125. package/resources/v1/v1.mjs +4 -0
  126. package/resources/v1/v1.mjs.map +1 -1
  127. package/src/resources/v1/assignment-grader/assignment-grader.ts +15 -0
  128. package/src/resources/v1/assignment-grader/rubric-templates.ts +10 -0
  129. package/src/resources/v1/chat.ts +81 -1
  130. package/src/resources/v1/components.ts +45 -7
  131. package/src/resources/v1/embed/context.ts +96 -0
  132. package/src/resources/v1/embed/embed.ts +11 -0
  133. package/src/resources/v1/embed/index.ts +6 -0
  134. package/src/resources/v1/folders.ts +35 -0
  135. package/src/resources/v1/index.ts +9 -1
  136. package/src/resources/v1/materials/upload.ts +74 -7
  137. package/src/resources/v1/pdf-generator/get.ts +5 -0
  138. package/src/resources/v1/pdf-generator/pdf-generator.ts +35 -0
  139. package/src/resources/v1/performance-insights/conversations.ts +238 -0
  140. package/src/resources/v1/performance-insights/index.ts +17 -0
  141. package/src/resources/v1/performance-insights/performance-insights.ts +214 -0
  142. package/src/resources/v1/performance-insights.ts +3 -0
  143. package/src/resources/v1/usage.ts +10 -0
  144. package/src/resources/v1/v1.ts +27 -2
  145. package/src/version.ts +1 -1
  146. package/version.d.mts +1 -1
  147. package/version.d.ts +1 -1
  148. package/version.js +1 -1
  149. package/version.mjs +1 -1
@@ -3,12 +3,15 @@
3
3
  import { APIResource } from '../../../core/resource';
4
4
  import * as ComponentAPI from './component';
5
5
  import { Component, ComponentInteractParams, ComponentRetrieveParams } from './component';
6
+ import * as ContextAPI from './context';
7
+ import { Context, ContextClearParams, ContextPushParams, ContextRetrieveParams } from './context';
6
8
  import { APIPromise } from '../../../core/api-promise';
7
9
  import { buildHeaders } from '../../../internal/headers';
8
10
  import { RequestOptions } from '../../../internal/request-options';
9
11
 
10
12
  export class Embed extends APIResource {
11
13
  component: ComponentAPI.Component = new ComponentAPI.Component(this._client);
14
+ context: ContextAPI.Context = new ContextAPI.Context(this._client);
12
15
 
13
16
  /**
14
17
  * Get theme CSS for embed
@@ -73,6 +76,7 @@ export interface EmbedVerifyParams {
73
76
  }
74
77
 
75
78
  Embed.Component = Component;
79
+ Embed.Context = Context;
76
80
 
77
81
  export declare namespace Embed {
78
82
  export { type EmbedGetThemeParams as EmbedGetThemeParams, type EmbedVerifyParams as EmbedVerifyParams };
@@ -82,4 +86,11 @@ export declare namespace Embed {
82
86
  type ComponentRetrieveParams as ComponentRetrieveParams,
83
87
  type ComponentInteractParams as ComponentInteractParams,
84
88
  };
89
+
90
+ export {
91
+ Context as Context,
92
+ type ContextRetrieveParams as ContextRetrieveParams,
93
+ type ContextClearParams as ContextClearParams,
94
+ type ContextPushParams as ContextPushParams,
95
+ };
85
96
  }
@@ -1,4 +1,10 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  export { Component, type ComponentRetrieveParams, type ComponentInteractParams } from './component';
4
+ export {
5
+ Context,
6
+ type ContextRetrieveParams,
7
+ type ContextClearParams,
8
+ type ContextPushParams,
9
+ } from './context';
4
10
  export { Embed, type EmbedGetThemeParams, type EmbedVerifyParams } from './embed';
@@ -23,6 +23,22 @@ export class Folders extends APIResource {
23
23
  return this._client.post('/api/v1/folders', { body, ...options });
24
24
  }
25
25
 
26
+ /**
27
+ * Get folder ID by folder name
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const response = await client.v1.folders.getByName('name');
32
+ * ```
33
+ */
34
+ getByName(
35
+ name: string,
36
+ query: FolderGetByNameParams | null | undefined = {},
37
+ options?: RequestOptions,
38
+ ): APIPromise<FolderGetByNameResponse> {
39
+ return this._client.get(path`/api/v1/folders/by-name/${name}`, { query, ...options });
40
+ }
41
+
26
42
  /**
27
43
  * Get folder by ID
28
44
  *
@@ -196,6 +212,16 @@ export interface FolderCreateResponse {
196
212
  parentFolderId?: string | null;
197
213
  }
198
214
 
215
+ /**
216
+ * Response for getting folder ID by name
217
+ */
218
+ export interface FolderGetByNameResponse {
219
+ /**
220
+ * Folder ID
221
+ */
222
+ folderId: string;
223
+ }
224
+
199
225
  export interface FolderRetrieveResponse {
200
226
  /**
201
227
  * Folder ID
@@ -486,6 +512,13 @@ export interface FolderCreateParams {
486
512
  parentFolderId?: string;
487
513
  }
488
514
 
515
+ export interface FolderGetByNameParams {
516
+ /**
517
+ * Parent folder ID for accurate matching (optional)
518
+ */
519
+ parentFolderId?: string;
520
+ }
521
+
489
522
  export interface FolderUpdateParams {
490
523
  /**
491
524
  * New folder description
@@ -543,6 +576,7 @@ export declare namespace Folders {
543
576
  export {
544
577
  type FolderMetadata as FolderMetadata,
545
578
  type FolderCreateResponse as FolderCreateResponse,
579
+ type FolderGetByNameResponse as FolderGetByNameResponse,
546
580
  type FolderRetrieveResponse as FolderRetrieveResponse,
547
581
  type FolderUpdateResponse as FolderUpdateResponse,
548
582
  type FolderListResponse as FolderListResponse,
@@ -550,6 +584,7 @@ export declare namespace Folders {
550
584
  type FolderListMaterialsResponse as FolderListMaterialsResponse,
551
585
  type FolderMoveResponse as FolderMoveResponse,
552
586
  type FolderCreateParams as FolderCreateParams,
587
+ type FolderGetByNameParams as FolderGetByNameParams,
553
588
  type FolderUpdateParams as FolderUpdateParams,
554
589
  type FolderListParams as FolderListParams,
555
590
  type FolderListMaterialsParams as FolderListMaterialsParams,
@@ -9,7 +9,7 @@ export {
9
9
  type AssignmentGraderGetAllResponse,
10
10
  type AssignmentGraderCreateParams,
11
11
  } from './assignment-grader/index';
12
- export { Chat, type ChatStreamParams } from './chat';
12
+ export { Chat, type ChatRetrieveFeedbackParams, type ChatStreamParams } from './chat';
13
13
  export {
14
14
  ChatAnalytics,
15
15
  type ChatAnalyticsResponse,
@@ -33,6 +33,7 @@ export {
33
33
  Folders,
34
34
  type FolderMetadata,
35
35
  type FolderCreateResponse,
36
+ type FolderGetByNameResponse,
36
37
  type FolderRetrieveResponse,
37
38
  type FolderUpdateResponse,
38
39
  type FolderListResponse,
@@ -40,6 +41,7 @@ export {
40
41
  type FolderListMaterialsResponse,
41
42
  type FolderMoveResponse,
42
43
  type FolderCreateParams,
44
+ type FolderGetByNameParams,
43
45
  type FolderUpdateParams,
44
46
  type FolderListParams,
45
47
  type FolderListMaterialsParams,
@@ -77,6 +79,12 @@ export {
77
79
  type PdfGeneratorGetAllResponse,
78
80
  type PdfGeneratorCreateParams,
79
81
  } from './pdf-generator/index';
82
+ export {
83
+ PerformanceInsights,
84
+ type PerformanceInsightsGenerateEmbedResponse,
85
+ type PerformanceInsightsGenerateEmbedParams,
86
+ type PerformanceInsightsStreamParams,
87
+ } from './performance-insights/index';
80
88
  export {
81
89
  Usage,
82
90
  type UsageGetStatsParams,
@@ -3,7 +3,7 @@
3
3
  import { APIResource } from '../../../core/resource';
4
4
  import * as MaterialsAPI from './materials';
5
5
  import { APIPromise } from '../../../core/api-promise';
6
- import { type Uploadable } from '../../../core/uploads';
6
+ import { toFile, type Uploadable } from '../../../core/uploads';
7
7
  import { RequestOptions } from '../../../internal/request-options';
8
8
  import { multipartFormRequestOptions } from '../../../internal/uploads';
9
9
 
@@ -65,7 +65,7 @@ export class Upload extends APIResource {
65
65
  ): APIPromise<MaterialsAPI.MaterialResponse> {
66
66
  return this._client.post(
67
67
  '/api/v1/materials/upload',
68
- multipartFormRequestOptions({ body, ...options }, this._client),
68
+ multipartUploadRequestOptions(body, options, this._client),
69
69
  );
70
70
  }
71
71
 
@@ -88,7 +88,7 @@ export class Upload extends APIResource {
88
88
  ): APIPromise<MaterialsAPI.MaterialResponse> {
89
89
  return this._client.post(
90
90
  '/api/v1/materials/upload/file-and-process',
91
- multipartFormRequestOptions({ body, ...options }, this._client),
91
+ multipartUploadRequestOptions(body, options, this._client),
92
92
  );
93
93
  }
94
94
 
@@ -201,16 +201,29 @@ export interface UploadUploadFileParams {
201
201
  */
202
202
  name: string;
203
203
 
204
+ /**
205
+ * Content-Type/MIME type of the file (e.g., video/mp4, application/pdf).
206
+ * If not provided, the uploadable's existing type is used.
207
+ */
208
+ contentType?: string;
209
+
204
210
  /**
205
211
  * Whether to extract images from files (true/false, default: true)
206
212
  */
207
213
  extractImages?: string;
208
214
 
209
215
  /**
210
- * Folder ID (optional)
216
+ * Folder ID (optional). If folderPath is provided, folderId will be ignored.
211
217
  */
212
218
  folderId?: string;
213
219
 
220
+ /**
221
+ * Relative folder path (e.g., "folder1/folder2"). Folders will be created if
222
+ * they don't exist. The filename can be included and will be extracted
223
+ * automatically.
224
+ */
225
+ folderPath?: string;
226
+
214
227
  /**
215
228
  * JSON string of references array (optional)
216
229
  */
@@ -225,16 +238,29 @@ export interface UploadUploadFileAndProcessParams {
225
238
  */
226
239
  name: string;
227
240
 
241
+ /**
242
+ * Content-Type/MIME type of the file (e.g., video/mp4, application/pdf).
243
+ * If not provided, the uploadable's existing type is used.
244
+ */
245
+ contentType?: string;
246
+
228
247
  /**
229
248
  * Whether to extract images from files (true/false, default: true)
230
249
  */
231
250
  extractImages?: string;
232
251
 
233
252
  /**
234
- * Folder ID (optional)
253
+ * Folder ID (optional). If folderPath is provided, folderId will be ignored.
235
254
  */
236
255
  folderId?: string;
237
256
 
257
+ /**
258
+ * Relative folder path (e.g., "folder1/folder2"). Folders will be created if
259
+ * they don't exist. The filename can be included and will be extracted
260
+ * automatically.
261
+ */
262
+ folderPath?: string;
263
+
238
264
  /**
239
265
  * Polling interval in milliseconds (default: 2000)
240
266
  */
@@ -258,9 +284,16 @@ export interface UploadUploadFromURLParams {
258
284
  url: string;
259
285
 
260
286
  /**
261
- * Folder ID (optional)
287
+ * Folder ID (optional). If folderPath is provided, folderId will be ignored.
262
288
  */
263
289
  folderId?: string;
290
+
291
+ /**
292
+ * Relative folder path (e.g., "folder1/folder2"). Folders will be created if
293
+ * they don't exist. The filename can be included and will be extracted
294
+ * automatically.
295
+ */
296
+ folderPath?: string;
264
297
  }
265
298
 
266
299
  export interface UploadUploadFromURLAndProcessParams {
@@ -275,10 +308,17 @@ export interface UploadUploadFromURLAndProcessParams {
275
308
  url: string;
276
309
 
277
310
  /**
278
- * Folder ID (optional)
311
+ * Folder ID (optional). If folderPath is provided, folderId will be ignored.
279
312
  */
280
313
  folderId?: string;
281
314
 
315
+ /**
316
+ * Relative folder path (e.g., "folder1/folder2"). Folders will be created if
317
+ * they don't exist. The filename can be included and will be extracted
318
+ * automatically.
319
+ */
320
+ folderPath?: string;
321
+
282
322
  /**
283
323
  * Polling interval in milliseconds (default: 2 seconds)
284
324
  */
@@ -306,3 +346,30 @@ export declare namespace Upload {
306
346
  type UploadUploadFromURLAndProcessParams as UploadUploadFromURLAndProcessParams,
307
347
  };
308
348
  }
349
+
350
+ type MultipartClient = Parameters<typeof multipartFormRequestOptions>[1];
351
+ type MultipartUploadBody = UploadUploadFileParams | UploadUploadFileAndProcessParams;
352
+
353
+ async function multipartUploadRequestOptions(
354
+ body: MultipartUploadBody,
355
+ options: RequestOptions | undefined,
356
+ client: MultipartClient,
357
+ ): Promise<RequestOptions> {
358
+ const { contentType, ...bodyWithoutContentType } = body;
359
+ const multipartBody =
360
+ contentType ?
361
+ { ...bodyWithoutContentType, file: await toUploadableWithContentType(body.file, contentType) }
362
+ : bodyWithoutContentType;
363
+
364
+ return multipartFormRequestOptions({ body: multipartBody, ...options }, client);
365
+ }
366
+
367
+ async function toUploadableWithContentType(file: Uploadable, contentType: string): Promise<Uploadable> {
368
+ const typedFile = await toFile(file, undefined, { type: contentType });
369
+ if (typedFile.type === contentType) return typedFile;
370
+
371
+ return new File([typedFile], typedFile.name, {
372
+ type: contentType,
373
+ lastModified: typedFile.lastModified,
374
+ });
375
+ }
@@ -50,6 +50,11 @@ export interface PdfResponse {
50
50
  */
51
51
  url: string;
52
52
 
53
+ /**
54
+ * URL to the generated PowerPoint (PPTX) on S3
55
+ */
56
+ pptxUrl?: string;
57
+
53
58
  /**
54
59
  * User ID
55
60
  */
@@ -96,6 +96,41 @@ export interface PdfGeneratorCreateParams {
96
96
  * The topic for the PDF presentation
97
97
  */
98
98
  topic: string;
99
+
100
+ /**
101
+ * Custom images to use (required when imageMode is "provide-own")
102
+ */
103
+ customImages?: Array<PdfGeneratorCreateParams.CustomImage>;
104
+
105
+ /**
106
+ * Image handling mode: search (auto-search), provide-own (use custom images), none
107
+ * (no images, use icons)
108
+ */
109
+ imageMode?: 'search' | 'provide-own' | 'none';
110
+
111
+ /**
112
+ * Custom logo URL to use (optional, falls back to default StudyFetch logo)
113
+ */
114
+ logoUrl?: string;
115
+ }
116
+
117
+ export namespace PdfGeneratorCreateParams {
118
+ export interface CustomImage {
119
+ /**
120
+ * Description of what this image shows
121
+ */
122
+ description: string;
123
+
124
+ /**
125
+ * Base64-encoded image data (provide either url or base64)
126
+ */
127
+ base64?: string;
128
+
129
+ /**
130
+ * Image URL to download and use (provide either url or base64)
131
+ */
132
+ url?: string;
133
+ }
99
134
  }
100
135
 
101
136
  PdfGenerator.Get = Get;
@@ -0,0 +1,238 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../../core/resource';
4
+ import { APIPromise } from '../../../core/api-promise';
5
+ import { buildHeaders } from '../../../internal/headers';
6
+ import { RequestOptions } from '../../../internal/request-options';
7
+ import { path } from '../../../internal/utils/path';
8
+
9
+ export class Conversations extends APIResource {
10
+ /**
11
+ * List Performance Insights conversations for the current user.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * await client.v1.performanceInsights.conversations.list();
16
+ * ```
17
+ */
18
+ list(params: ConversationListParams | null | undefined = {}, options?: RequestOptions): APIPromise<void> {
19
+ const { 'x-user-id': xUserID, 'x-group-ids': xGroupIDs, ...query } = params ?? {};
20
+ return this._client.get('/api/v1/performance-insights/sessions', {
21
+ query,
22
+ ...options,
23
+ headers: buildHeaders([
24
+ {
25
+ Accept: '*/*',
26
+ ...(xUserID != null ? { 'x-user-id': xUserID } : undefined),
27
+ ...(xGroupIDs != null ? { 'x-group-ids': xGroupIDs } : undefined),
28
+ },
29
+ options?.headers,
30
+ ]),
31
+ });
32
+ }
33
+
34
+ /**
35
+ * Create a new Performance Insights conversation.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * await client.v1.performanceInsights.conversations.create();
40
+ * ```
41
+ */
42
+ create(
43
+ params: ConversationCreateParams | null | undefined = {},
44
+ options?: RequestOptions,
45
+ ): APIPromise<void> {
46
+ const { 'x-group-ids': xGroupIDs, ...body } = params ?? {};
47
+ return this._client.post('/api/v1/performance-insights/sessions/create', {
48
+ body,
49
+ ...options,
50
+ headers: buildHeaders([
51
+ { Accept: '*/*', ...(xGroupIDs != null ? { 'x-group-ids': xGroupIDs } : undefined) },
52
+ options?.headers,
53
+ ]),
54
+ });
55
+ }
56
+
57
+ /**
58
+ * Retrieve a single conversation with its full message history.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * await client.v1.performanceInsights.conversations.retrieve('sessionId');
63
+ * ```
64
+ */
65
+ retrieve(
66
+ sessionID: string,
67
+ params: ConversationRetrieveParams | null | undefined = {},
68
+ options?: RequestOptions,
69
+ ): APIPromise<void> {
70
+ const { 'x-group-ids': xGroupIDs } = params ?? {};
71
+ return this._client.get(path`/api/v1/performance-insights/session/${sessionID}`, {
72
+ ...options,
73
+ headers: buildHeaders([
74
+ { Accept: '*/*', ...(xGroupIDs != null ? { 'x-group-ids': xGroupIDs } : undefined) },
75
+ options?.headers,
76
+ ]),
77
+ });
78
+ }
79
+
80
+ /**
81
+ * Push messages to a conversation. Creates the conversation if it does not exist.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * await client.v1.performanceInsights.conversations.pushMessages('sessionId', {
86
+ * messages: [],
87
+ * });
88
+ * ```
89
+ */
90
+ pushMessages(
91
+ sessionID: string,
92
+ params: ConversationPushMessagesParams,
93
+ options?: RequestOptions,
94
+ ): APIPromise<void> {
95
+ const { 'x-group-ids': xGroupIDs, ...body } = params;
96
+ return this._client.put(path`/api/v1/performance-insights/session/${sessionID}/messages`, {
97
+ body,
98
+ ...options,
99
+ headers: buildHeaders([
100
+ { Accept: '*/*', ...(xGroupIDs != null ? { 'x-group-ids': xGroupIDs } : undefined) },
101
+ options?.headers,
102
+ ]),
103
+ });
104
+ }
105
+
106
+ /**
107
+ * Rename a conversation.
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * await client.v1.performanceInsights.conversations.rename('sessionId', {
112
+ * title: 'New title',
113
+ * });
114
+ * ```
115
+ */
116
+ rename(sessionID: string, params: ConversationRenameParams, options?: RequestOptions): APIPromise<void> {
117
+ const { 'x-group-ids': xGroupIDs, ...body } = params;
118
+ return this._client.patch(path`/api/v1/performance-insights/session/${sessionID}/title`, {
119
+ body,
120
+ ...options,
121
+ headers: buildHeaders([
122
+ { Accept: '*/*', ...(xGroupIDs != null ? { 'x-group-ids': xGroupIDs } : undefined) },
123
+ options?.headers,
124
+ ]),
125
+ });
126
+ }
127
+
128
+ /**
129
+ * Delete a conversation.
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * await client.v1.performanceInsights.conversations.delete('sessionId');
134
+ * ```
135
+ */
136
+ delete(
137
+ sessionID: string,
138
+ params: ConversationDeleteParams | null | undefined = {},
139
+ options?: RequestOptions,
140
+ ): APIPromise<void> {
141
+ const { 'x-group-ids': xGroupIDs } = params ?? {};
142
+ return this._client.delete(path`/api/v1/performance-insights/session/${sessionID}`, {
143
+ ...options,
144
+ headers: buildHeaders([
145
+ { Accept: '*/*', ...(xGroupIDs != null ? { 'x-group-ids': xGroupIDs } : undefined) },
146
+ options?.headers,
147
+ ]),
148
+ });
149
+ }
150
+ }
151
+
152
+ export interface ConversationListParams {
153
+ /**
154
+ * Query param: Maximum number of conversations to return (default 50)
155
+ */
156
+ limit?: string;
157
+
158
+ /**
159
+ * Header param: Group IDs header (comma-separated) to scope sessions by group
160
+ */
161
+ 'x-group-ids'?: string;
162
+
163
+ /**
164
+ * Header param: User ID header (used when authenticating via API key)
165
+ */
166
+ 'x-user-id'?: string;
167
+ }
168
+
169
+ export interface ConversationCreateParams {
170
+ /**
171
+ * Body param: Custom session ID. Auto-generated if omitted.
172
+ */
173
+ sessionId?: string;
174
+
175
+ /**
176
+ * Body param: Conversation title (default "New Chat")
177
+ */
178
+ title?: string;
179
+
180
+ /**
181
+ * Header param: Group IDs header (comma-separated) to scope sessions by group
182
+ */
183
+ 'x-group-ids'?: string;
184
+ }
185
+
186
+ export interface ConversationRetrieveParams {
187
+ /**
188
+ * Header param: Group IDs header (comma-separated) to scope sessions by group
189
+ */
190
+ 'x-group-ids'?: string;
191
+ }
192
+
193
+ export interface ConversationPushMessagesParams {
194
+ /**
195
+ * Body param: Array of AI SDK UIMessage objects to persist
196
+ */
197
+ messages: unknown;
198
+
199
+ /**
200
+ * Body param: Update the conversation title
201
+ */
202
+ title?: string;
203
+
204
+ /**
205
+ * Header param: Group IDs header (comma-separated) to scope sessions by group
206
+ */
207
+ 'x-group-ids'?: string;
208
+ }
209
+
210
+ export interface ConversationRenameParams {
211
+ /**
212
+ * Body param: New conversation title
213
+ */
214
+ title: string;
215
+
216
+ /**
217
+ * Header param: Group IDs header (comma-separated) to scope sessions by group
218
+ */
219
+ 'x-group-ids'?: string;
220
+ }
221
+
222
+ export interface ConversationDeleteParams {
223
+ /**
224
+ * Header param: Group IDs header (comma-separated) to scope sessions by group
225
+ */
226
+ 'x-group-ids'?: string;
227
+ }
228
+
229
+ export declare namespace Conversations {
230
+ export {
231
+ type ConversationListParams as ConversationListParams,
232
+ type ConversationCreateParams as ConversationCreateParams,
233
+ type ConversationRetrieveParams as ConversationRetrieveParams,
234
+ type ConversationPushMessagesParams as ConversationPushMessagesParams,
235
+ type ConversationRenameParams as ConversationRenameParams,
236
+ type ConversationDeleteParams as ConversationDeleteParams,
237
+ };
238
+ }
@@ -0,0 +1,17 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export {
4
+ Conversations,
5
+ type ConversationListParams,
6
+ type ConversationCreateParams,
7
+ type ConversationRetrieveParams,
8
+ type ConversationPushMessagesParams,
9
+ type ConversationRenameParams,
10
+ type ConversationDeleteParams,
11
+ } from './conversations';
12
+ export {
13
+ PerformanceInsights,
14
+ type PerformanceInsightsGenerateEmbedResponse,
15
+ type PerformanceInsightsGenerateEmbedParams,
16
+ type PerformanceInsightsStreamParams,
17
+ } from './performance-insights';