@scenario-labs/sdk 2.7.0 → 3.0.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 (214) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/client.d.mts +10 -10
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +10 -10
  5. package/client.d.ts.map +1 -1
  6. package/client.js.map +1 -1
  7. package/client.mjs.map +1 -1
  8. package/lib/job.d.mts +2 -2
  9. package/lib/job.d.mts.map +1 -1
  10. package/lib/job.d.ts +2 -2
  11. package/lib/job.d.ts.map +1 -1
  12. package/lib/job.js +3 -3
  13. package/lib/job.js.map +1 -1
  14. package/lib/job.mjs +3 -3
  15. package/lib/job.mjs.map +1 -1
  16. package/lib/upload.d.mts +2 -2
  17. package/lib/upload.d.mts.map +1 -1
  18. package/lib/upload.d.ts +2 -2
  19. package/lib/upload.d.ts.map +1 -1
  20. package/lib/upload.js +4 -4
  21. package/lib/upload.js.map +1 -1
  22. package/lib/upload.mjs +4 -4
  23. package/lib/upload.mjs.map +1 -1
  24. package/lib/workflow.d.mts +2 -2
  25. package/lib/workflow.d.mts.map +1 -1
  26. package/lib/workflow.d.ts +2 -2
  27. package/lib/workflow.d.ts.map +1 -1
  28. package/lib/workflow.js +2 -2
  29. package/lib/workflow.js.map +1 -1
  30. package/lib/workflow.mjs +2 -2
  31. package/lib/workflow.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/resources/assets/assets.d.mts +1091 -8
  34. package/resources/assets/assets.d.mts.map +1 -1
  35. package/resources/assets/assets.d.ts +1091 -8
  36. package/resources/assets/assets.d.ts.map +1 -1
  37. package/resources/assets/assets.js +34 -16
  38. package/resources/assets/assets.js.map +1 -1
  39. package/resources/assets/assets.mjs +34 -16
  40. package/resources/assets/assets.mjs.map +1 -1
  41. package/resources/assets/download.d.mts +28 -5
  42. package/resources/assets/download.d.mts.map +1 -1
  43. package/resources/assets/download.d.ts +28 -5
  44. package/resources/assets/download.d.ts.map +1 -1
  45. package/resources/assets/download.js +8 -6
  46. package/resources/assets/download.js.map +1 -1
  47. package/resources/assets/download.mjs +8 -6
  48. package/resources/assets/download.mjs.map +1 -1
  49. package/resources/assets/index.d.mts +1 -1
  50. package/resources/assets/index.d.mts.map +1 -1
  51. package/resources/assets/index.d.ts +1 -1
  52. package/resources/assets/index.d.ts.map +1 -1
  53. package/resources/assets/index.js.map +1 -1
  54. package/resources/assets/index.mjs.map +1 -1
  55. package/resources/collections/assets.d.mts +15 -4
  56. package/resources/collections/assets.d.mts.map +1 -1
  57. package/resources/collections/assets.d.ts +15 -4
  58. package/resources/collections/assets.d.ts.map +1 -1
  59. package/resources/collections/assets.js +14 -4
  60. package/resources/collections/assets.js.map +1 -1
  61. package/resources/collections/assets.mjs +14 -4
  62. package/resources/collections/assets.mjs.map +1 -1
  63. package/resources/collections/collections.d.mts +38 -9
  64. package/resources/collections/collections.d.mts.map +1 -1
  65. package/resources/collections/collections.d.ts +38 -9
  66. package/resources/collections/collections.d.ts.map +1 -1
  67. package/resources/collections/collections.js +11 -8
  68. package/resources/collections/collections.js.map +1 -1
  69. package/resources/collections/collections.mjs +11 -8
  70. package/resources/collections/collections.mjs.map +1 -1
  71. package/resources/collections/index.d.mts +1 -1
  72. package/resources/collections/index.d.mts.map +1 -1
  73. package/resources/collections/index.d.ts +1 -1
  74. package/resources/collections/index.d.ts.map +1 -1
  75. package/resources/collections/index.js.map +1 -1
  76. package/resources/collections/index.mjs.map +1 -1
  77. package/resources/collections/models.d.mts +15 -4
  78. package/resources/collections/models.d.mts.map +1 -1
  79. package/resources/collections/models.d.ts +15 -4
  80. package/resources/collections/models.d.ts.map +1 -1
  81. package/resources/collections/models.js +14 -4
  82. package/resources/collections/models.js.map +1 -1
  83. package/resources/collections/models.mjs +14 -4
  84. package/resources/collections/models.mjs.map +1 -1
  85. package/resources/generate.d.mts +941 -0
  86. package/resources/generate.d.mts.map +1 -1
  87. package/resources/generate.d.ts +941 -0
  88. package/resources/generate.d.ts.map +1 -1
  89. package/resources/generate.js +28 -16
  90. package/resources/generate.js.map +1 -1
  91. package/resources/generate.mjs +28 -16
  92. package/resources/generate.mjs.map +1 -1
  93. package/resources/index.d.mts +5 -5
  94. package/resources/index.d.mts.map +1 -1
  95. package/resources/index.d.ts +5 -5
  96. package/resources/index.d.ts.map +1 -1
  97. package/resources/index.js.map +1 -1
  98. package/resources/index.mjs.map +1 -1
  99. package/resources/jobs.d.mts +146 -2
  100. package/resources/jobs.d.mts.map +1 -1
  101. package/resources/jobs.d.ts +146 -2
  102. package/resources/jobs.d.ts.map +1 -1
  103. package/resources/jobs.js +8 -4
  104. package/resources/jobs.js.map +1 -1
  105. package/resources/jobs.mjs +8 -4
  106. package/resources/jobs.mjs.map +1 -1
  107. package/resources/models/description.d.mts +10 -0
  108. package/resources/models/description.d.mts.map +1 -1
  109. package/resources/models/description.d.ts +10 -0
  110. package/resources/models/description.d.ts.map +1 -1
  111. package/resources/models/description.js +2 -2
  112. package/resources/models/description.js.map +1 -1
  113. package/resources/models/description.mjs +2 -2
  114. package/resources/models/description.mjs.map +1 -1
  115. package/resources/models/examples.d.mts +344 -0
  116. package/resources/models/examples.d.mts.map +1 -1
  117. package/resources/models/examples.d.ts +344 -0
  118. package/resources/models/examples.d.ts.map +1 -1
  119. package/resources/models/examples.js +2 -2
  120. package/resources/models/examples.js.map +1 -1
  121. package/resources/models/examples.mjs +2 -2
  122. package/resources/models/examples.mjs.map +1 -1
  123. package/resources/models/index.d.mts +1 -1
  124. package/resources/models/index.d.mts.map +1 -1
  125. package/resources/models/index.d.ts +1 -1
  126. package/resources/models/index.d.ts.map +1 -1
  127. package/resources/models/index.js.map +1 -1
  128. package/resources/models/index.mjs.map +1 -1
  129. package/resources/models/models.d.mts +71 -13
  130. package/resources/models/models.d.mts.map +1 -1
  131. package/resources/models/models.d.ts +71 -13
  132. package/resources/models/models.d.ts.map +1 -1
  133. package/resources/models/models.js +30 -18
  134. package/resources/models/models.js.map +1 -1
  135. package/resources/models/models.mjs +30 -18
  136. package/resources/models/models.mjs.map +1 -1
  137. package/resources/models/train.d.mts +93 -0
  138. package/resources/models/train.d.mts.map +1 -1
  139. package/resources/models/train.d.ts +93 -0
  140. package/resources/models/train.d.ts.map +1 -1
  141. package/resources/models/train.js +4 -4
  142. package/resources/models/train.js.map +1 -1
  143. package/resources/models/train.mjs +4 -4
  144. package/resources/models/train.mjs.map +1 -1
  145. package/resources/models/training-images.d.mts +22 -2
  146. package/resources/models/training-images.d.mts.map +1 -1
  147. package/resources/models/training-images.d.ts +22 -2
  148. package/resources/models/training-images.d.ts.map +1 -1
  149. package/resources/models/training-images.js +15 -8
  150. package/resources/models/training-images.js.map +1 -1
  151. package/resources/models/training-images.mjs +15 -8
  152. package/resources/models/training-images.mjs.map +1 -1
  153. package/resources/search.d.mts +10 -0
  154. package/resources/search.d.mts.map +1 -1
  155. package/resources/search.d.ts +10 -0
  156. package/resources/search.d.ts.map +1 -1
  157. package/resources/search.js +4 -4
  158. package/resources/search.js.map +1 -1
  159. package/resources/search.mjs +4 -4
  160. package/resources/search.mjs.map +1 -1
  161. package/resources/tags.d.mts +5 -0
  162. package/resources/tags.d.mts.map +1 -1
  163. package/resources/tags.d.ts +5 -0
  164. package/resources/tags.d.ts.map +1 -1
  165. package/resources/uploads.d.mts +35 -20
  166. package/resources/uploads.d.mts.map +1 -1
  167. package/resources/uploads.d.ts +35 -20
  168. package/resources/uploads.d.ts.map +1 -1
  169. package/resources/uploads.js +8 -6
  170. package/resources/uploads.js.map +1 -1
  171. package/resources/uploads.mjs +8 -6
  172. package/resources/uploads.mjs.map +1 -1
  173. package/resources/usages.d.mts +53 -10
  174. package/resources/usages.d.mts.map +1 -1
  175. package/resources/usages.d.ts +53 -10
  176. package/resources/usages.d.ts.map +1 -1
  177. package/resources/workflows.d.mts +446 -266
  178. package/resources/workflows.d.mts.map +1 -1
  179. package/resources/workflows.d.ts +446 -266
  180. package/resources/workflows.d.ts.map +1 -1
  181. package/resources/workflows.js +20 -12
  182. package/resources/workflows.js.map +1 -1
  183. package/resources/workflows.mjs +20 -12
  184. package/resources/workflows.mjs.map +1 -1
  185. package/src/client.ts +14 -0
  186. package/src/lib/job.ts +8 -3
  187. package/src/lib/upload.ts +5 -3
  188. package/src/lib/workflow.ts +3 -1
  189. package/src/resources/assets/assets.ts +1310 -32
  190. package/src/resources/assets/download.ts +40 -7
  191. package/src/resources/assets/index.ts +1 -0
  192. package/src/resources/collections/assets.ts +29 -6
  193. package/src/resources/collections/collections.ts +59 -12
  194. package/src/resources/collections/index.ts +2 -0
  195. package/src/resources/collections/models.ts +29 -6
  196. package/src/resources/generate.ts +1247 -30
  197. package/src/resources/index.ts +7 -0
  198. package/src/resources/jobs.ts +169 -4
  199. package/src/resources/models/description.ts +14 -2
  200. package/src/resources/models/examples.ts +394 -2
  201. package/src/resources/models/index.ts +1 -0
  202. package/src/resources/models/models.ts +112 -26
  203. package/src/resources/models/train.ts +126 -4
  204. package/src/resources/models/training-images.ts +41 -10
  205. package/src/resources/search.ts +16 -4
  206. package/src/resources/tags.ts +6 -0
  207. package/src/resources/uploads.ts +47 -22
  208. package/src/resources/usages.ts +63 -10
  209. package/src/resources/workflows.ts +783 -563
  210. package/src/version.ts +1 -1
  211. package/version.d.mts +1 -1
  212. package/version.d.ts +1 -1
  213. package/version.js +1 -1
  214. package/version.mjs +1 -1
