@purveyors/sdk 0.53.0 → 0.54.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.
- package/dist/index.d.ts +1107 -149
- package/dist/index.js +40 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1159,7 +1159,10 @@ interface paths {
|
|
|
1159
1159
|
};
|
|
1160
1160
|
get?: never;
|
|
1161
1161
|
put?: never;
|
|
1162
|
-
/**
|
|
1162
|
+
/**
|
|
1163
|
+
* Save an executed roast as a reference profile
|
|
1164
|
+
* @description Save one of the caller's executed roasts as a reference profile. The default `chart_snapshot` basis stores the roast's chart for comparison only. The `artisan_source` basis copies the Artisan file the roast was imported from, so the reference can be the base for a planned profile and its export; it requires a roast with an Artisan file on record, returns 400 `roast_artisan_source_unavailable` with a `reason` otherwise, and returns the reference already saved from that roast's file instead of creating a duplicate. The roast is never modified. Requires Mallard Studio, and for API keys the exact roast:read and roast:write scopes.
|
|
1165
|
+
*/
|
|
1163
1166
|
post: {
|
|
1164
1167
|
parameters: {
|
|
1165
1168
|
query?: never;
|
|
@@ -1175,7 +1178,22 @@ interface paths {
|
|
|
1175
1178
|
};
|
|
1176
1179
|
};
|
|
1177
1180
|
responses: {
|
|
1178
|
-
/** @description
|
|
1181
|
+
/** @description The reference already saved from this roast's Artisan file */
|
|
1182
|
+
200: {
|
|
1183
|
+
headers: {
|
|
1184
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1185
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1186
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1187
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1188
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1189
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1190
|
+
[name: string]: unknown;
|
|
1191
|
+
};
|
|
1192
|
+
content: {
|
|
1193
|
+
"application/json": components["schemas"]["ReferenceProfileResponse"];
|
|
1194
|
+
};
|
|
1195
|
+
};
|
|
1196
|
+
/** @description Created reference profile */
|
|
1179
1197
|
201: {
|
|
1180
1198
|
headers: {
|
|
1181
1199
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -1190,8 +1208,144 @@ interface paths {
|
|
|
1190
1208
|
"application/json": components["schemas"]["ReferenceProfileResponse"];
|
|
1191
1209
|
};
|
|
1192
1210
|
};
|
|
1193
|
-
/** @description Invalid request */
|
|
1211
|
+
/** @description Invalid request, or the roast has no usable Artisan file on record */
|
|
1194
1212
|
400: {
|
|
1213
|
+
headers: {
|
|
1214
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1215
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1216
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1217
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1218
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1219
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1220
|
+
[name: string]: unknown;
|
|
1221
|
+
};
|
|
1222
|
+
content: {
|
|
1223
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
1224
|
+
};
|
|
1225
|
+
};
|
|
1226
|
+
/** @description Authentication required */
|
|
1227
|
+
401: {
|
|
1228
|
+
headers: {
|
|
1229
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1230
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1231
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1232
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1233
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1234
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1235
|
+
[name: string]: unknown;
|
|
1236
|
+
};
|
|
1237
|
+
content: {
|
|
1238
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1239
|
+
};
|
|
1240
|
+
};
|
|
1241
|
+
/** @description Insufficient entitlement (plan or role) */
|
|
1242
|
+
403: {
|
|
1243
|
+
headers: {
|
|
1244
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1245
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1246
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1247
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1248
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1249
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1250
|
+
[name: string]: unknown;
|
|
1251
|
+
};
|
|
1252
|
+
content: {
|
|
1253
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1254
|
+
};
|
|
1255
|
+
};
|
|
1256
|
+
/** @description Reference profile or source roast not found */
|
|
1257
|
+
404: {
|
|
1258
|
+
headers: {
|
|
1259
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1260
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1261
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1262
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1263
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1264
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1265
|
+
[name: string]: unknown;
|
|
1266
|
+
};
|
|
1267
|
+
content: {
|
|
1268
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1269
|
+
};
|
|
1270
|
+
};
|
|
1271
|
+
/** @description Revision, idempotency, or concurrency conflict */
|
|
1272
|
+
409: {
|
|
1273
|
+
headers: {
|
|
1274
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1275
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1276
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1277
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1278
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1279
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1280
|
+
[name: string]: unknown;
|
|
1281
|
+
};
|
|
1282
|
+
content: {
|
|
1283
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1284
|
+
};
|
|
1285
|
+
};
|
|
1286
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
1287
|
+
};
|
|
1288
|
+
};
|
|
1289
|
+
delete?: never;
|
|
1290
|
+
options?: never;
|
|
1291
|
+
head?: never;
|
|
1292
|
+
patch?: never;
|
|
1293
|
+
trace?: never;
|
|
1294
|
+
};
|
|
1295
|
+
"/v1/reference-profiles/from-roast/candidates": {
|
|
1296
|
+
parameters: {
|
|
1297
|
+
query?: never;
|
|
1298
|
+
header?: never;
|
|
1299
|
+
path?: never;
|
|
1300
|
+
cookie?: never;
|
|
1301
|
+
};
|
|
1302
|
+
/**
|
|
1303
|
+
* List executed roasts that can be the base for a planned profile
|
|
1304
|
+
* @description List the caller's executed roasts whose Artisan file is on record, newest first, each with its current revision token and the reference it is or would be saved under. `ineligibleRoastCount` counts the caller's other roasts, which have no usable Artisan file on record (entered manually, logged live, imported before files were kept, or holding a file larger than a reference profile allows). Requires Mallard Studio, and for API keys the exact roast:read scope.
|
|
1305
|
+
*/
|
|
1306
|
+
get: {
|
|
1307
|
+
parameters: {
|
|
1308
|
+
query?: {
|
|
1309
|
+
limit?: number;
|
|
1310
|
+
};
|
|
1311
|
+
header?: never;
|
|
1312
|
+
path?: never;
|
|
1313
|
+
cookie?: never;
|
|
1314
|
+
};
|
|
1315
|
+
requestBody?: never;
|
|
1316
|
+
responses: {
|
|
1317
|
+
/** @description Roasts with an Artisan file on record */
|
|
1318
|
+
200: {
|
|
1319
|
+
headers: {
|
|
1320
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1321
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1322
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1323
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1324
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1325
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1326
|
+
[name: string]: unknown;
|
|
1327
|
+
};
|
|
1328
|
+
content: {
|
|
1329
|
+
"application/json": components["schemas"]["ReferenceProfileRoastCandidatesResponse"];
|
|
1330
|
+
};
|
|
1331
|
+
};
|
|
1332
|
+
/** @description Authentication required */
|
|
1333
|
+
401: {
|
|
1334
|
+
headers: {
|
|
1335
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1336
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1337
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1338
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1339
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1340
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1341
|
+
[name: string]: unknown;
|
|
1342
|
+
};
|
|
1343
|
+
content: {
|
|
1344
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1345
|
+
};
|
|
1346
|
+
};
|
|
1347
|
+
/** @description Insufficient entitlement (plan or role) */
|
|
1348
|
+
403: {
|
|
1195
1349
|
headers: {
|
|
1196
1350
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1197
1351
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -1205,6 +1359,73 @@ interface paths {
|
|
|
1205
1359
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
1206
1360
|
};
|
|
1207
1361
|
};
|
|
1362
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
1363
|
+
};
|
|
1364
|
+
};
|
|
1365
|
+
put?: never;
|
|
1366
|
+
post?: never;
|
|
1367
|
+
delete?: never;
|
|
1368
|
+
options?: never;
|
|
1369
|
+
head?: never;
|
|
1370
|
+
patch?: never;
|
|
1371
|
+
trace?: never;
|
|
1372
|
+
};
|
|
1373
|
+
"/v1/reference-profiles/from-roast/preview": {
|
|
1374
|
+
parameters: {
|
|
1375
|
+
query?: never;
|
|
1376
|
+
header?: never;
|
|
1377
|
+
path?: never;
|
|
1378
|
+
cookie?: never;
|
|
1379
|
+
};
|
|
1380
|
+
get?: never;
|
|
1381
|
+
put?: never;
|
|
1382
|
+
/**
|
|
1383
|
+
* Preview a planned profile based on an executed roast
|
|
1384
|
+
* @description Preview a constrained planned profile built on the Artisan file one of the caller's executed roasts was imported from. Read-only: nothing is saved and the roast is not modified. Returns the same measured preview as a saved reference, plus the reference identity a later save would use. Roasts without a usable Artisan file on record return 400 `roast_artisan_source_unavailable` with a `reason`. Requires Mallard Studio, and for API keys the exact roast:read scope.
|
|
1385
|
+
*/
|
|
1386
|
+
post: {
|
|
1387
|
+
parameters: {
|
|
1388
|
+
query?: never;
|
|
1389
|
+
header?: never;
|
|
1390
|
+
path?: never;
|
|
1391
|
+
cookie?: never;
|
|
1392
|
+
};
|
|
1393
|
+
requestBody: {
|
|
1394
|
+
content: {
|
|
1395
|
+
"application/json": components["schemas"]["ReferenceProfileRoastGenerationRequest"];
|
|
1396
|
+
};
|
|
1397
|
+
};
|
|
1398
|
+
responses: {
|
|
1399
|
+
/** @description Deterministic preview without persistence */
|
|
1400
|
+
200: {
|
|
1401
|
+
headers: {
|
|
1402
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1403
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1404
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1405
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1406
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1407
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1408
|
+
[name: string]: unknown;
|
|
1409
|
+
};
|
|
1410
|
+
content: {
|
|
1411
|
+
"application/json": components["schemas"]["ReferenceProfileRoastGenerationPreviewResponse"];
|
|
1412
|
+
};
|
|
1413
|
+
};
|
|
1414
|
+
/** @description Invalid request, or the roast has no usable Artisan file on record */
|
|
1415
|
+
400: {
|
|
1416
|
+
headers: {
|
|
1417
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
1418
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
1419
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
1420
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
1421
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
1422
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
1423
|
+
[name: string]: unknown;
|
|
1424
|
+
};
|
|
1425
|
+
content: {
|
|
1426
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
1427
|
+
};
|
|
1428
|
+
};
|
|
1208
1429
|
/** @description Authentication required */
|
|
1209
1430
|
401: {
|
|
1210
1431
|
headers: {
|
|
@@ -6007,7 +6228,7 @@ interface paths {
|
|
|
6007
6228
|
};
|
|
6008
6229
|
/**
|
|
6009
6230
|
* Find catalog coffees similar to a target coffee
|
|
6010
|
-
* @description Vector-similarity matches between public supplier catalog coffees, with deterministic identity gating, supplier-diversity re-ranking, and a canonical/similar split. User-owned coffees are excluded. Available to member sessions
|
|
6231
|
+
* @description Vector-similarity matches between public supplier catalog coffees, with deterministic identity gating, supplier-diversity re-ranking, and a canonical/similar split. User-owned coffees are excluded. Available to member sessions, or any customer API key with catalog:read (all API plans, within plan quota). Responses return at most 25 matches.
|
|
6011
6232
|
*/
|
|
6012
6233
|
get: {
|
|
6013
6234
|
parameters: {
|
|
@@ -7134,7 +7355,7 @@ interface paths {
|
|
|
7134
7355
|
put?: never;
|
|
7135
7356
|
/**
|
|
7136
7357
|
* Execute a user-confirmed product action
|
|
7137
|
-
* @description Execute one of the closed product actions for the authenticated session owner. The stable executionId provides payload-bound replay, and owner plus entitlement checks run again inside the same database transaction as the mutation. Generated reference saves require explicit user confirmation and remain planned profiles. API keys are not accepted.
|
|
7358
|
+
* @description Execute one of the closed product actions for the authenticated session owner. The stable executionId provides payload-bound replay, and owner plus entitlement checks run again inside the same database transaction as the mutation. Generated reference saves require explicit user confirmation and remain planned profiles; one based on an executed roast also saves that roast's stored Artisan file as its parent reference and never modifies the roast. API keys are not accepted.
|
|
7138
7359
|
*/
|
|
7139
7360
|
post: {
|
|
7140
7361
|
parameters: {
|
|
@@ -7164,7 +7385,7 @@ interface paths {
|
|
|
7164
7385
|
"application/json": components["schemas"]["ConfirmedActionExecuteResponse"];
|
|
7165
7386
|
};
|
|
7166
7387
|
};
|
|
7167
|
-
/** @description Invalid or unsupported confirmed-action payload */
|
|
7388
|
+
/** @description Invalid or unsupported confirmed-action payload, or a roast-based plan whose roast has no usable Artisan file on record */
|
|
7168
7389
|
400: {
|
|
7169
7390
|
headers: {
|
|
7170
7391
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -7176,7 +7397,7 @@ interface paths {
|
|
|
7176
7397
|
[name: string]: unknown;
|
|
7177
7398
|
};
|
|
7178
7399
|
content: {
|
|
7179
|
-
"application/json": components["schemas"]["
|
|
7400
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
7180
7401
|
};
|
|
7181
7402
|
};
|
|
7182
7403
|
/** @description Authentication required */
|
|
@@ -10246,7 +10467,7 @@ interface paths {
|
|
|
10246
10467
|
patch?: never;
|
|
10247
10468
|
trace?: never;
|
|
10248
10469
|
};
|
|
10249
|
-
"/v1/roasts/
|
|
10470
|
+
"/v1/roasts/imports/from-reference": {
|
|
10250
10471
|
parameters: {
|
|
10251
10472
|
query?: never;
|
|
10252
10473
|
header?: never;
|
|
@@ -10254,29 +10475,28 @@ interface paths {
|
|
|
10254
10475
|
cookie?: never;
|
|
10255
10476
|
};
|
|
10256
10477
|
get?: never;
|
|
10478
|
+
put?: never;
|
|
10257
10479
|
/**
|
|
10258
|
-
*
|
|
10259
|
-
* @description
|
|
10480
|
+
* Create a roast from a saved Artisan reference
|
|
10481
|
+
* @description Create a roast profile owned by the caller from the Artisan file stored with one of their uploaded reference profiles, against one of their green-coffee lots. The curve, events, and import log are written atomically, exactly as a direct Artisan import. Only uploaded Artisan references qualify: a planned (generated) profile is never recorded as a roast, and a reference saved from an existing roast is refused because that roast is already in history. Requires Mallard Studio, and for API keys the exact roast:read and roast:write scopes.
|
|
10260
10482
|
*/
|
|
10261
|
-
|
|
10483
|
+
post: {
|
|
10262
10484
|
parameters: {
|
|
10263
10485
|
query?: never;
|
|
10264
10486
|
header?: {
|
|
10265
|
-
"
|
|
10266
|
-
};
|
|
10267
|
-
path: {
|
|
10268
|
-
id: number;
|
|
10487
|
+
"idempotency-key"?: string;
|
|
10269
10488
|
};
|
|
10489
|
+
path?: never;
|
|
10270
10490
|
cookie?: never;
|
|
10271
10491
|
};
|
|
10272
10492
|
requestBody: {
|
|
10273
10493
|
content: {
|
|
10274
|
-
"application/json": components["schemas"]["
|
|
10494
|
+
"application/json": components["schemas"]["RoastImportFromReferenceRequest"];
|
|
10275
10495
|
};
|
|
10276
10496
|
};
|
|
10277
10497
|
responses: {
|
|
10278
|
-
/** @description The
|
|
10279
|
-
|
|
10498
|
+
/** @description The created roast profile plus import summary */
|
|
10499
|
+
201: {
|
|
10280
10500
|
headers: {
|
|
10281
10501
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10282
10502
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -10287,7 +10507,7 @@ interface paths {
|
|
|
10287
10507
|
[name: string]: unknown;
|
|
10288
10508
|
};
|
|
10289
10509
|
content: {
|
|
10290
|
-
"application/json": components["schemas"]["
|
|
10510
|
+
"application/json": components["schemas"]["RoastImportFromReferenceResponse"];
|
|
10291
10511
|
};
|
|
10292
10512
|
};
|
|
10293
10513
|
/** @description Invalid query parameter */
|
|
@@ -10335,7 +10555,7 @@ interface paths {
|
|
|
10335
10555
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10336
10556
|
};
|
|
10337
10557
|
};
|
|
10338
|
-
/** @description No such
|
|
10558
|
+
/** @description No such coffee lot owned by the caller */
|
|
10339
10559
|
404: {
|
|
10340
10560
|
headers: {
|
|
10341
10561
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -10399,22 +10619,181 @@ interface paths {
|
|
|
10399
10619
|
};
|
|
10400
10620
|
};
|
|
10401
10621
|
};
|
|
10402
|
-
|
|
10622
|
+
delete?: never;
|
|
10623
|
+
options?: never;
|
|
10624
|
+
head?: never;
|
|
10625
|
+
patch?: never;
|
|
10626
|
+
trace?: never;
|
|
10627
|
+
};
|
|
10628
|
+
"/v1/roasts/{id}/artisan-import": {
|
|
10629
|
+
parameters: {
|
|
10630
|
+
query?: never;
|
|
10631
|
+
header?: never;
|
|
10632
|
+
path?: never;
|
|
10633
|
+
cookie?: never;
|
|
10634
|
+
};
|
|
10635
|
+
get?: never;
|
|
10403
10636
|
/**
|
|
10404
|
-
*
|
|
10405
|
-
* @description
|
|
10637
|
+
* Replace a roast's Artisan import
|
|
10638
|
+
* @description Re-derive one of the caller's existing roasts from an Artisan `.alog` file: replace its temperature curve, event markers, milestones, chart bounds, and computed metrics, and write an artisan_import_log entry atomically. The roast's identity (coffee, batch name, roast date, weights, and user notes) is preserved. Optional `If-Match: <last_updated>` enables optimistic concurrency (409 on mismatch). Requires an authenticated session, or an owner-bound API key carrying the exact roast:write scope.
|
|
10406
10639
|
*/
|
|
10407
|
-
|
|
10640
|
+
put: {
|
|
10408
10641
|
parameters: {
|
|
10409
10642
|
query?: never;
|
|
10410
|
-
header?:
|
|
10643
|
+
header?: {
|
|
10644
|
+
"if-match"?: string;
|
|
10645
|
+
};
|
|
10411
10646
|
path: {
|
|
10412
10647
|
id: number;
|
|
10413
10648
|
};
|
|
10414
10649
|
cookie?: never;
|
|
10415
10650
|
};
|
|
10416
|
-
requestBody
|
|
10417
|
-
|
|
10651
|
+
requestBody: {
|
|
10652
|
+
content: {
|
|
10653
|
+
"application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
|
|
10654
|
+
};
|
|
10655
|
+
};
|
|
10656
|
+
responses: {
|
|
10657
|
+
/** @description The updated roast profile plus import summary */
|
|
10658
|
+
200: {
|
|
10659
|
+
headers: {
|
|
10660
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10661
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10662
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10663
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10664
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10665
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10666
|
+
[name: string]: unknown;
|
|
10667
|
+
};
|
|
10668
|
+
content: {
|
|
10669
|
+
"application/json": components["schemas"]["RoastImportResponse"];
|
|
10670
|
+
};
|
|
10671
|
+
};
|
|
10672
|
+
/** @description Invalid query parameter */
|
|
10673
|
+
400: {
|
|
10674
|
+
headers: {
|
|
10675
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10676
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10677
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10678
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10679
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10680
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10681
|
+
[name: string]: unknown;
|
|
10682
|
+
};
|
|
10683
|
+
content: {
|
|
10684
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10685
|
+
};
|
|
10686
|
+
};
|
|
10687
|
+
/** @description Authentication required */
|
|
10688
|
+
401: {
|
|
10689
|
+
headers: {
|
|
10690
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10691
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10692
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10693
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10694
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10695
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10696
|
+
[name: string]: unknown;
|
|
10697
|
+
};
|
|
10698
|
+
content: {
|
|
10699
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10700
|
+
};
|
|
10701
|
+
};
|
|
10702
|
+
/** @description Insufficient entitlement (plan or role) */
|
|
10703
|
+
403: {
|
|
10704
|
+
headers: {
|
|
10705
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10706
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10707
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10708
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10709
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10710
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10711
|
+
[name: string]: unknown;
|
|
10712
|
+
};
|
|
10713
|
+
content: {
|
|
10714
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10715
|
+
};
|
|
10716
|
+
};
|
|
10717
|
+
/** @description No such roast profile owned by the caller */
|
|
10718
|
+
404: {
|
|
10719
|
+
headers: {
|
|
10720
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10721
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10722
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10723
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10724
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10725
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10726
|
+
[name: string]: unknown;
|
|
10727
|
+
};
|
|
10728
|
+
content: {
|
|
10729
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10730
|
+
};
|
|
10731
|
+
};
|
|
10732
|
+
/** @description Write conflict: an If-Match precondition failed */
|
|
10733
|
+
409: {
|
|
10734
|
+
headers: {
|
|
10735
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10736
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10737
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10738
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10739
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10740
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10741
|
+
[name: string]: unknown;
|
|
10742
|
+
};
|
|
10743
|
+
content: {
|
|
10744
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10745
|
+
};
|
|
10746
|
+
};
|
|
10747
|
+
/** @description Per-user mutation throttle exceeded; retry after a short wait Customer API keys may also receive an account monthly or machine burst quota rejection. */
|
|
10748
|
+
429: {
|
|
10749
|
+
headers: {
|
|
10750
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10751
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10752
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10753
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10754
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10755
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10756
|
+
"Retry-After": components["headers"]["Retry-After"];
|
|
10757
|
+
"X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
|
|
10758
|
+
[name: string]: unknown;
|
|
10759
|
+
};
|
|
10760
|
+
content: {
|
|
10761
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10762
|
+
};
|
|
10763
|
+
};
|
|
10764
|
+
/** @description Roast writes are not enabled in this environment */
|
|
10765
|
+
503: {
|
|
10766
|
+
headers: {
|
|
10767
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10768
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10769
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10770
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10771
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10772
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10773
|
+
[name: string]: unknown;
|
|
10774
|
+
};
|
|
10775
|
+
content: {
|
|
10776
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10777
|
+
};
|
|
10778
|
+
};
|
|
10779
|
+
};
|
|
10780
|
+
};
|
|
10781
|
+
post?: never;
|
|
10782
|
+
/**
|
|
10783
|
+
* Clear a roast's Artisan import
|
|
10784
|
+
* @description Remove import-derived temperature samples, event markers, and artisan_import_log rows from one of the caller's existing roasts without deleting the roast profile. Import-derived profile metrics are reset to manual/null values. Requires an authenticated session, or an owner-bound API key carrying the exact roast:write scope.
|
|
10785
|
+
*/
|
|
10786
|
+
delete: {
|
|
10787
|
+
parameters: {
|
|
10788
|
+
query?: never;
|
|
10789
|
+
header?: never;
|
|
10790
|
+
path: {
|
|
10791
|
+
id: number;
|
|
10792
|
+
};
|
|
10793
|
+
cookie?: never;
|
|
10794
|
+
};
|
|
10795
|
+
requestBody?: never;
|
|
10796
|
+
responses: {
|
|
10418
10797
|
/** @description The cleared roast id plus deleted row counts */
|
|
10419
10798
|
200: {
|
|
10420
10799
|
headers: {
|
|
@@ -13798,7 +14177,13 @@ interface components {
|
|
|
13798
14177
|
updatedAt: string;
|
|
13799
14178
|
};
|
|
13800
14179
|
ReferenceProfileListResponse: {
|
|
13801
|
-
data: components["schemas"]["ReferenceProfileSummary"]
|
|
14180
|
+
data: (components["schemas"]["ReferenceProfileSummary"] & {
|
|
14181
|
+
/** @description The executed roast the current revision was saved from, or null for an uploaded or planned profile. */
|
|
14182
|
+
sourceRoast: {
|
|
14183
|
+
id: number;
|
|
14184
|
+
revision: string;
|
|
14185
|
+
} | null;
|
|
14186
|
+
})[];
|
|
13802
14187
|
meta: {
|
|
13803
14188
|
/** @enum {string} */
|
|
13804
14189
|
resource: "reference-profiles";
|
|
@@ -14000,110 +14385,248 @@ interface components {
|
|
|
14000
14385
|
fileContent: string;
|
|
14001
14386
|
fileSize?: number;
|
|
14002
14387
|
};
|
|
14388
|
+
RoastSourceErrorResponse: {
|
|
14389
|
+
error: {
|
|
14390
|
+
code: string;
|
|
14391
|
+
message: string;
|
|
14392
|
+
/**
|
|
14393
|
+
* @description Present when code is `roast_artisan_source_unavailable`. `no_artisan_import`: the roast was entered manually or logged live. `artisan_file_not_retained`: it was imported before Artisan files were kept. `artisan_file_too_large`: its file is larger than a reference profile can hold.
|
|
14394
|
+
* @enum {string}
|
|
14395
|
+
*/
|
|
14396
|
+
reason?: "no_artisan_import" | "artisan_file_not_retained" | "artisan_file_too_large";
|
|
14397
|
+
};
|
|
14398
|
+
};
|
|
14003
14399
|
ReferenceProfileFromRoastRequest: {
|
|
14004
14400
|
roastId: number;
|
|
14401
|
+
/** @description The roast's current revision token (its last_updated value). */
|
|
14005
14402
|
roastRevision: string;
|
|
14403
|
+
/**
|
|
14404
|
+
* @description chart_snapshot keeps a comparison-only chart. artisan_source copies the roast's stored Artisan file so a planned profile can be built from it.
|
|
14405
|
+
* @default chart_snapshot
|
|
14406
|
+
* @enum {string}
|
|
14407
|
+
*/
|
|
14408
|
+
basis: "chart_snapshot" | "artisan_source";
|
|
14006
14409
|
title?: string;
|
|
14007
14410
|
notes?: string;
|
|
14008
14411
|
};
|
|
14009
|
-
|
|
14412
|
+
ReferenceProfileRoastCandidatesResponse: {
|
|
14010
14413
|
data: {
|
|
14011
|
-
|
|
14012
|
-
|
|
14013
|
-
|
|
14014
|
-
|
|
14015
|
-
|
|
14016
|
-
|
|
14017
|
-
|
|
14018
|
-
|
|
14019
|
-
|
|
14020
|
-
|
|
14021
|
-
|
|
14022
|
-
|
|
14023
|
-
|
|
14024
|
-
|
|
14025
|
-
series: {
|
|
14026
|
-
id: string;
|
|
14027
|
-
name: string;
|
|
14028
|
-
/** @enum {string} */
|
|
14029
|
-
kind: "bean_temperature" | "environmental_temperature" | "auxiliary";
|
|
14030
|
-
unit: string;
|
|
14031
|
-
points: {
|
|
14032
|
-
timeMilliseconds: number;
|
|
14033
|
-
left: number;
|
|
14034
|
-
right: number;
|
|
14035
|
-
delta: number;
|
|
14036
|
-
}[];
|
|
14037
|
-
}[];
|
|
14038
|
-
milestones: {
|
|
14039
|
-
name: string;
|
|
14040
|
-
leftMilliseconds: number;
|
|
14041
|
-
rightMilliseconds: number;
|
|
14042
|
-
deltaMilliseconds: number;
|
|
14414
|
+
roasts: {
|
|
14415
|
+
roastId: number;
|
|
14416
|
+
roastRevision: string;
|
|
14417
|
+
label: string;
|
|
14418
|
+
batchName: string | null;
|
|
14419
|
+
coffeeName: string | null;
|
|
14420
|
+
roastDate: string | null;
|
|
14421
|
+
reference: {
|
|
14422
|
+
/** Format: uuid */
|
|
14423
|
+
profileId: string;
|
|
14424
|
+
/** Format: uuid */
|
|
14425
|
+
revisionId: string;
|
|
14426
|
+
saved: boolean;
|
|
14427
|
+
};
|
|
14043
14428
|
}[];
|
|
14429
|
+
eligibleCount: number;
|
|
14430
|
+
totalRoastCount: number;
|
|
14431
|
+
ineligibleRoastCount: number;
|
|
14044
14432
|
};
|
|
14045
14433
|
meta: {
|
|
14046
14434
|
/** @enum {string} */
|
|
14047
|
-
resource: "profile-
|
|
14435
|
+
resource: "reference-profile-roast-candidates";
|
|
14048
14436
|
/** @enum {string} */
|
|
14049
|
-
namespace: "/v1/
|
|
14437
|
+
namespace: "/v1/reference-profiles";
|
|
14050
14438
|
/** @enum {string} */
|
|
14051
14439
|
version: "v1";
|
|
14052
14440
|
};
|
|
14053
14441
|
};
|
|
14054
|
-
|
|
14055
|
-
|
|
14056
|
-
/** @enum {string} */
|
|
14057
|
-
type: "reference_revision";
|
|
14058
|
-
/** Format: uuid */
|
|
14059
|
-
revisionId: string;
|
|
14060
|
-
} | {
|
|
14061
|
-
/** @enum {string} */
|
|
14062
|
-
type: "executed_roast";
|
|
14063
|
-
roastId: number;
|
|
14064
|
-
roastRevision: string;
|
|
14065
|
-
};
|
|
14066
|
-
right: {
|
|
14067
|
-
/** @enum {string} */
|
|
14068
|
-
type: "reference_revision";
|
|
14442
|
+
ReferenceProfileRoastGenerationPreviewResponse: {
|
|
14443
|
+
data: {
|
|
14069
14444
|
/** Format: uuid */
|
|
14070
|
-
|
|
14071
|
-
|
|
14072
|
-
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
|
|
14076
|
-
|
|
14077
|
-
|
|
14078
|
-
|
|
14079
|
-
|
|
14080
|
-
|
|
14081
|
-
|
|
14082
|
-
|
|
14083
|
-
|
|
14084
|
-
|
|
14085
|
-
|
|
14086
|
-
|
|
14087
|
-
|
|
14088
|
-
|
|
14089
|
-
|
|
14090
|
-
|
|
14091
|
-
|
|
14092
|
-
|
|
14093
|
-
|
|
14094
|
-
|
|
14095
|
-
|
|
14096
|
-
|
|
14097
|
-
|
|
14098
|
-
|
|
14099
|
-
|
|
14100
|
-
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
14104
|
-
|
|
14105
|
-
|
|
14106
|
-
|
|
14445
|
+
parentRevisionId: string;
|
|
14446
|
+
title: string;
|
|
14447
|
+
userGoal: string | null;
|
|
14448
|
+
modelRecommendation: string | null;
|
|
14449
|
+
userEdits: string | null;
|
|
14450
|
+
changes: {
|
|
14451
|
+
temperatureAdjustments: {
|
|
14452
|
+
/** @enum {string} */
|
|
14453
|
+
kind: "bean_temperature" | "environmental_temperature";
|
|
14454
|
+
startMilliseconds: number;
|
|
14455
|
+
endMilliseconds: number;
|
|
14456
|
+
delta: number;
|
|
14457
|
+
}[];
|
|
14458
|
+
};
|
|
14459
|
+
measuredFacts: {
|
|
14460
|
+
/** @enum {string} */
|
|
14461
|
+
temperatureUnit: "F" | "C";
|
|
14462
|
+
adjustments: {
|
|
14463
|
+
/** @enum {string} */
|
|
14464
|
+
kind: "bean_temperature" | "environmental_temperature";
|
|
14465
|
+
startMilliseconds: number;
|
|
14466
|
+
endMilliseconds: number;
|
|
14467
|
+
requestedDelta: number;
|
|
14468
|
+
/** @enum {string} */
|
|
14469
|
+
unit: "F" | "C";
|
|
14470
|
+
changedSampleCount: number;
|
|
14471
|
+
unchangedZeroSampleCount: number;
|
|
14472
|
+
parent: {
|
|
14473
|
+
first: {
|
|
14474
|
+
timeMilliseconds: number;
|
|
14475
|
+
value: number;
|
|
14476
|
+
} | null;
|
|
14477
|
+
last: {
|
|
14478
|
+
timeMilliseconds: number;
|
|
14479
|
+
value: number;
|
|
14480
|
+
} | null;
|
|
14481
|
+
minimum: number | null;
|
|
14482
|
+
maximum: number | null;
|
|
14483
|
+
};
|
|
14484
|
+
planned: {
|
|
14485
|
+
first: {
|
|
14486
|
+
timeMilliseconds: number;
|
|
14487
|
+
value: number;
|
|
14488
|
+
} | null;
|
|
14489
|
+
last: {
|
|
14490
|
+
timeMilliseconds: number;
|
|
14491
|
+
value: number;
|
|
14492
|
+
} | null;
|
|
14493
|
+
minimum: number | null;
|
|
14494
|
+
maximum: number | null;
|
|
14495
|
+
};
|
|
14496
|
+
}[];
|
|
14497
|
+
/** @enum {boolean} */
|
|
14498
|
+
eventsUnchanged: true;
|
|
14499
|
+
};
|
|
14500
|
+
chart: components["schemas"]["ReferenceProfileChart"];
|
|
14501
|
+
/** @enum {boolean} */
|
|
14502
|
+
exportEligible: true;
|
|
14503
|
+
/**
|
|
14504
|
+
* Format: uuid
|
|
14505
|
+
* @description The reference this roast's Artisan file is, or will be, saved under.
|
|
14506
|
+
*/
|
|
14507
|
+
parentProfileId: string;
|
|
14508
|
+
/** @description Whether that reference already exists. A preview never creates it. */
|
|
14509
|
+
parentSaved: boolean;
|
|
14510
|
+
sourceRoast: {
|
|
14511
|
+
id: number;
|
|
14512
|
+
revision: string;
|
|
14513
|
+
label: string;
|
|
14514
|
+
batchName: string | null;
|
|
14515
|
+
coffeeName: string | null;
|
|
14516
|
+
roastDate: string | null;
|
|
14517
|
+
};
|
|
14518
|
+
};
|
|
14519
|
+
meta: {
|
|
14520
|
+
/** @enum {string} */
|
|
14521
|
+
resource: "reference-profile-previews";
|
|
14522
|
+
/** @enum {string} */
|
|
14523
|
+
namespace: "/v1/reference-profiles";
|
|
14524
|
+
/** @enum {string} */
|
|
14525
|
+
version: "v1";
|
|
14526
|
+
};
|
|
14527
|
+
};
|
|
14528
|
+
ReferenceProfileRoastGenerationRequest: components["schemas"]["ReferenceProfileGenerationRequest"] & {
|
|
14529
|
+
roastId: number;
|
|
14530
|
+
roastRevision: string;
|
|
14531
|
+
};
|
|
14532
|
+
ProfileComparisonResponse: {
|
|
14533
|
+
data: {
|
|
14534
|
+
/** @enum {string} */
|
|
14535
|
+
alignment: "charge";
|
|
14536
|
+
/** @enum {string} */
|
|
14537
|
+
targetUnit: "F" | "C";
|
|
14538
|
+
left: {
|
|
14539
|
+
type: string;
|
|
14540
|
+
id: string;
|
|
14541
|
+
revision: string;
|
|
14542
|
+
};
|
|
14543
|
+
right: {
|
|
14544
|
+
type: string;
|
|
14545
|
+
id: string;
|
|
14546
|
+
revision: string;
|
|
14547
|
+
};
|
|
14548
|
+
series: {
|
|
14549
|
+
id: string;
|
|
14550
|
+
name: string;
|
|
14551
|
+
/** @enum {string} */
|
|
14552
|
+
kind: "bean_temperature" | "environmental_temperature" | "auxiliary";
|
|
14553
|
+
unit: string;
|
|
14554
|
+
points: {
|
|
14555
|
+
timeMilliseconds: number;
|
|
14556
|
+
left: number;
|
|
14557
|
+
right: number;
|
|
14558
|
+
delta: number;
|
|
14559
|
+
}[];
|
|
14560
|
+
}[];
|
|
14561
|
+
milestones: {
|
|
14562
|
+
name: string;
|
|
14563
|
+
leftMilliseconds: number;
|
|
14564
|
+
rightMilliseconds: number;
|
|
14565
|
+
deltaMilliseconds: number;
|
|
14566
|
+
}[];
|
|
14567
|
+
};
|
|
14568
|
+
meta: {
|
|
14569
|
+
/** @enum {string} */
|
|
14570
|
+
resource: "profile-comparisons";
|
|
14571
|
+
/** @enum {string} */
|
|
14572
|
+
namespace: "/v1/profile-comparisons";
|
|
14573
|
+
/** @enum {string} */
|
|
14574
|
+
version: "v1";
|
|
14575
|
+
};
|
|
14576
|
+
};
|
|
14577
|
+
ProfileComparisonRequest: {
|
|
14578
|
+
left: {
|
|
14579
|
+
/** @enum {string} */
|
|
14580
|
+
type: "reference_revision";
|
|
14581
|
+
/** Format: uuid */
|
|
14582
|
+
revisionId: string;
|
|
14583
|
+
} | {
|
|
14584
|
+
/** @enum {string} */
|
|
14585
|
+
type: "executed_roast";
|
|
14586
|
+
roastId: number;
|
|
14587
|
+
roastRevision: string;
|
|
14588
|
+
};
|
|
14589
|
+
right: {
|
|
14590
|
+
/** @enum {string} */
|
|
14591
|
+
type: "reference_revision";
|
|
14592
|
+
/** Format: uuid */
|
|
14593
|
+
revisionId: string;
|
|
14594
|
+
} | {
|
|
14595
|
+
/** @enum {string} */
|
|
14596
|
+
type: "executed_roast";
|
|
14597
|
+
roastId: number;
|
|
14598
|
+
roastRevision: string;
|
|
14599
|
+
};
|
|
14600
|
+
/**
|
|
14601
|
+
* @default charge
|
|
14602
|
+
* @enum {string}
|
|
14603
|
+
*/
|
|
14604
|
+
alignment: "charge";
|
|
14605
|
+
/** @enum {string} */
|
|
14606
|
+
targetUnit: "F" | "C";
|
|
14607
|
+
/** @default 400 */
|
|
14608
|
+
targetPoints: number;
|
|
14609
|
+
};
|
|
14610
|
+
AccountDeletionOperation: {
|
|
14611
|
+
/** Format: uuid */
|
|
14612
|
+
operationId: string;
|
|
14613
|
+
/** @enum {string} */
|
|
14614
|
+
status: "accepted" | "provider_deleting" | "local_cleaning" | "auth_deleting" | "post_auth_cleanup" | "retryable" | "conflict" | "completed";
|
|
14615
|
+
};
|
|
14616
|
+
BillingCheckoutSession: {
|
|
14617
|
+
/** Format: uuid */
|
|
14618
|
+
admissionId: string;
|
|
14619
|
+
/** @enum {string} */
|
|
14620
|
+
status: "accepted" | "attempting" | "published" | "settled" | "closed" | "conflict";
|
|
14621
|
+
clientSecret: string | null;
|
|
14622
|
+
};
|
|
14623
|
+
MarketBriefDraftState: {
|
|
14624
|
+
/** Format: uuid */
|
|
14625
|
+
draftId: string;
|
|
14626
|
+
edition: number;
|
|
14627
|
+
productionCommit: string;
|
|
14628
|
+
/** @enum {string} */
|
|
14629
|
+
status: "creating" | "uncertain" | "created" | "conflict";
|
|
14107
14630
|
};
|
|
14108
14631
|
MarketBriefDraftResponse: {
|
|
14109
14632
|
data: components["schemas"]["MarketBriefDraftState"];
|
|
@@ -16555,6 +17078,8 @@ interface components {
|
|
|
16555
17078
|
}[];
|
|
16556
17079
|
};
|
|
16557
17080
|
change_set_summary: string;
|
|
17081
|
+
source_roast_id?: number | string;
|
|
17082
|
+
source_roast_revision?: string;
|
|
16558
17083
|
};
|
|
16559
17084
|
} | {
|
|
16560
17085
|
/** @description Stable operation id. Repeating it with the same action payload replays the stored result; changing the payload returns 409. */
|
|
@@ -17393,6 +17918,61 @@ interface components {
|
|
|
17393
17918
|
/** @description Reported source size in bytes for import-log metadata; defaults to the content length. */
|
|
17394
17919
|
fileSize?: number;
|
|
17395
17920
|
};
|
|
17921
|
+
RoastImportFromReferenceResponse: {
|
|
17922
|
+
data: {
|
|
17923
|
+
roast: components["schemas"]["RoastDetailResource"];
|
|
17924
|
+
import: components["schemas"]["ArtisanImportSummary"];
|
|
17925
|
+
reference: {
|
|
17926
|
+
/** Format: uuid */
|
|
17927
|
+
profileId: string;
|
|
17928
|
+
/** Format: uuid */
|
|
17929
|
+
revisionId: string;
|
|
17930
|
+
/** @description Whether the reference now lists the new roast as a linked roast. */
|
|
17931
|
+
linked: boolean;
|
|
17932
|
+
};
|
|
17933
|
+
};
|
|
17934
|
+
meta: {
|
|
17935
|
+
/** @enum {string} */
|
|
17936
|
+
resource: "roasts";
|
|
17937
|
+
/** @enum {string} */
|
|
17938
|
+
namespace: "/v1/roasts";
|
|
17939
|
+
/** @enum {string} */
|
|
17940
|
+
version: "v1";
|
|
17941
|
+
auth: {
|
|
17942
|
+
/** @enum {string} */
|
|
17943
|
+
kind: "session" | "api-key";
|
|
17944
|
+
/** @enum {string|null} */
|
|
17945
|
+
role: "admin" | "member" | "viewer" | null;
|
|
17946
|
+
/** @enum {string|null} */
|
|
17947
|
+
apiPlan: "viewer" | "member" | "enterprise" | null;
|
|
17948
|
+
};
|
|
17949
|
+
};
|
|
17950
|
+
};
|
|
17951
|
+
RoastImportFromReferenceRequest: {
|
|
17952
|
+
/**
|
|
17953
|
+
* Format: uuid
|
|
17954
|
+
* @description A saved Artisan reference profile owned by the caller.
|
|
17955
|
+
*/
|
|
17956
|
+
referenceProfileId: string;
|
|
17957
|
+
/**
|
|
17958
|
+
* Format: uuid
|
|
17959
|
+
* @description That reference's current revision.
|
|
17960
|
+
*/
|
|
17961
|
+
referenceRevisionId: string;
|
|
17962
|
+
/** @description green_coffee_inv.id owned by the caller to roast against. */
|
|
17963
|
+
coffeeId: number;
|
|
17964
|
+
/** @description Batch name; defaults to '<coffee> - <roast date>'. */
|
|
17965
|
+
batchName?: string;
|
|
17966
|
+
/** @description Roast date (YYYY-MM-DD); defaults to the file's date. */
|
|
17967
|
+
roastDate?: string;
|
|
17968
|
+
/** @description Input weight in oz; defaults to the file's weight if present. */
|
|
17969
|
+
ozIn?: number;
|
|
17970
|
+
/** @description Output weight in oz; defaults to the file's weight if present. */
|
|
17971
|
+
ozOut?: number;
|
|
17972
|
+
/** @description Roast notes; overrides the generated import summary note. */
|
|
17973
|
+
roastNotes?: string;
|
|
17974
|
+
roastTargets?: string;
|
|
17975
|
+
};
|
|
17396
17976
|
RoastArtisanImportReplaceRequest: {
|
|
17397
17977
|
/** @description Source file name. Must end in .alog, .alog.json, or .json (Artisan export). */
|
|
17398
17978
|
fileName: string;
|
|
@@ -18302,6 +18882,10 @@ type RoastChartSeries = components["schemas"]["RoastChartSeries"];
|
|
|
18302
18882
|
type RoastChartEvent = components["schemas"]["RoastChartEvent"];
|
|
18303
18883
|
type ReferenceProfileImportRequest = NonNullable<paths["/v1/reference-profiles/imports"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18304
18884
|
type ReferenceProfileFromRoastRequest = NonNullable<paths["/v1/reference-profiles/from-roast"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18885
|
+
/** Request body for {@link ParchmentClient.referenceProfiles.previewFromRoast}. */
|
|
18886
|
+
type ReferenceProfileRoastGenerationRequest = NonNullable<paths["/v1/reference-profiles/from-roast/preview"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18887
|
+
/** Query parameters for {@link ParchmentClient.referenceProfiles.roastCandidates}. */
|
|
18888
|
+
type ReferenceProfileRoastCandidatesQuery = NonNullable<paths["/v1/reference-profiles/from-roast/candidates"]["get"]["parameters"]["query"]>;
|
|
18305
18889
|
type ReferenceProfileUpdateRequest = NonNullable<paths["/v1/reference-profiles/{id}"]["patch"]["requestBody"]>["content"]["application/json"];
|
|
18306
18890
|
type ReferenceProfileGenerationRequest = NonNullable<paths["/v1/reference-profiles/{id}/revisions/{revisionId}/preview"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18307
18891
|
type ProfileComparisonRequest = NonNullable<paths["/v1/profile-comparisons"]["post"]["requestBody"]>["content"]["application/json"];
|
|
@@ -18317,6 +18901,8 @@ type RoastUpdateRequest = NonNullable<paths["/v1/roasts/{id}"]["patch"]["request
|
|
|
18317
18901
|
type RoastLiveCurveRequest = NonNullable<paths["/v1/roasts/{id}/live-curve"]["put"]["requestBody"]>["content"]["application/json"];
|
|
18318
18902
|
/** Request body for {@link ParchmentClient.roasts.import}. */
|
|
18319
18903
|
type RoastImportRequest = NonNullable<paths["/v1/roasts/imports"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18904
|
+
/** Request body for {@link ParchmentClient.roasts.importFromReference}. */
|
|
18905
|
+
type RoastImportFromReferenceRequest = NonNullable<paths["/v1/roasts/imports/from-reference"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18320
18906
|
/** Request body for {@link ParchmentClient.roasts.replaceArtisanImport}. */
|
|
18321
18907
|
type RoastArtisanImportReplaceRequest = NonNullable<paths["/v1/roasts/{id}/artisan-import"]["put"]["requestBody"]>["content"]["application/json"];
|
|
18322
18908
|
/** Query parameters for {@link ParchmentClient.sales.list}. */
|
|
@@ -23921,7 +24507,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
23921
24507
|
[name: string]: unknown;
|
|
23922
24508
|
};
|
|
23923
24509
|
content: {
|
|
23924
|
-
"application/json": components["schemas"]["
|
|
24510
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
23925
24511
|
};
|
|
23926
24512
|
};
|
|
23927
24513
|
401: {
|
|
@@ -24090,6 +24676,8 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
24090
24676
|
}[];
|
|
24091
24677
|
};
|
|
24092
24678
|
change_set_summary: string;
|
|
24679
|
+
source_roast_id?: number | string;
|
|
24680
|
+
source_roast_revision?: string;
|
|
24093
24681
|
};
|
|
24094
24682
|
} | {
|
|
24095
24683
|
executionId: string;
|
|
@@ -29331,31 +29919,32 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29331
29919
|
} | undefined;
|
|
29332
29920
|
}, `${string}/${string}`>>;
|
|
29333
29921
|
/**
|
|
29334
|
-
*
|
|
29335
|
-
*
|
|
29336
|
-
*
|
|
29337
|
-
*
|
|
29922
|
+
* Create a roast profile from the Artisan file stored with one of the
|
|
29923
|
+
* caller's uploaded reference profiles. Only uploaded Artisan references
|
|
29924
|
+
* qualify: planned (generated) profiles are never recorded as roasts,
|
|
29925
|
+
* and a reference saved from an existing roast is refused. Requires
|
|
29926
|
+
* Mallard Studio plus a session, or an owner-bound API key carrying the
|
|
29927
|
+
* exact `roast:read` and `roast:write` scopes. The optional
|
|
29928
|
+
* `idempotencyKey` is payload-bound.
|
|
29338
29929
|
*/
|
|
29339
|
-
|
|
29340
|
-
|
|
29930
|
+
importFromReference: (body: RoastImportFromReferenceRequest, options?: {
|
|
29931
|
+
idempotencyKey?: string;
|
|
29341
29932
|
}) => Promise<openapi_fetch.FetchResponse<{
|
|
29342
29933
|
parameters: {
|
|
29343
29934
|
query?: never;
|
|
29344
29935
|
header?: {
|
|
29345
|
-
"
|
|
29346
|
-
};
|
|
29347
|
-
path: {
|
|
29348
|
-
id: number;
|
|
29936
|
+
"idempotency-key"?: string;
|
|
29349
29937
|
};
|
|
29938
|
+
path?: never;
|
|
29350
29939
|
cookie?: never;
|
|
29351
29940
|
};
|
|
29352
29941
|
requestBody: {
|
|
29353
29942
|
content: {
|
|
29354
|
-
"application/json": components["schemas"]["
|
|
29943
|
+
"application/json": components["schemas"]["RoastImportFromReferenceRequest"];
|
|
29355
29944
|
};
|
|
29356
29945
|
};
|
|
29357
29946
|
responses: {
|
|
29358
|
-
|
|
29947
|
+
201: {
|
|
29359
29948
|
headers: {
|
|
29360
29949
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
29361
29950
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -29366,7 +29955,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29366
29955
|
[name: string]: unknown;
|
|
29367
29956
|
};
|
|
29368
29957
|
content: {
|
|
29369
|
-
"application/json": components["schemas"]["
|
|
29958
|
+
"application/json": components["schemas"]["RoastImportFromReferenceResponse"];
|
|
29370
29959
|
};
|
|
29371
29960
|
};
|
|
29372
29961
|
400: {
|
|
@@ -29471,21 +30060,179 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29471
30060
|
};
|
|
29472
30061
|
};
|
|
29473
30062
|
}, {
|
|
29474
|
-
params: {
|
|
29475
|
-
path: {
|
|
29476
|
-
id: number;
|
|
29477
|
-
};
|
|
29478
|
-
header: {
|
|
29479
|
-
"if-match": string;
|
|
29480
|
-
} | undefined;
|
|
29481
|
-
};
|
|
29482
30063
|
body: {
|
|
29483
|
-
|
|
29484
|
-
|
|
29485
|
-
|
|
30064
|
+
referenceProfileId: string;
|
|
30065
|
+
referenceRevisionId: string;
|
|
30066
|
+
coffeeId: number;
|
|
30067
|
+
batchName?: string;
|
|
30068
|
+
roastDate?: string;
|
|
30069
|
+
ozIn?: number;
|
|
30070
|
+
ozOut?: number;
|
|
30071
|
+
roastNotes?: string;
|
|
30072
|
+
roastTargets?: string;
|
|
29486
30073
|
};
|
|
29487
|
-
|
|
29488
|
-
|
|
30074
|
+
params: {
|
|
30075
|
+
header: {
|
|
30076
|
+
"idempotency-key": string;
|
|
30077
|
+
};
|
|
30078
|
+
} | undefined;
|
|
30079
|
+
}, `${string}/${string}`>>;
|
|
30080
|
+
/**
|
|
30081
|
+
* Replace the Artisan import data on one of the caller's existing roasts,
|
|
30082
|
+
* re-deriving its curve, events, and computed metrics while preserving the
|
|
30083
|
+
* roast's identity. Pass `ifMatch` (the roast's `last_updated`) to enable
|
|
30084
|
+
* optimistic concurrency (409 on mismatch).
|
|
30085
|
+
*/
|
|
30086
|
+
replaceArtisanImport: (id: number, body: RoastArtisanImportReplaceRequest, options?: {
|
|
30087
|
+
ifMatch?: string;
|
|
30088
|
+
}) => Promise<openapi_fetch.FetchResponse<{
|
|
30089
|
+
parameters: {
|
|
30090
|
+
query?: never;
|
|
30091
|
+
header?: {
|
|
30092
|
+
"if-match"?: string;
|
|
30093
|
+
};
|
|
30094
|
+
path: {
|
|
30095
|
+
id: number;
|
|
30096
|
+
};
|
|
30097
|
+
cookie?: never;
|
|
30098
|
+
};
|
|
30099
|
+
requestBody: {
|
|
30100
|
+
content: {
|
|
30101
|
+
"application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
|
|
30102
|
+
};
|
|
30103
|
+
};
|
|
30104
|
+
responses: {
|
|
30105
|
+
200: {
|
|
30106
|
+
headers: {
|
|
30107
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30108
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30109
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30110
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30111
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30112
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30113
|
+
[name: string]: unknown;
|
|
30114
|
+
};
|
|
30115
|
+
content: {
|
|
30116
|
+
"application/json": components["schemas"]["RoastImportResponse"];
|
|
30117
|
+
};
|
|
30118
|
+
};
|
|
30119
|
+
400: {
|
|
30120
|
+
headers: {
|
|
30121
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30122
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30123
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30124
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30125
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30126
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30127
|
+
[name: string]: unknown;
|
|
30128
|
+
};
|
|
30129
|
+
content: {
|
|
30130
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30131
|
+
};
|
|
30132
|
+
};
|
|
30133
|
+
401: {
|
|
30134
|
+
headers: {
|
|
30135
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30136
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30137
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30138
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30139
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30140
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30141
|
+
[name: string]: unknown;
|
|
30142
|
+
};
|
|
30143
|
+
content: {
|
|
30144
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30145
|
+
};
|
|
30146
|
+
};
|
|
30147
|
+
403: {
|
|
30148
|
+
headers: {
|
|
30149
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30150
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30151
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30152
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30153
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30154
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30155
|
+
[name: string]: unknown;
|
|
30156
|
+
};
|
|
30157
|
+
content: {
|
|
30158
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30159
|
+
};
|
|
30160
|
+
};
|
|
30161
|
+
404: {
|
|
30162
|
+
headers: {
|
|
30163
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30164
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30165
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30166
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30167
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30168
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30169
|
+
[name: string]: unknown;
|
|
30170
|
+
};
|
|
30171
|
+
content: {
|
|
30172
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30173
|
+
};
|
|
30174
|
+
};
|
|
30175
|
+
409: {
|
|
30176
|
+
headers: {
|
|
30177
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30178
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30179
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30180
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30181
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30182
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30183
|
+
[name: string]: unknown;
|
|
30184
|
+
};
|
|
30185
|
+
content: {
|
|
30186
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30187
|
+
};
|
|
30188
|
+
};
|
|
30189
|
+
429: {
|
|
30190
|
+
headers: {
|
|
30191
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30192
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30193
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30194
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30195
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30196
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30197
|
+
"Retry-After": components["headers"]["Retry-After"];
|
|
30198
|
+
"X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
|
|
30199
|
+
[name: string]: unknown;
|
|
30200
|
+
};
|
|
30201
|
+
content: {
|
|
30202
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30203
|
+
};
|
|
30204
|
+
};
|
|
30205
|
+
503: {
|
|
30206
|
+
headers: {
|
|
30207
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30208
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30209
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30210
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30211
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30212
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30213
|
+
[name: string]: unknown;
|
|
30214
|
+
};
|
|
30215
|
+
content: {
|
|
30216
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30217
|
+
};
|
|
30218
|
+
};
|
|
30219
|
+
};
|
|
30220
|
+
}, {
|
|
30221
|
+
params: {
|
|
30222
|
+
path: {
|
|
30223
|
+
id: number;
|
|
30224
|
+
};
|
|
30225
|
+
header: {
|
|
30226
|
+
"if-match": string;
|
|
30227
|
+
} | undefined;
|
|
30228
|
+
};
|
|
30229
|
+
body: {
|
|
30230
|
+
fileName: string;
|
|
30231
|
+
fileContent: string;
|
|
30232
|
+
fileSize?: number;
|
|
30233
|
+
};
|
|
30234
|
+
}, `${string}/${string}`>>;
|
|
30235
|
+
/**
|
|
29489
30236
|
* Clear import-derived curve, events, metrics, and provenance data from
|
|
29490
30237
|
* one of the caller's existing roasts without deleting the roast profile.
|
|
29491
30238
|
*/
|
|
@@ -29850,7 +30597,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29850
30597
|
409: {
|
|
29851
30598
|
headers: {
|
|
29852
30599
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
29853
|
-
"X-RateLimit-Remaining":
|
|
30600
|
+
"X-RateLimit-Remaining":
|
|
30601
|
+
/** Available exact 30-day comparisons, with no empty-origin search. */
|
|
30602
|
+
components["headers"]["X-RateLimit-Remaining"];
|
|
29854
30603
|
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
29855
30604
|
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
29856
30605
|
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
@@ -29880,7 +30629,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29880
30629
|
id: string;
|
|
29881
30630
|
revisionId: string;
|
|
29882
30631
|
};
|
|
29883
|
-
cookie
|
|
30632
|
+
cookie? /** Metadata-trend index (process/disclosure/Purveyor Score over time). */: never;
|
|
29884
30633
|
};
|
|
29885
30634
|
requestBody: {
|
|
29886
30635
|
content: {
|
|
@@ -30350,6 +31099,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30350
31099
|
};
|
|
30351
31100
|
};
|
|
30352
31101
|
}, `${string}/${string}`>>;
|
|
31102
|
+
/**
|
|
31103
|
+
* Save an executed roast as a reference. `basis: "artisan_source"`
|
|
31104
|
+
* copies the roast's stored Artisan file so a planned profile can be
|
|
31105
|
+
* built from it, and returns the reference already saved from that
|
|
31106
|
+
* roast's file instead of a duplicate; the default
|
|
31107
|
+
* `"chart_snapshot"` keeps a comparison-only chart.
|
|
31108
|
+
*/
|
|
30353
31109
|
fromRoast: (body: ReferenceProfileFromRoastRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
|
|
30354
31110
|
parameters: {
|
|
30355
31111
|
query?: never;
|
|
@@ -30365,6 +31121,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30365
31121
|
};
|
|
30366
31122
|
};
|
|
30367
31123
|
responses: {
|
|
31124
|
+
200: {
|
|
31125
|
+
headers: {
|
|
31126
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31127
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31128
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31129
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31130
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31131
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31132
|
+
[name: string]: unknown;
|
|
31133
|
+
};
|
|
31134
|
+
content: {
|
|
31135
|
+
"application/json": components["schemas"]["ReferenceProfileResponse"];
|
|
31136
|
+
};
|
|
31137
|
+
};
|
|
30368
31138
|
201: {
|
|
30369
31139
|
headers: {
|
|
30370
31140
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -30390,7 +31160,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30390
31160
|
[name: string]: unknown;
|
|
30391
31161
|
};
|
|
30392
31162
|
content: {
|
|
30393
|
-
"application/json": components["schemas"]["
|
|
31163
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
30394
31164
|
};
|
|
30395
31165
|
};
|
|
30396
31166
|
401: {
|
|
@@ -30455,6 +31225,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30455
31225
|
body: {
|
|
30456
31226
|
roastId: number;
|
|
30457
31227
|
roastRevision: string;
|
|
31228
|
+
basis: "chart_snapshot" | "artisan_source";
|
|
30458
31229
|
title?: string;
|
|
30459
31230
|
notes?: string;
|
|
30460
31231
|
};
|
|
@@ -30464,6 +31235,195 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30464
31235
|
};
|
|
30465
31236
|
};
|
|
30466
31237
|
}, `${string}/${string}`>>;
|
|
31238
|
+
/**
|
|
31239
|
+
* List the caller's executed roasts whose Artisan file is on record and
|
|
31240
|
+
* can therefore be the base for a planned profile, newest first.
|
|
31241
|
+
*/
|
|
31242
|
+
roastCandidates: (query?: ReferenceProfileRoastCandidatesQuery) => Promise<openapi_fetch.FetchResponse<{
|
|
31243
|
+
parameters: {
|
|
31244
|
+
query?: {
|
|
31245
|
+
limit?: number;
|
|
31246
|
+
};
|
|
31247
|
+
header?: never;
|
|
31248
|
+
path?: never;
|
|
31249
|
+
cookie?: never;
|
|
31250
|
+
};
|
|
31251
|
+
requestBody?: never;
|
|
31252
|
+
responses: {
|
|
31253
|
+
200: {
|
|
31254
|
+
headers: {
|
|
31255
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31256
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31257
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31258
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31259
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31260
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31261
|
+
[name: string]: unknown;
|
|
31262
|
+
};
|
|
31263
|
+
content: {
|
|
31264
|
+
"application/json": components["schemas"]["ReferenceProfileRoastCandidatesResponse"];
|
|
31265
|
+
};
|
|
31266
|
+
};
|
|
31267
|
+
401: {
|
|
31268
|
+
headers: {
|
|
31269
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31270
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31271
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31272
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31273
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31274
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31275
|
+
[name: string]: unknown;
|
|
31276
|
+
};
|
|
31277
|
+
content: {
|
|
31278
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31279
|
+
};
|
|
31280
|
+
};
|
|
31281
|
+
403: {
|
|
31282
|
+
headers: {
|
|
31283
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31284
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31285
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31286
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31287
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31288
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31289
|
+
[name: string]: unknown;
|
|
31290
|
+
};
|
|
31291
|
+
content: {
|
|
31292
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31293
|
+
};
|
|
31294
|
+
};
|
|
31295
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
31296
|
+
};
|
|
31297
|
+
}, {
|
|
31298
|
+
params: {
|
|
31299
|
+
query: {
|
|
31300
|
+
limit?: number;
|
|
31301
|
+
} | undefined;
|
|
31302
|
+
};
|
|
31303
|
+
}, `${string}/${string}`>>;
|
|
31304
|
+
/**
|
|
31305
|
+
* Preview a planned profile built directly on an executed roast's stored
|
|
31306
|
+
* Artisan file. Read-only: nothing is saved and the roast is unchanged.
|
|
31307
|
+
*/
|
|
31308
|
+
previewFromRoast: (body: ReferenceProfileRoastGenerationRequest) => Promise<openapi_fetch.FetchResponse<{
|
|
31309
|
+
parameters: {
|
|
31310
|
+
query?: never;
|
|
31311
|
+
header?: never;
|
|
31312
|
+
path?: never;
|
|
31313
|
+
cookie?: never;
|
|
31314
|
+
};
|
|
31315
|
+
requestBody: {
|
|
31316
|
+
content: {
|
|
31317
|
+
"application/json": components["schemas"]["ReferenceProfileRoastGenerationRequest"];
|
|
31318
|
+
};
|
|
31319
|
+
};
|
|
31320
|
+
responses: {
|
|
31321
|
+
200: {
|
|
31322
|
+
headers: {
|
|
31323
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31324
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31325
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31326
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31327
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31328
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31329
|
+
[name: string]: unknown;
|
|
31330
|
+
};
|
|
31331
|
+
content: {
|
|
31332
|
+
"application/json": components["schemas"]["ReferenceProfileRoastGenerationPreviewResponse"];
|
|
31333
|
+
};
|
|
31334
|
+
};
|
|
31335
|
+
400: {
|
|
31336
|
+
headers: {
|
|
31337
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31338
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31339
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31340
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31341
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31342
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31343
|
+
[name: string]: unknown;
|
|
31344
|
+
};
|
|
31345
|
+
content: {
|
|
31346
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
31347
|
+
};
|
|
31348
|
+
};
|
|
31349
|
+
401: {
|
|
31350
|
+
headers: {
|
|
31351
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31352
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31353
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31354
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31355
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31356
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31357
|
+
[name: string]: unknown;
|
|
31358
|
+
};
|
|
31359
|
+
content: {
|
|
31360
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31361
|
+
};
|
|
31362
|
+
};
|
|
31363
|
+
403: {
|
|
31364
|
+
headers: {
|
|
31365
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31366
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31367
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31368
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31369
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31370
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31371
|
+
[name: string]: unknown;
|
|
31372
|
+
};
|
|
31373
|
+
content: {
|
|
31374
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31375
|
+
};
|
|
31376
|
+
};
|
|
31377
|
+
404: {
|
|
31378
|
+
headers: {
|
|
31379
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31380
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31381
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31382
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31383
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31384
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31385
|
+
[name: string]: unknown;
|
|
31386
|
+
};
|
|
31387
|
+
content: {
|
|
31388
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31389
|
+
};
|
|
31390
|
+
};
|
|
31391
|
+
409: {
|
|
31392
|
+
headers: {
|
|
31393
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31394
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31395
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31396
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31397
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31398
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31399
|
+
[name: string]: unknown;
|
|
31400
|
+
};
|
|
31401
|
+
content: {
|
|
31402
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31403
|
+
};
|
|
31404
|
+
};
|
|
31405
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
31406
|
+
};
|
|
31407
|
+
}, {
|
|
31408
|
+
body: {
|
|
31409
|
+
title: string;
|
|
31410
|
+
notes?: string;
|
|
31411
|
+
userGoal?: string;
|
|
31412
|
+
modelRecommendation?: string;
|
|
31413
|
+
userEdits?: string;
|
|
31414
|
+
changes: {
|
|
31415
|
+
temperatureAdjustments: {
|
|
31416
|
+
kind: "bean_temperature" | "environmental_temperature";
|
|
31417
|
+
startMilliseconds: number;
|
|
31418
|
+
endMilliseconds: number;
|
|
31419
|
+
delta: number;
|
|
31420
|
+
}[];
|
|
31421
|
+
};
|
|
31422
|
+
} & {
|
|
31423
|
+
roastId: number;
|
|
31424
|
+
roastRevision: string;
|
|
31425
|
+
};
|
|
31426
|
+
}, `${string}/${string}`>>;
|
|
30467
31427
|
update: (id: string, body: ReferenceProfileUpdateRequest) => Promise<openapi_fetch.FetchResponse<{
|
|
30468
31428
|
parameters: {
|
|
30469
31429
|
query?: never;
|
|
@@ -30629,9 +31589,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30629
31589
|
[name: string]: unknown;
|
|
30630
31590
|
};
|
|
30631
31591
|
content: {
|
|
30632
|
-
"application/json":
|
|
30633
|
-
/** Request body for {@link ParchmentClient.apiKeys.create}. */
|
|
30634
|
-
components["schemas"]["ErrorResponse"];
|
|
31592
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30635
31593
|
};
|
|
30636
31594
|
};
|
|
30637
31595
|
403: {
|
|
@@ -31835,7 +32793,7 @@ type ParchmentClientMethod = MethodPaths<Omit<ParchmentClient, "raw">>;
|
|
|
31835
32793
|
* SDK (such as the CLI) can import this list to prove they cover everything
|
|
31836
32794
|
* the web agent can do.
|
|
31837
32795
|
*/
|
|
31838
|
-
declare const CHAT_AGENT_CAPABILITIES: readonly ["me", "catalog.list", "catalog.facets", "catalog.rank", "catalog.suppliers", "catalog.similar", "catalog.compare", "catalog.grades", "catalog.priceHistory", "inventory.list", "roasts.list", "roasts.get", "roasts.chartData", "referenceProfiles.list", "referenceProfiles.get", "referenceProfiles.chart", "referenceProfiles.compare", "referenceProfiles.preview", "tasting.get", "priceIndex.list", "priceIndex.stats", "priceIndex.comparisons", "priceIndex.comparison", "priceIndex.history", "market.signals", "market.metadataIndex", "market.overview", "market.evidence"];
|
|
32796
|
+
declare const CHAT_AGENT_CAPABILITIES: readonly ["me", "catalog.list", "catalog.facets", "catalog.rank", "catalog.suppliers", "catalog.similar", "catalog.compare", "catalog.grades", "catalog.priceHistory", "inventory.list", "roasts.list", "roasts.get", "roasts.chartData", "referenceProfiles.list", "referenceProfiles.get", "referenceProfiles.chart", "referenceProfiles.compare", "referenceProfiles.preview", "referenceProfiles.roastCandidates", "referenceProfiles.previewFromRoast", "tasting.get", "priceIndex.list", "priceIndex.stats", "priceIndex.comparisons", "priceIndex.comparison", "priceIndex.history", "market.signals", "market.metadataIndex", "market.overview", "market.evidence"];
|
|
31839
32797
|
type ChatAgentCapability = (typeof CHAT_AGENT_CAPABILITIES)[number];
|
|
31840
32798
|
/**
|
|
31841
32799
|
* Writes the web agent can propose. The agent never writes directly: it
|