@@ -4,6 +4,7 @@ import { APIResource } from '../../core/resource';
4
4
  import * as DownloadAPI from './download';
5
5
  import {
6
6
  Download,
7
+ DownloadGetStatusParams,
7
8
  DownloadGetStatusResponse,
8
9
  DownloadRequestBatchParams,
9
10
  DownloadRequestBatchResponse,
@@ -45,8 +46,12 @@ export class Assets extends APIResource {
45
46
  params: AssetUpdateParams,
46
47
  options?: RequestOptions,
47
48
  ): APIPromise<AssetUpdateResponse> {
48
- const { originalAssets, ...body } = params;
49
- return this._client.put(path`/assets/${assetID}`, { query: { originalAssets }, body, ...options });
49
+ const { originalAssets, projectId, ...body } = params;
50
+ return this._client.put(path`/assets/${assetID}`, {
51
+ query: { originalAssets, projectId },
52
+ body,
53
+ ...options,
54
+ });
50
55
  }
51
56
 
52
57
  /**
@@ -64,8 +69,9 @@ export class Assets extends APIResource {
64
69
  /**
65
70
  * Delete multiple assets
66
71
  */
67
- deleteMultiple(body: AssetDeleteMultipleParams, options?: RequestOptions): APIPromise<unknown> {
68
- return this._client.delete('/assets', { body, ...options });
72
+ deleteMultiple(params: AssetDeleteMultipleParams, options?: RequestOptions): APIPromise<unknown> {
73
+ const { projectId, ...body } = params;
74
+ return this._client.delete('/assets', { query: { projectId }, body, ...options });
69
75
  }
70
76
 
71
77
  /**
@@ -76,16 +82,20 @@ export class Assets extends APIResource {
76
82
  params: AssetDuplicateParams,
77
83
  options?: RequestOptions,
78
84
  ): APIPromise<AssetDuplicateResponse> {
79
- const { originalAssets, ...body } = params;
80
- return this._client.post(path`/assets/${assetID}/copy`, { query: { originalAssets }, body, ...options });
85
+ const { originalAssets, projectId, ...body } = params;
86
+ return this._client.post(path`/assets/${assetID}/copy`, {
87
+ query: { originalAssets, projectId },
88
+ body,
89
+ ...options,
90
+ });
81
91
  }
82
92
 
83
93
  /**
84
94
  * Get multiple assets by their IDs
85
95
  */
86
96
  getBulk(params: AssetGetBulkParams, options?: RequestOptions): APIPromise<AssetGetBulkResponse> {
87
- const { originalAssets, ...body } = params;
88
- return this._client.post('/assets/get-bulk', { query: { originalAssets }, body, ...options });
97
+ const { originalAssets, projectId, ...body } = params;
98
+ return this._client.post('/assets/get-bulk', { query: { originalAssets, projectId }, body, ...options });
89
99
  }
90
100
 
91
101
  /**
@@ -107,8 +117,12 @@ export class Assets extends APIResource {
107
117
  * Lock a canvas
108
118
  */
109
119
  lock(assetID: string, params: AssetLockParams, options?: RequestOptions): APIPromise<AssetLockResponse> {
110
- const { originalAssets, ...body } = params;
111
- return this._client.put(path`/assets/${assetID}/lock`, { query: { originalAssets }, body, ...options });
120
+ const { originalAssets, projectId, ...body } = params;
121
+ return this._client.put(path`/assets/${assetID}/lock`, {
122
+ query: { originalAssets, projectId },
123
+ body,
124
+ ...options,
125
+ });
112
126
  }
113
127
 
114
128
  /**
@@ -119,8 +133,12 @@ export class Assets extends APIResource {
119
133
  params: AssetUnlockParams,
120
134
  options?: RequestOptions,
121
135
  ): APIPromise<AssetUnlockResponse> {
122
- const { originalAssets, ...body } = params;
123
- return this._client.put(path`/assets/${assetID}/unlock`, { query: { originalAssets }, body, ...options });
136
+ const { originalAssets, projectId, ...body } = params;
137
+ return this._client.put(path`/assets/${assetID}/unlock`, {
138
+ query: { originalAssets, projectId },
139
+ body,
140
+ ...options,
141
+ });
124
142
  }
125
143
 
126
144
  /**
@@ -128,18 +146,19 @@ export class Assets extends APIResource {
128
146
  */
129
147
  updateTags(
130
148
  assetID: string,
131
- body: AssetUpdateTagsParams,
149
+ params: AssetUpdateTagsParams,
132
150
  options?: RequestOptions,
133
151
  ): APIPromise<AssetUpdateTagsResponse> {
134
- return this._client.put(path`/assets/${assetID}/tags`, { body, ...options });
152
+ const { projectId, ...body } = params;
153
+ return this._client.put(path`/assets/${assetID}/tags`, { query: { projectId }, body, ...options });
135
154
  }
136
155
 
137
156
  /**
138
157
  * Upload an image or canvas
139
158
  */
140
159
  upload(params: AssetUploadParams, options?: RequestOptions): APIPromise<AssetUploadResponse> {
141
- const { originalAssets, ...body } = params;
142
- return this._client.post('/assets', { query: { originalAssets }, body, ...options });
160
+ const { originalAssets, projectId, ...body } = params;
161
+ return this._client.post('/assets', { query: { originalAssets, projectId }, body, ...options });
143
162
  }
144
163
  }
145
164
 
@@ -395,6 +414,14 @@ export namespace AssetRetrieveResponse {
395
414
  */
396
415
  preview?: Asset.Preview;
397
416
 
417
+ /**
418
+ * SlopGuard detection result, computed asynchronously after generation.
419
+ *
420
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
421
+ * asset is read with `withSlopGuardDetails=true`.
422
+ */
423
+ slopGuard?: Asset.SlopGuard;
424
+
398
425
  /**
399
426
  * The asset's thumbnail.
400
427
  *
@@ -1311,6 +1338,140 @@ export namespace AssetRetrieveResponse {
1311
1338
  url: string;
1312
1339
  }
1313
1340
 
1341
+ /**
1342
+ * SlopGuard detection result, computed asynchronously after generation.
1343
+ *
1344
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
1345
+ * asset is read with `withSlopGuardDetails=true`.
1346
+ */
1347
+ export interface SlopGuard {
1348
+ /**
1349
+ * ISO-8601 timestamp of when scoring ran
1350
+ */
1351
+ computedAt: string;
1352
+
1353
+ /**
1354
+ * Whether scoring succeeded or errored
1355
+ */
1356
+ status: 'error' | 'scored';
1357
+
1358
+ /**
1359
+ * Rubric/model version that produced this result
1360
+ */
1361
+ version: string;
1362
+
1363
+ /**
1364
+ * Generic AI-quality sub-score
1365
+ */
1366
+ aiQualityScore?: number;
1367
+
1368
+ /**
1369
+ * Ids of briefs that contributed
1370
+ */
1371
+ appliedBriefIds?: Array<string>;
1372
+
1373
+ /**
1374
+ * Brief-compliance sub-score (omitted when no brief applied)
1375
+ */
1376
+ briefComplianceScore?: number;
1377
+
1378
+ /**
1379
+ * Per-dimension reasons and suggestions, as produced by the detector.
1380
+ *
1381
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
1382
+ * project that owns it — the brief-compliance text paraphrases that project's
1383
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
1384
+ * omitted when the archived verdict is unavailable (asset scored by an older
1385
+ * version, or an unreadable archive).
1386
+ */
1387
+ details?: SlopGuard.Details;
1388
+
1389
+ /**
1390
+ * Error message when status is 'error' (truncated)
1391
+ */
1392
+ error?: string;
1393
+
1394
+ /**
1395
+ * 0–100 composite score (present when status is 'scored')
1396
+ */
1397
+ overallScore?: number;
1398
+
1399
+ /**
1400
+ * Sensitivity used for the verdict
1401
+ */
1402
+ sensitivity?: 'high' | 'low' | 'medium';
1403
+
1404
+ /**
1405
+ * pass / warn / fail (present when status is 'scored')
1406
+ */
1407
+ verdict?: 'fail' | 'pass' | 'warn';
1408
+ }
1409
+
1410
+ export namespace SlopGuard {
1411
+ /**
1412
+ * Per-dimension reasons and suggestions, as produced by the detector.
1413
+ *
1414
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
1415
+ * project that owns it — the brief-compliance text paraphrases that project's
1416
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
1417
+ * omitted when the archived verdict is unavailable (asset scored by an older
1418
+ * version, or an unreadable archive).
1419
+ */
1420
+ export interface Details {
1421
+ /**
1422
+ * Always-on generic AI-quality dimension
1423
+ */
1424
+ aiQuality: Details.AIQuality;
1425
+
1426
+ /**
1427
+ * Brief-compliance dimension; omitted when no brief applied
1428
+ */
1429
+ briefCompliance?: Details.BriefCompliance;
1430
+ }
1431
+
1432
+ export namespace Details {
1433
+ /**
1434
+ * Always-on generic AI-quality dimension
1435
+ */
1436
+ export interface AIQuality {
1437
+ /**
1438
+ * Why the image scored as it did
1439
+ */
1440
+ reasons: Array<string>;
1441
+
1442
+ /**
1443
+ * 0–100; higher is better (more compliant / less AI-looking)
1444
+ */
1445
+ score: number;
1446
+
1447
+ /**
1448
+ * Actionable suggestions to improve the score
1449
+ */
1450
+ suggestions: Array<string>;
1451
+ }
1452
+
1453
+ /**
1454
+ * Brief-compliance dimension; omitted when no brief applied
1455
+ */
1456
+ export interface BriefCompliance {
1457
+ /**
1458
+ * Why the image scored as it did
1459
+ */
1460
+ reasons: Array<string>;
1461
+
1462
+ /**
1463
+ * 0–100; higher is better (more compliant / less AI-looking)
1464
+ */
1465
+ score: number;
1466
+
1467
+ /**
1468
+ * Actionable suggestions to improve the score
1469
+ */
1470
+ suggestions: Array<string>;
1471
+ }
1472
+ }
1473
+ }
1474
+
1314
1475
  /**
1315
1476
  * The asset's thumbnail.
1316
1477
  *
@@ -1572,6 +1733,14 @@ export namespace AssetUpdateResponse {
1572
1733
  */
1573
1734
  preview?: Asset.Preview;
1574
1735
 
1736
+ /**
1737
+ * SlopGuard detection result, computed asynchronously after generation.
1738
+ *
1739
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
1740
+ * asset is read with `withSlopGuardDetails=true`.
1741
+ */
1742
+ slopGuard?: Asset.SlopGuard;
1743
+
1575
1744
  /**
1576
1745
  * The asset's thumbnail.
1577
1746
  *
@@ -2488,6 +2657,140 @@ export namespace AssetUpdateResponse {
2488
2657
  url: string;
2489
2658
  }
2490
2659
 
2660
+ /**
2661
+ * SlopGuard detection result, computed asynchronously after generation.
2662
+ *
2663
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
2664
+ * asset is read with `withSlopGuardDetails=true`.
2665
+ */
2666
+ export interface SlopGuard {
2667
+ /**
2668
+ * ISO-8601 timestamp of when scoring ran
2669
+ */
2670
+ computedAt: string;
2671
+
2672
+ /**
2673
+ * Whether scoring succeeded or errored
2674
+ */
2675
+ status: 'error' | 'scored';
2676
+
2677
+ /**
2678
+ * Rubric/model version that produced this result
2679
+ */
2680
+ version: string;
2681
+
2682
+ /**
2683
+ * Generic AI-quality sub-score
2684
+ */
2685
+ aiQualityScore?: number;
2686
+
2687
+ /**
2688
+ * Ids of briefs that contributed
2689
+ */
2690
+ appliedBriefIds?: Array<string>;
2691
+
2692
+ /**
2693
+ * Brief-compliance sub-score (omitted when no brief applied)
2694
+ */
2695
+ briefComplianceScore?: number;
2696
+
2697
+ /**
2698
+ * Per-dimension reasons and suggestions, as produced by the detector.
2699
+ *
2700
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
2701
+ * project that owns it — the brief-compliance text paraphrases that project's
2702
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
2703
+ * omitted when the archived verdict is unavailable (asset scored by an older
2704
+ * version, or an unreadable archive).
2705
+ */
2706
+ details?: SlopGuard.Details;
2707
+
2708
+ /**
2709
+ * Error message when status is 'error' (truncated)
2710
+ */
2711
+ error?: string;
2712
+
2713
+ /**
2714
+ * 0–100 composite score (present when status is 'scored')
2715
+ */
2716
+ overallScore?: number;
2717
+
2718
+ /**
2719
+ * Sensitivity used for the verdict
2720
+ */
2721
+ sensitivity?: 'high' | 'low' | 'medium';
2722
+
2723
+ /**
2724
+ * pass / warn / fail (present when status is 'scored')
2725
+ */
2726
+ verdict?: 'fail' | 'pass' | 'warn';
2727
+ }
2728
+
2729
+ export namespace SlopGuard {
2730
+ /**
2731
+ * Per-dimension reasons and suggestions, as produced by the detector.
2732
+ *
2733
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
2734
+ * project that owns it — the brief-compliance text paraphrases that project's
2735
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
2736
+ * omitted when the archived verdict is unavailable (asset scored by an older
2737
+ * version, or an unreadable archive).
2738
+ */
2739
+ export interface Details {
2740
+ /**
2741
+ * Always-on generic AI-quality dimension
2742
+ */
2743
+ aiQuality: Details.AIQuality;
2744
+
2745
+ /**
2746
+ * Brief-compliance dimension; omitted when no brief applied
2747
+ */
2748
+ briefCompliance?: Details.BriefCompliance;
2749
+ }
2750
+
2751
+ export namespace Details {
2752
+ /**
2753
+ * Always-on generic AI-quality dimension
2754
+ */
2755
+ export interface AIQuality {
2756
+ /**
2757
+ * Why the image scored as it did
2758
+ */
2759
+ reasons: Array<string>;
2760
+
2761
+ /**
2762
+ * 0–100; higher is better (more compliant / less AI-looking)
2763
+ */
2764
+ score: number;
2765
+
2766
+ /**
2767
+ * Actionable suggestions to improve the score
2768
+ */
2769
+ suggestions: Array<string>;
2770
+ }
2771
+
2772
+ /**
2773
+ * Brief-compliance dimension; omitted when no brief applied
2774
+ */
2775
+ export interface BriefCompliance {
2776
+ /**
2777
+ * Why the image scored as it did
2778
+ */
2779
+ reasons: Array<string>;
2780
+
2781
+ /**
2782
+ * 0–100; higher is better (more compliant / less AI-looking)
2783
+ */
2784
+ score: number;
2785
+
2786
+ /**
2787
+ * Actionable suggestions to improve the score
2788
+ */
2789
+ suggestions: Array<string>;
2790
+ }
2791
+ }
2792
+ }
2793
+
2491
2794
  /**
2492
2795
  * The asset's thumbnail.
2493
2796
  *
@@ -2744,6 +3047,14 @@ export interface AssetListResponse {
2744
3047
  */
2745
3048
  preview?: AssetListResponse.Preview;
2746
3049
 
3050
+ /**
3051
+ * SlopGuard detection result, computed asynchronously after generation.
3052
+ *
3053
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
3054
+ * asset is read with `withSlopGuardDetails=true`.
3055
+ */
3056
+ slopGuard?: AssetListResponse.SlopGuard;
3057
+
2747
3058
  /**
2748
3059
  * The asset's thumbnail.
2749
3060
  *
@@ -3660,6 +3971,140 @@ export namespace AssetListResponse {
3660
3971
  url: string;
3661
3972
  }
3662
3973
 
3974
+ /**
3975
+ * SlopGuard detection result, computed asynchronously after generation.
3976
+ *
3977
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
3978
+ * asset is read with `withSlopGuardDetails=true`.
3979
+ */
3980
+ export interface SlopGuard {
3981
+ /**
3982
+ * ISO-8601 timestamp of when scoring ran
3983
+ */
3984
+ computedAt: string;
3985
+
3986
+ /**
3987
+ * Whether scoring succeeded or errored
3988
+ */
3989
+ status: 'error' | 'scored';
3990
+
3991
+ /**
3992
+ * Rubric/model version that produced this result
3993
+ */
3994
+ version: string;
3995
+
3996
+ /**
3997
+ * Generic AI-quality sub-score
3998
+ */
3999
+ aiQualityScore?: number;
4000
+
4001
+ /**
4002
+ * Ids of briefs that contributed
4003
+ */
4004
+ appliedBriefIds?: Array<string>;
4005
+
4006
+ /**
4007
+ * Brief-compliance sub-score (omitted when no brief applied)
4008
+ */
4009
+ briefComplianceScore?: number;
4010
+
4011
+ /**
4012
+ * Per-dimension reasons and suggestions, as produced by the detector.
4013
+ *
4014
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
4015
+ * project that owns it — the brief-compliance text paraphrases that project's
4016
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
4017
+ * omitted when the archived verdict is unavailable (asset scored by an older
4018
+ * version, or an unreadable archive).
4019
+ */
4020
+ details?: SlopGuard.Details;
4021
+
4022
+ /**
4023
+ * Error message when status is 'error' (truncated)
4024
+ */
4025
+ error?: string;
4026
+
4027
+ /**
4028
+ * 0–100 composite score (present when status is 'scored')
4029
+ */
4030
+ overallScore?: number;
4031
+
4032
+ /**
4033
+ * Sensitivity used for the verdict
4034
+ */
4035
+ sensitivity?: 'high' | 'low' | 'medium';
4036
+
4037
+ /**
4038
+ * pass / warn / fail (present when status is 'scored')
4039
+ */
4040
+ verdict?: 'fail' | 'pass' | 'warn';
4041
+ }
4042
+
4043
+ export namespace SlopGuard {
4044
+ /**
4045
+ * Per-dimension reasons and suggestions, as produced by the detector.
4046
+ *
4047
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
4048
+ * project that owns it — the brief-compliance text paraphrases that project's
4049
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
4050
+ * omitted when the archived verdict is unavailable (asset scored by an older
4051
+ * version, or an unreadable archive).
4052
+ */
4053
+ export interface Details {
4054
+ /**
4055
+ * Always-on generic AI-quality dimension
4056
+ */
4057
+ aiQuality: Details.AIQuality;
4058
+
4059
+ /**
4060
+ * Brief-compliance dimension; omitted when no brief applied
4061
+ */
4062
+ briefCompliance?: Details.BriefCompliance;
4063
+ }
4064
+
4065
+ export namespace Details {
4066
+ /**
4067
+ * Always-on generic AI-quality dimension
4068
+ */
4069
+ export interface AIQuality {
4070
+ /**
4071
+ * Why the image scored as it did
4072
+ */
4073
+ reasons: Array<string>;
4074
+
4075
+ /**
4076
+ * 0–100; higher is better (more compliant / less AI-looking)
4077
+ */
4078
+ score: number;
4079
+
4080
+ /**
4081
+ * Actionable suggestions to improve the score
4082
+ */
4083
+ suggestions: Array<string>;
4084
+ }
4085
+
4086
+ /**
4087
+ * Brief-compliance dimension; omitted when no brief applied
4088
+ */
4089
+ export interface BriefCompliance {
4090
+ /**
4091
+ * Why the image scored as it did
4092
+ */
4093
+ reasons: Array<string>;
4094
+
4095
+ /**
4096
+ * 0–100; higher is better (more compliant / less AI-looking)
4097
+ */
4098
+ score: number;
4099
+
4100
+ /**
4101
+ * Actionable suggestions to improve the score
4102
+ */
4103
+ suggestions: Array<string>;
4104
+ }
4105
+ }
4106
+ }
4107
+
3663
4108
  /**
3664
4109
  * The asset's thumbnail.
3665
4110
  *
@@ -3922,6 +4367,14 @@ export namespace AssetDuplicateResponse {
3922
4367
  */
3923
4368
  preview?: Asset.Preview;
3924
4369
 
4370
+ /**
4371
+ * SlopGuard detection result, computed asynchronously after generation.
4372
+ *
4373
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
4374
+ * asset is read with `withSlopGuardDetails=true`.
4375
+ */
4376
+ slopGuard?: Asset.SlopGuard;
4377
+
3925
4378
  /**
3926
4379
  * The asset's thumbnail.
3927
4380
  *
@@ -4839,23 +5292,157 @@ export namespace AssetDuplicateResponse {
4839
5292
  }
4840
5293
 
4841
5294
  /**
4842
- * The asset's thumbnail.
5295
+ * SlopGuard detection result, computed asynchronously after generation.
4843
5296
  *
4844
- * Contains the assetId and the url of the thumbnail.
5297
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
5298
+ * asset is read with `withSlopGuardDetails=true`.
4845
5299
  */
4846
- export interface Thumbnail {
4847
- assetId: string;
5300
+ export interface SlopGuard {
5301
+ /**
5302
+ * ISO-8601 timestamp of when scoring ran
5303
+ */
5304
+ computedAt: string;
4848
5305
 
4849
- url: string;
4850
- }
4851
- }
4852
- }
5306
+ /**
5307
+ * Whether scoring succeeded or errored
5308
+ */
5309
+ status: 'error' | 'scored';
4853
5310
 
4854
- export interface AssetGetBulkResponse {
4855
- assets: Array<AssetGetBulkResponse.Asset>;
4856
- }
5311
+ /**
5312
+ * Rubric/model version that produced this result
5313
+ */
5314
+ version: string;
4857
5315
 
4858
- export namespace AssetGetBulkResponse {
5316
+ /**
5317
+ * Generic AI-quality sub-score
5318
+ */
5319
+ aiQualityScore?: number;
5320
+
5321
+ /**
5322
+ * Ids of briefs that contributed
5323
+ */
5324
+ appliedBriefIds?: Array<string>;
5325
+
5326
+ /**
5327
+ * Brief-compliance sub-score (omitted when no brief applied)
5328
+ */
5329
+ briefComplianceScore?: number;
5330
+
5331
+ /**
5332
+ * Per-dimension reasons and suggestions, as produced by the detector.
5333
+ *
5334
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
5335
+ * project that owns it — the brief-compliance text paraphrases that project's
5336
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
5337
+ * omitted when the archived verdict is unavailable (asset scored by an older
5338
+ * version, or an unreadable archive).
5339
+ */
5340
+ details?: SlopGuard.Details;
5341
+
5342
+ /**
5343
+ * Error message when status is 'error' (truncated)
5344
+ */
5345
+ error?: string;
5346
+
5347
+ /**
5348
+ * 0–100 composite score (present when status is 'scored')
5349
+ */
5350
+ overallScore?: number;
5351
+
5352
+ /**
5353
+ * Sensitivity used for the verdict
5354
+ */
5355
+ sensitivity?: 'high' | 'low' | 'medium';
5356
+
5357
+ /**
5358
+ * pass / warn / fail (present when status is 'scored')
5359
+ */
5360
+ verdict?: 'fail' | 'pass' | 'warn';
5361
+ }
5362
+
5363
+ export namespace SlopGuard {
5364
+ /**
5365
+ * Per-dimension reasons and suggestions, as produced by the detector.
5366
+ *
5367
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
5368
+ * project that owns it — the brief-compliance text paraphrases that project's
5369
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
5370
+ * omitted when the archived verdict is unavailable (asset scored by an older
5371
+ * version, or an unreadable archive).
5372
+ */
5373
+ export interface Details {
5374
+ /**
5375
+ * Always-on generic AI-quality dimension
5376
+ */
5377
+ aiQuality: Details.AIQuality;
5378
+
5379
+ /**
5380
+ * Brief-compliance dimension; omitted when no brief applied
5381
+ */
5382
+ briefCompliance?: Details.BriefCompliance;
5383
+ }
5384
+
5385
+ export namespace Details {
5386
+ /**
5387
+ * Always-on generic AI-quality dimension
5388
+ */
5389
+ export interface AIQuality {
5390
+ /**
5391
+ * Why the image scored as it did
5392
+ */
5393
+ reasons: Array<string>;
5394
+
5395
+ /**
5396
+ * 0–100; higher is better (more compliant / less AI-looking)
5397
+ */
5398
+ score: number;
5399
+
5400
+ /**
5401
+ * Actionable suggestions to improve the score
5402
+ */
5403
+ suggestions: Array<string>;
5404
+ }
5405
+
5406
+ /**
5407
+ * Brief-compliance dimension; omitted when no brief applied
5408
+ */
5409
+ export interface BriefCompliance {
5410
+ /**
5411
+ * Why the image scored as it did
5412
+ */
5413
+ reasons: Array<string>;
5414
+
5415
+ /**
5416
+ * 0–100; higher is better (more compliant / less AI-looking)
5417
+ */
5418
+ score: number;
5419
+
5420
+ /**
5421
+ * Actionable suggestions to improve the score
5422
+ */
5423
+ suggestions: Array<string>;
5424
+ }
5425
+ }
5426
+ }
5427
+
5428
+ /**
5429
+ * The asset's thumbnail.
5430
+ *
5431
+ * Contains the assetId and the url of the thumbnail.
5432
+ */
5433
+ export interface Thumbnail {
5434
+ assetId: string;
5435
+
5436
+ url: string;
5437
+ }
5438
+ }
5439
+ }
5440
+
5441
+ export interface AssetGetBulkResponse {
5442
+ assets: Array<AssetGetBulkResponse.Asset>;
5443
+ }
5444
+
5445
+ export namespace AssetGetBulkResponse {
4859
5446
  export interface Asset {
4860
5447
  /**
4861
5448
  * The asset ID (example: "asset_GTrL3mq4SXWyMxkOHRxlpw")
@@ -5099,6 +5686,14 @@ export namespace AssetGetBulkResponse {
5099
5686
  */
5100
5687
  preview?: Asset.Preview;
5101
5688
 
5689
+ /**
5690
+ * SlopGuard detection result, computed asynchronously after generation.
5691
+ *
5692
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
5693
+ * asset is read with `withSlopGuardDetails=true`.
5694
+ */
5695
+ slopGuard?: Asset.SlopGuard;
5696
+
5102
5697
  /**
5103
5698
  * The asset's thumbnail.
5104
5699
  *
@@ -6015,6 +6610,140 @@ export namespace AssetGetBulkResponse {
6015
6610
  url: string;
6016
6611
  }
6017
6612
 
6613
+ /**
6614
+ * SlopGuard detection result, computed asynchronously after generation.
6615
+ *
6616
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
6617
+ * asset is read with `withSlopGuardDetails=true`.
6618
+ */
6619
+ export interface SlopGuard {
6620
+ /**
6621
+ * ISO-8601 timestamp of when scoring ran
6622
+ */
6623
+ computedAt: string;
6624
+
6625
+ /**
6626
+ * Whether scoring succeeded or errored
6627
+ */
6628
+ status: 'error' | 'scored';
6629
+
6630
+ /**
6631
+ * Rubric/model version that produced this result
6632
+ */
6633
+ version: string;
6634
+
6635
+ /**
6636
+ * Generic AI-quality sub-score
6637
+ */
6638
+ aiQualityScore?: number;
6639
+
6640
+ /**
6641
+ * Ids of briefs that contributed
6642
+ */
6643
+ appliedBriefIds?: Array<string>;
6644
+
6645
+ /**
6646
+ * Brief-compliance sub-score (omitted when no brief applied)
6647
+ */
6648
+ briefComplianceScore?: number;
6649
+
6650
+ /**
6651
+ * Per-dimension reasons and suggestions, as produced by the detector.
6652
+ *
6653
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
6654
+ * project that owns it — the brief-compliance text paraphrases that project's
6655
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
6656
+ * omitted when the archived verdict is unavailable (asset scored by an older
6657
+ * version, or an unreadable archive).
6658
+ */
6659
+ details?: SlopGuard.Details;
6660
+
6661
+ /**
6662
+ * Error message when status is 'error' (truncated)
6663
+ */
6664
+ error?: string;
6665
+
6666
+ /**
6667
+ * 0–100 composite score (present when status is 'scored')
6668
+ */
6669
+ overallScore?: number;
6670
+
6671
+ /**
6672
+ * Sensitivity used for the verdict
6673
+ */
6674
+ sensitivity?: 'high' | 'low' | 'medium';
6675
+
6676
+ /**
6677
+ * pass / warn / fail (present when status is 'scored')
6678
+ */
6679
+ verdict?: 'fail' | 'pass' | 'warn';
6680
+ }
6681
+
6682
+ export namespace SlopGuard {
6683
+ /**
6684
+ * Per-dimension reasons and suggestions, as produced by the detector.
6685
+ *
6686
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
6687
+ * project that owns it — the brief-compliance text paraphrases that project's
6688
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
6689
+ * omitted when the archived verdict is unavailable (asset scored by an older
6690
+ * version, or an unreadable archive).
6691
+ */
6692
+ export interface Details {
6693
+ /**
6694
+ * Always-on generic AI-quality dimension
6695
+ */
6696
+ aiQuality: Details.AIQuality;
6697
+
6698
+ /**
6699
+ * Brief-compliance dimension; omitted when no brief applied
6700
+ */
6701
+ briefCompliance?: Details.BriefCompliance;
6702
+ }
6703
+
6704
+ export namespace Details {
6705
+ /**
6706
+ * Always-on generic AI-quality dimension
6707
+ */
6708
+ export interface AIQuality {
6709
+ /**
6710
+ * Why the image scored as it did
6711
+ */
6712
+ reasons: Array<string>;
6713
+
6714
+ /**
6715
+ * 0–100; higher is better (more compliant / less AI-looking)
6716
+ */
6717
+ score: number;
6718
+
6719
+ /**
6720
+ * Actionable suggestions to improve the score
6721
+ */
6722
+ suggestions: Array<string>;
6723
+ }
6724
+
6725
+ /**
6726
+ * Brief-compliance dimension; omitted when no brief applied
6727
+ */
6728
+ export interface BriefCompliance {
6729
+ /**
6730
+ * Why the image scored as it did
6731
+ */
6732
+ reasons: Array<string>;
6733
+
6734
+ /**
6735
+ * 0–100; higher is better (more compliant / less AI-looking)
6736
+ */
6737
+ score: number;
6738
+
6739
+ /**
6740
+ * Actionable suggestions to improve the score
6741
+ */
6742
+ suggestions: Array<string>;
6743
+ }
6744
+ }
6745
+ }
6746
+
6018
6747
  /**
6019
6748
  * The asset's thumbnail.
6020
6749
  *
@@ -6291,6 +7020,14 @@ export namespace AssetLockResponse {
6291
7020
  */
6292
7021
  preview?: Asset.Preview;
6293
7022
 
7023
+ /**
7024
+ * SlopGuard detection result, computed asynchronously after generation.
7025
+ *
7026
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
7027
+ * asset is read with `withSlopGuardDetails=true`.
7028
+ */
7029
+ slopGuard?: Asset.SlopGuard;
7030
+
6294
7031
  /**
6295
7032
  * The asset's thumbnail.
6296
7033
  *
@@ -7207,6 +7944,140 @@ export namespace AssetLockResponse {
7207
7944
  url: string;
7208
7945
  }
7209
7946
 
7947
+ /**
7948
+ * SlopGuard detection result, computed asynchronously after generation.
7949
+ *
7950
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
7951
+ * asset is read with `withSlopGuardDetails=true`.
7952
+ */
7953
+ export interface SlopGuard {
7954
+ /**
7955
+ * ISO-8601 timestamp of when scoring ran
7956
+ */
7957
+ computedAt: string;
7958
+
7959
+ /**
7960
+ * Whether scoring succeeded or errored
7961
+ */
7962
+ status: 'error' | 'scored';
7963
+
7964
+ /**
7965
+ * Rubric/model version that produced this result
7966
+ */
7967
+ version: string;
7968
+
7969
+ /**
7970
+ * Generic AI-quality sub-score
7971
+ */
7972
+ aiQualityScore?: number;
7973
+
7974
+ /**
7975
+ * Ids of briefs that contributed
7976
+ */
7977
+ appliedBriefIds?: Array<string>;
7978
+
7979
+ /**
7980
+ * Brief-compliance sub-score (omitted when no brief applied)
7981
+ */
7982
+ briefComplianceScore?: number;
7983
+
7984
+ /**
7985
+ * Per-dimension reasons and suggestions, as produced by the detector.
7986
+ *
7987
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
7988
+ * project that owns it — the brief-compliance text paraphrases that project's
7989
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
7990
+ * omitted when the archived verdict is unavailable (asset scored by an older
7991
+ * version, or an unreadable archive).
7992
+ */
7993
+ details?: SlopGuard.Details;
7994
+
7995
+ /**
7996
+ * Error message when status is 'error' (truncated)
7997
+ */
7998
+ error?: string;
7999
+
8000
+ /**
8001
+ * 0–100 composite score (present when status is 'scored')
8002
+ */
8003
+ overallScore?: number;
8004
+
8005
+ /**
8006
+ * Sensitivity used for the verdict
8007
+ */
8008
+ sensitivity?: 'high' | 'low' | 'medium';
8009
+
8010
+ /**
8011
+ * pass / warn / fail (present when status is 'scored')
8012
+ */
8013
+ verdict?: 'fail' | 'pass' | 'warn';
8014
+ }
8015
+
8016
+ export namespace SlopGuard {
8017
+ /**
8018
+ * Per-dimension reasons and suggestions, as produced by the detector.
8019
+ *
8020
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
8021
+ * project that owns it — the brief-compliance text paraphrases that project's
8022
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
8023
+ * omitted when the archived verdict is unavailable (asset scored by an older
8024
+ * version, or an unreadable archive).
8025
+ */
8026
+ export interface Details {
8027
+ /**
8028
+ * Always-on generic AI-quality dimension
8029
+ */
8030
+ aiQuality: Details.AIQuality;
8031
+
8032
+ /**
8033
+ * Brief-compliance dimension; omitted when no brief applied
8034
+ */
8035
+ briefCompliance?: Details.BriefCompliance;
8036
+ }
8037
+
8038
+ export namespace Details {
8039
+ /**
8040
+ * Always-on generic AI-quality dimension
8041
+ */
8042
+ export interface AIQuality {
8043
+ /**
8044
+ * Why the image scored as it did
8045
+ */
8046
+ reasons: Array<string>;
8047
+
8048
+ /**
8049
+ * 0–100; higher is better (more compliant / less AI-looking)
8050
+ */
8051
+ score: number;
8052
+
8053
+ /**
8054
+ * Actionable suggestions to improve the score
8055
+ */
8056
+ suggestions: Array<string>;
8057
+ }
8058
+
8059
+ /**
8060
+ * Brief-compliance dimension; omitted when no brief applied
8061
+ */
8062
+ export interface BriefCompliance {
8063
+ /**
8064
+ * Why the image scored as it did
8065
+ */
8066
+ reasons: Array<string>;
8067
+
8068
+ /**
8069
+ * 0–100; higher is better (more compliant / less AI-looking)
8070
+ */
8071
+ score: number;
8072
+
8073
+ /**
8074
+ * Actionable suggestions to improve the score
8075
+ */
8076
+ suggestions: Array<string>;
8077
+ }
8078
+ }
8079
+ }
8080
+
7210
8081
  /**
7211
8082
  * The asset's thumbnail.
7212
8083
  *
@@ -7468,6 +8339,14 @@ export namespace AssetUnlockResponse {
7468
8339
  */
7469
8340
  preview?: Asset.Preview;
7470
8341
 
8342
+ /**
8343
+ * SlopGuard detection result, computed asynchronously after generation.
8344
+ *
8345
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
8346
+ * asset is read with `withSlopGuardDetails=true`.
8347
+ */
8348
+ slopGuard?: Asset.SlopGuard;
8349
+
7471
8350
  /**
7472
8351
  * The asset's thumbnail.
7473
8352
  *
@@ -8384,6 +9263,140 @@ export namespace AssetUnlockResponse {
8384
9263
  url: string;
8385
9264
  }
8386
9265
 
9266
+ /**
9267
+ * SlopGuard detection result, computed asynchronously after generation.
9268
+ *
9269
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
9270
+ * asset is read with `withSlopGuardDetails=true`.
9271
+ */
9272
+ export interface SlopGuard {
9273
+ /**
9274
+ * ISO-8601 timestamp of when scoring ran
9275
+ */
9276
+ computedAt: string;
9277
+
9278
+ /**
9279
+ * Whether scoring succeeded or errored
9280
+ */
9281
+ status: 'error' | 'scored';
9282
+
9283
+ /**
9284
+ * Rubric/model version that produced this result
9285
+ */
9286
+ version: string;
9287
+
9288
+ /**
9289
+ * Generic AI-quality sub-score
9290
+ */
9291
+ aiQualityScore?: number;
9292
+
9293
+ /**
9294
+ * Ids of briefs that contributed
9295
+ */
9296
+ appliedBriefIds?: Array<string>;
9297
+
9298
+ /**
9299
+ * Brief-compliance sub-score (omitted when no brief applied)
9300
+ */
9301
+ briefComplianceScore?: number;
9302
+
9303
+ /**
9304
+ * Per-dimension reasons and suggestions, as produced by the detector.
9305
+ *
9306
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
9307
+ * project that owns it — the brief-compliance text paraphrases that project's
9308
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
9309
+ * omitted when the archived verdict is unavailable (asset scored by an older
9310
+ * version, or an unreadable archive).
9311
+ */
9312
+ details?: SlopGuard.Details;
9313
+
9314
+ /**
9315
+ * Error message when status is 'error' (truncated)
9316
+ */
9317
+ error?: string;
9318
+
9319
+ /**
9320
+ * 0–100 composite score (present when status is 'scored')
9321
+ */
9322
+ overallScore?: number;
9323
+
9324
+ /**
9325
+ * Sensitivity used for the verdict
9326
+ */
9327
+ sensitivity?: 'high' | 'low' | 'medium';
9328
+
9329
+ /**
9330
+ * pass / warn / fail (present when status is 'scored')
9331
+ */
9332
+ verdict?: 'fail' | 'pass' | 'warn';
9333
+ }
9334
+
9335
+ export namespace SlopGuard {
9336
+ /**
9337
+ * Per-dimension reasons and suggestions, as produced by the detector.
9338
+ *
9339
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
9340
+ * project that owns it — the brief-compliance text paraphrases that project's
9341
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
9342
+ * omitted when the archived verdict is unavailable (asset scored by an older
9343
+ * version, or an unreadable archive).
9344
+ */
9345
+ export interface Details {
9346
+ /**
9347
+ * Always-on generic AI-quality dimension
9348
+ */
9349
+ aiQuality: Details.AIQuality;
9350
+
9351
+ /**
9352
+ * Brief-compliance dimension; omitted when no brief applied
9353
+ */
9354
+ briefCompliance?: Details.BriefCompliance;
9355
+ }
9356
+
9357
+ export namespace Details {
9358
+ /**
9359
+ * Always-on generic AI-quality dimension
9360
+ */
9361
+ export interface AIQuality {
9362
+ /**
9363
+ * Why the image scored as it did
9364
+ */
9365
+ reasons: Array<string>;
9366
+
9367
+ /**
9368
+ * 0–100; higher is better (more compliant / less AI-looking)
9369
+ */
9370
+ score: number;
9371
+
9372
+ /**
9373
+ * Actionable suggestions to improve the score
9374
+ */
9375
+ suggestions: Array<string>;
9376
+ }
9377
+
9378
+ /**
9379
+ * Brief-compliance dimension; omitted when no brief applied
9380
+ */
9381
+ export interface BriefCompliance {
9382
+ /**
9383
+ * Why the image scored as it did
9384
+ */
9385
+ reasons: Array<string>;
9386
+
9387
+ /**
9388
+ * 0–100; higher is better (more compliant / less AI-looking)
9389
+ */
9390
+ score: number;
9391
+
9392
+ /**
9393
+ * Actionable suggestions to improve the score
9394
+ */
9395
+ suggestions: Array<string>;
9396
+ }
9397
+ }
9398
+ }
9399
+
8387
9400
  /**
8388
9401
  * The asset's thumbnail.
8389
9402
  *
@@ -8659,6 +9672,14 @@ export namespace AssetUploadResponse {
8659
9672
  */
8660
9673
  preview?: Asset.Preview;
8661
9674
 
9675
+ /**
9676
+ * SlopGuard detection result, computed asynchronously after generation.
9677
+ *
9678
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
9679
+ * asset is read with `withSlopGuardDetails=true`.
9680
+ */
9681
+ slopGuard?: Asset.SlopGuard;
9682
+
8662
9683
  /**
8663
9684
  * The asset's thumbnail.
8664
9685
  *
@@ -9575,6 +10596,140 @@ export namespace AssetUploadResponse {
9575
10596
  url: string;
9576
10597
  }
9577
10598
 
10599
+ /**
10600
+ * SlopGuard detection result, computed asynchronously after generation.
10601
+ *
10602
+ * `details` (the per-dimension reasons and suggestions) is returned only when the
10603
+ * asset is read with `withSlopGuardDetails=true`.
10604
+ */
10605
+ export interface SlopGuard {
10606
+ /**
10607
+ * ISO-8601 timestamp of when scoring ran
10608
+ */
10609
+ computedAt: string;
10610
+
10611
+ /**
10612
+ * Whether scoring succeeded or errored
10613
+ */
10614
+ status: 'error' | 'scored';
10615
+
10616
+ /**
10617
+ * Rubric/model version that produced this result
10618
+ */
10619
+ version: string;
10620
+
10621
+ /**
10622
+ * Generic AI-quality sub-score
10623
+ */
10624
+ aiQualityScore?: number;
10625
+
10626
+ /**
10627
+ * Ids of briefs that contributed
10628
+ */
10629
+ appliedBriefIds?: Array<string>;
10630
+
10631
+ /**
10632
+ * Brief-compliance sub-score (omitted when no brief applied)
10633
+ */
10634
+ briefComplianceScore?: number;
10635
+
10636
+ /**
10637
+ * Per-dimension reasons and suggestions, as produced by the detector.
10638
+ *
10639
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
10640
+ * project that owns it — the brief-compliance text paraphrases that project's
10641
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
10642
+ * omitted when the archived verdict is unavailable (asset scored by an older
10643
+ * version, or an unreadable archive).
10644
+ */
10645
+ details?: SlopGuard.Details;
10646
+
10647
+ /**
10648
+ * Error message when status is 'error' (truncated)
10649
+ */
10650
+ error?: string;
10651
+
10652
+ /**
10653
+ * 0–100 composite score (present when status is 'scored')
10654
+ */
10655
+ overallScore?: number;
10656
+
10657
+ /**
10658
+ * Sensitivity used for the verdict
10659
+ */
10660
+ sensitivity?: 'high' | 'low' | 'medium';
10661
+
10662
+ /**
10663
+ * pass / warn / fail (present when status is 'scored')
10664
+ */
10665
+ verdict?: 'fail' | 'pass' | 'warn';
10666
+ }
10667
+
10668
+ export namespace SlopGuard {
10669
+ /**
10670
+ * Per-dimension reasons and suggestions, as produced by the detector.
10671
+ *
10672
+ * Returned only when the asset is read with `withSlopGuardDetails=true` by the
10673
+ * project that owns it — the brief-compliance text paraphrases that project's
10674
+ * brief, so a cross-project read of a public asset gets the summary alone. Also
10675
+ * omitted when the archived verdict is unavailable (asset scored by an older
10676
+ * version, or an unreadable archive).
10677
+ */
10678
+ export interface Details {
10679
+ /**
10680
+ * Always-on generic AI-quality dimension
10681
+ */
10682
+ aiQuality: Details.AIQuality;
10683
+
10684
+ /**
10685
+ * Brief-compliance dimension; omitted when no brief applied
10686
+ */
10687
+ briefCompliance?: Details.BriefCompliance;
10688
+ }
10689
+
10690
+ export namespace Details {
10691
+ /**
10692
+ * Always-on generic AI-quality dimension
10693
+ */
10694
+ export interface AIQuality {
10695
+ /**
10696
+ * Why the image scored as it did
10697
+ */
10698
+ reasons: Array<string>;
10699
+
10700
+ /**
10701
+ * 0–100; higher is better (more compliant / less AI-looking)
10702
+ */
10703
+ score: number;
10704
+
10705
+ /**
10706
+ * Actionable suggestions to improve the score
10707
+ */
10708
+ suggestions: Array<string>;
10709
+ }
10710
+
10711
+ /**
10712
+ * Brief-compliance dimension; omitted when no brief applied
10713
+ */
10714
+ export interface BriefCompliance {
10715
+ /**
10716
+ * Why the image scored as it did
10717
+ */
10718
+ reasons: Array<string>;
10719
+
10720
+ /**
10721
+ * 0–100; higher is better (more compliant / less AI-looking)
10722
+ */
10723
+ score: number;
10724
+
10725
+ /**
10726
+ * Actionable suggestions to improve the score
10727
+ */
10728
+ suggestions: Array<string>;
10729
+ }
10730
+ }
10731
+ }
10732
+
9578
10733
  /**
9579
10734
  * The asset's thumbnail.
9580
10735
  *
@@ -10534,6 +11689,27 @@ export namespace AssetUploadResponse {
10534
11689
 
10535
11690
  cuDiscount: number;
10536
11691
 
11692
+ /**
11693
+ * Compute Units charged for the ADD-ONS of this job, per action — the fees paid on
11694
+ * top of the generation itself, such as `slop-detection`.
11695
+ *
11696
+ * `cuCost` above is the main action alone, so the job's total is `cuCost` plus the
11697
+ * values here.
11698
+ *
11699
+ * Two caveats when displaying it:
11700
+ *
11701
+ * - These are a remaining refundable balance, not a receipt: a job that failed or
11702
+ * was cancelled has had its add-ons refunded, so they read 0 while `cuCost`
11703
+ * still shows the main action's original charge.
11704
+ * - `ip-detection` is part of the shape but is never populated today: that fee is
11705
+ * charged outside the job and reported once, as
11706
+ * `ipDetection.creativeUnitsCharged`, in the response of the request that ran
11707
+ * it.
11708
+ *
11709
+ * Absent when the job paid for no add-on.
11710
+ */
11711
+ cuCostDetails?: Billing.CuCostDetails;
11712
+
10537
11713
  /**
10538
11714
  * When true, the credits charged for this job are not automatically refunded if
10539
11715
  * the generation fails, because the model used does not support refund-on-failure.
@@ -10541,6 +11717,33 @@ export namespace AssetUploadResponse {
10541
11717
  */
10542
11718
  disableRefund?: boolean;
10543
11719
  }
11720
+
11721
+ export namespace Billing {
11722
+ /**
11723
+ * Compute Units charged for the ADD-ONS of this job, per action — the fees paid on
11724
+ * top of the generation itself, such as `slop-detection`.
11725
+ *
11726
+ * `cuCost` above is the main action alone, so the job's total is `cuCost` plus the
11727
+ * values here.
11728
+ *
11729
+ * Two caveats when displaying it:
11730
+ *
11731
+ * - These are a remaining refundable balance, not a receipt: a job that failed or
11732
+ * was cancelled has had its add-ons refunded, so they read 0 while `cuCost`
11733
+ * still shows the main action's original charge.
11734
+ * - `ip-detection` is part of the shape but is never populated today: that fee is
11735
+ * charged outside the job and reported once, as
11736
+ * `ipDetection.creativeUnitsCharged`, in the response of the request that ran
11737
+ * it.
11738
+ *
11739
+ * Absent when the job paid for no add-on.
11740
+ */
11741
+ export interface CuCostDetails {
11742
+ 'ip-detection'?: number;
11743
+
11744
+ 'slop-detection'?: number;
11745
+ }
11746
+ }
10544
11747
  }
10545
11748
  }
10546
11749
 
@@ -10550,10 +11753,24 @@ export interface AssetRetrieveParams {
10550
11753
  */
10551
11754
  originalAssets?: boolean;
10552
11755
 
11756
+ /**
11757
+ * The projectId used for ownership resource management. Either to assert ownership
11758
+ * or to set the owner of the resource(s)
11759
+ */
11760
+ projectId?: string;
11761
+
10553
11762
  /**
10554
11763
  * Include the embedding in the response
10555
11764
  */
10556
11765
  withEmbedding?: boolean;
11766
+
11767
+ /**
11768
+ * Include the per-dimension SlopGuard verdict (`slopGuard.details`: reasons and
11769
+ * suggestions for each scored dimension). Honoured only when the asset belongs to
11770
+ * the calling project, since the brief-compliance text paraphrases that project’s
11771
+ * brief; ignored otherwise, including on public unauthenticated access.
11772
+ */
11773
+ withSlopGuardDetails?: boolean;
10557
11774
  }
10558
11775
 
10559
11776
  export interface AssetUpdateParams {
@@ -10562,6 +11779,12 @@ export interface AssetUpdateParams {
10562
11779
  */
10563
11780
  originalAssets?: boolean;
10564
11781
 
11782
+ /**
11783
+ * Query param: The projectId used for ownership resource management. Either to
11784
+ * assert ownership or to set the owner of the resource(s)
11785
+ */
11786
+ projectId?: string;
11787
+
10565
11788
  /**
10566
11789
  * Body param: The new value for the canvas as a stringified JSON.
10567
11790
  */
@@ -10651,6 +11874,12 @@ export interface AssetListParams extends AssetsCursorParams {
10651
11874
  */
10652
11875
  privacy?: string;
10653
11876
 
11877
+ /**
11878
+ * The projectId used for ownership resource management. Either to assert ownership
11879
+ * or to set the owner of the resource(s)
11880
+ */
11881
+ projectId?: string;
11882
+
10654
11883
  /**
10655
11884
  * List all the children assets that were generated from a specific root asset
10656
11885
  */
@@ -10896,9 +12125,15 @@ export interface AssetListParams extends AssetsCursorParams {
10896
12125
 
10897
12126
  export interface AssetDeleteMultipleParams {
10898
12127
  /**
10899
- * The ids of the assets to delete. (Max 100 at once)
12128
+ * Body param: The ids of the assets to delete. (Max 100 at once)
10900
12129
  */
10901
12130
  assetIds: Array<string>;
12131
+
12132
+ /**
12133
+ * Query param: The projectId used for ownership resource management. Either to
12134
+ * assert ownership or to set the owner of the resource(s)
12135
+ */
12136
+ projectId?: string;
10902
12137
  }
10903
12138
 
10904
12139
  export interface AssetDuplicateParams {
@@ -10907,6 +12142,12 @@ export interface AssetDuplicateParams {
10907
12142
  */
10908
12143
  originalAssets?: boolean;
10909
12144
 
12145
+ /**
12146
+ * Query param: The projectId used for ownership resource management. Either to
12147
+ * assert ownership or to set the owner of the resource(s)
12148
+ */
12149
+ projectId?: string;
12150
+
10910
12151
  /**
10911
12152
  * Body param: The id of the project to copy the asset to. If not provided, the
10912
12153
  * asset will be copied to the canvas project.
@@ -10920,6 +12161,12 @@ export interface AssetGetBulkParams {
10920
12161
  */
10921
12162
  originalAssets?: boolean;
10922
12163
 
12164
+ /**
12165
+ * Query param: The projectId used for ownership resource management. Either to
12166
+ * assert ownership or to set the owner of the resource(s)
12167
+ */
12168
+ projectId?: string;
12169
+
10923
12170
  /**
10924
12171
  * Body param: The list of asset ids the team has read access to. Limit of 200
10925
12172
  * assets.
@@ -10933,6 +12180,12 @@ export interface AssetListSnapshotsParams extends SnapshotsCursorParams {
10933
12180
  * value is 100, minimum value is 10
10934
12181
  */
10935
12182
  pageSize?: number;
12183
+
12184
+ /**
12185
+ * The projectId used for ownership resource management. Either to assert ownership
12186
+ * or to set the owner of the resource(s)
12187
+ */
12188
+ projectId?: string;
10936
12189
  }
10937
12190
 
10938
12191
  export interface AssetLockParams {
@@ -10945,6 +12198,12 @@ export interface AssetLockParams {
10945
12198
  * Query param: If set to true, returns the original asset without transformation
10946
12199
  */
10947
12200
  originalAssets?: boolean;
12201
+
12202
+ /**
12203
+ * Query param: The projectId used for ownership resource management. Either to
12204
+ * assert ownership or to set the owner of the resource(s)
12205
+ */
12206
+ projectId?: string;
10948
12207
  }
10949
12208
 
10950
12209
  export interface AssetUnlockParams {
@@ -10953,6 +12212,12 @@ export interface AssetUnlockParams {
10953
12212
  */
10954
12213
  originalAssets?: boolean;
10955
12214
 
12215
+ /**
12216
+ * Query param: The projectId used for ownership resource management. Either to
12217
+ * assert ownership or to set the owner of the resource(s)
12218
+ */
12219
+ projectId?: string;
12220
+
10956
12221
  /**
10957
12222
  * Body param: If true, no need to pass a lockId.
10958
12223
  */
@@ -10966,17 +12231,23 @@ export interface AssetUnlockParams {
10966
12231
 
10967
12232
  export interface AssetUpdateTagsParams {
10968
12233
  /**
10969
- * The list of tags to add
12234
+ * Query param: The projectId used for ownership resource management. Either to
12235
+ * assert ownership or to set the owner of the resource(s)
12236
+ */
12237
+ projectId?: string;
12238
+
12239
+ /**
12240
+ * Body param: The list of tags to add
10970
12241
  */
10971
12242
  add?: Array<string>;
10972
12243
 
10973
12244
  /**
10974
- * The list of tags to delete
12245
+ * Body param: The list of tags to delete
10975
12246
  */
10976
12247
  delete?: Array<string>;
10977
12248
 
10978
12249
  /**
10979
- * If true, the function will throw an error if:
12250
+ * Body param: If true, the function will throw an error if:
10980
12251
  *
10981
12252
  * - one of the tags to add already exists
10982
12253
  * - one of the tags to delete is not found If false, the endpoint will behave as
@@ -10996,6 +12267,12 @@ export interface AssetUploadParams {
10996
12267
  */
10997
12268
  originalAssets?: boolean;
10998
12269
 
12270
+ /**
12271
+ * Query param: The projectId used for ownership resource management. Either to
12272
+ * assert ownership or to set the owner of the resource(s)
12273
+ */
12274
+ projectId?: string;
12275
+
10999
12276
  /**
11000
12277
  * Body param: The canvas to upload as a stringified JSON. Ignored if `image` is
11001
12278
  * provided.
@@ -11065,6 +12342,7 @@ export declare namespace Assets {
11065
12342
  type DownloadGetStatusResponse as DownloadGetStatusResponse,
11066
12343
  type DownloadRequestResponse as DownloadRequestResponse,
11067
12344
  type DownloadRequestBatchResponse as DownloadRequestBatchResponse,
12345
+ type DownloadGetStatusParams as DownloadGetStatusParams,
11068
12346
  type DownloadRequestParams as DownloadRequestParams,
11069
12347
  type DownloadRequestBatchParams as DownloadRequestBatchParams,
11070
12348
  };