@purveyors/sdk 0.53.0 → 0.56.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 +1338 -132
- package/dist/index.js +47 -3
- 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: {
|
|
@@ -6298,7 +6519,7 @@ interface paths {
|
|
|
6298
6519
|
patch?: never;
|
|
6299
6520
|
trace?: never;
|
|
6300
6521
|
};
|
|
6301
|
-
"/v1/catalog/
|
|
6522
|
+
"/v1/catalog/taxonomies": {
|
|
6302
6523
|
parameters: {
|
|
6303
6524
|
query?: never;
|
|
6304
6525
|
header?: never;
|
|
@@ -6306,23 +6527,21 @@ interface paths {
|
|
|
6306
6527
|
cookie?: never;
|
|
6307
6528
|
};
|
|
6308
6529
|
/**
|
|
6309
|
-
*
|
|
6310
|
-
* @description
|
|
6530
|
+
* Variety, species, and drying-method vocabularies
|
|
6531
|
+
* @description Lists canonical variety, species, and drying-method codes with labels, family links (`parent_code`), descriptions, and the supplier spellings (`aliases`) that map to each code. Reference data: identical for every authorized caller and not subject to row projection or collection limits. Retired codes are omitted unless includeRetired=true, except a retired family or species that an active code still names in `parent_code` or `species_code`: it is returned with `active: false` so every link resolves within the response. New values are added as rows; clients should not hard-code the lists.
|
|
6311
6532
|
*/
|
|
6312
6533
|
get: {
|
|
6313
6534
|
parameters: {
|
|
6314
6535
|
query?: {
|
|
6315
|
-
|
|
6536
|
+
includeRetired?: "true" | "false";
|
|
6316
6537
|
};
|
|
6317
6538
|
header?: never;
|
|
6318
|
-
path
|
|
6319
|
-
id: string;
|
|
6320
|
-
};
|
|
6539
|
+
path?: never;
|
|
6321
6540
|
cookie?: never;
|
|
6322
6541
|
};
|
|
6323
6542
|
requestBody?: never;
|
|
6324
6543
|
responses: {
|
|
6325
|
-
/** @description
|
|
6544
|
+
/** @description Taxonomy vocabularies */
|
|
6326
6545
|
200: {
|
|
6327
6546
|
headers: {
|
|
6328
6547
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -6334,22 +6553,7 @@ interface paths {
|
|
|
6334
6553
|
[name: string]: unknown;
|
|
6335
6554
|
};
|
|
6336
6555
|
content: {
|
|
6337
|
-
"application/json": components["schemas"]["
|
|
6338
|
-
};
|
|
6339
|
-
};
|
|
6340
|
-
/** @description Invalid path id or days */
|
|
6341
|
-
400: {
|
|
6342
|
-
headers: {
|
|
6343
|
-
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6344
|
-
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6345
|
-
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6346
|
-
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6347
|
-
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6348
|
-
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6349
|
-
[name: string]: unknown;
|
|
6350
|
-
};
|
|
6351
|
-
content: {
|
|
6352
|
-
"application/json": components["schemas"]["ErrorResponse"];
|
|
6556
|
+
"application/json": components["schemas"]["CatalogTaxonomiesResponse"];
|
|
6353
6557
|
};
|
|
6354
6558
|
};
|
|
6355
6559
|
/** @description Authentication required */
|
|
@@ -6382,21 +6586,6 @@ interface paths {
|
|
|
6382
6586
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
6383
6587
|
};
|
|
6384
6588
|
};
|
|
6385
|
-
/** @description Catalog coffee not found */
|
|
6386
|
-
404: {
|
|
6387
|
-
headers: {
|
|
6388
|
-
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6389
|
-
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6390
|
-
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6391
|
-
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6392
|
-
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6393
|
-
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6394
|
-
[name: string]: unknown;
|
|
6395
|
-
};
|
|
6396
|
-
content: {
|
|
6397
|
-
"application/json": components["schemas"]["ErrorResponse"];
|
|
6398
|
-
};
|
|
6399
|
-
};
|
|
6400
6589
|
429: components["responses"]["ApiRateLimitExceeded"];
|
|
6401
6590
|
};
|
|
6402
6591
|
};
|
|
@@ -6408,7 +6597,7 @@ interface paths {
|
|
|
6408
6597
|
patch?: never;
|
|
6409
6598
|
trace?: never;
|
|
6410
6599
|
};
|
|
6411
|
-
"/v1/
|
|
6600
|
+
"/v1/catalog/{id}/price-history": {
|
|
6412
6601
|
parameters: {
|
|
6413
6602
|
query?: never;
|
|
6414
6603
|
header?: never;
|
|
@@ -6416,12 +6605,122 @@ interface paths {
|
|
|
6416
6605
|
cookie?: never;
|
|
6417
6606
|
};
|
|
6418
6607
|
/**
|
|
6419
|
-
*
|
|
6420
|
-
* @description
|
|
6608
|
+
* Daily price history for one catalog coffee
|
|
6609
|
+
* @description Daily price, full tier ladder, and stock state for one public supplier catalog coffee over 7 to 365 days (default 90), with minimum-tier change events so packaging changes are not read as price cuts. Available to member sessions, Parchment Intelligence sessions, and customer API keys with catalog:read.
|
|
6421
6610
|
*/
|
|
6422
6611
|
get: {
|
|
6423
6612
|
parameters: {
|
|
6424
|
-
query?:
|
|
6613
|
+
query?: {
|
|
6614
|
+
days?: string;
|
|
6615
|
+
};
|
|
6616
|
+
header?: never;
|
|
6617
|
+
path: {
|
|
6618
|
+
id: string;
|
|
6619
|
+
};
|
|
6620
|
+
cookie?: never;
|
|
6621
|
+
};
|
|
6622
|
+
requestBody?: never;
|
|
6623
|
+
responses: {
|
|
6624
|
+
/** @description Daily price history with minimum-tier change events */
|
|
6625
|
+
200: {
|
|
6626
|
+
headers: {
|
|
6627
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6628
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6629
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6630
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6631
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6632
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6633
|
+
[name: string]: unknown;
|
|
6634
|
+
};
|
|
6635
|
+
content: {
|
|
6636
|
+
"application/json": components["schemas"]["LotPriceHistoryResponse"];
|
|
6637
|
+
};
|
|
6638
|
+
};
|
|
6639
|
+
/** @description Invalid path id or days */
|
|
6640
|
+
400: {
|
|
6641
|
+
headers: {
|
|
6642
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6643
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6644
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6645
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6646
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6647
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6648
|
+
[name: string]: unknown;
|
|
6649
|
+
};
|
|
6650
|
+
content: {
|
|
6651
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
6652
|
+
};
|
|
6653
|
+
};
|
|
6654
|
+
/** @description Authentication required */
|
|
6655
|
+
401: {
|
|
6656
|
+
headers: {
|
|
6657
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6658
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6659
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6660
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6661
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6662
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6663
|
+
[name: string]: unknown;
|
|
6664
|
+
};
|
|
6665
|
+
content: {
|
|
6666
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
6667
|
+
};
|
|
6668
|
+
};
|
|
6669
|
+
/** @description Insufficient entitlement (plan or role) */
|
|
6670
|
+
403: {
|
|
6671
|
+
headers: {
|
|
6672
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6673
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6674
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6675
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6676
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6677
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6678
|
+
[name: string]: unknown;
|
|
6679
|
+
};
|
|
6680
|
+
content: {
|
|
6681
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
6682
|
+
};
|
|
6683
|
+
};
|
|
6684
|
+
/** @description Catalog coffee not found */
|
|
6685
|
+
404: {
|
|
6686
|
+
headers: {
|
|
6687
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
6688
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
6689
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
6690
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
6691
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
6692
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
6693
|
+
[name: string]: unknown;
|
|
6694
|
+
};
|
|
6695
|
+
content: {
|
|
6696
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
6697
|
+
};
|
|
6698
|
+
};
|
|
6699
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
6700
|
+
};
|
|
6701
|
+
};
|
|
6702
|
+
put?: never;
|
|
6703
|
+
post?: never;
|
|
6704
|
+
delete?: never;
|
|
6705
|
+
options?: never;
|
|
6706
|
+
head?: never;
|
|
6707
|
+
patch?: never;
|
|
6708
|
+
trace?: never;
|
|
6709
|
+
};
|
|
6710
|
+
"/v1/procurement/briefs": {
|
|
6711
|
+
parameters: {
|
|
6712
|
+
query?: never;
|
|
6713
|
+
header?: never;
|
|
6714
|
+
path?: never;
|
|
6715
|
+
cookie?: never;
|
|
6716
|
+
};
|
|
6717
|
+
/**
|
|
6718
|
+
* List saved sourcing briefs
|
|
6719
|
+
* @description List the authenticated principal's active sourcing briefs. Requires a Parchment Intelligence or member session, or a paid (member+) API plan; API keys also need the catalog:read scope.
|
|
6720
|
+
*/
|
|
6721
|
+
get: {
|
|
6722
|
+
parameters: {
|
|
6723
|
+
query?: never;
|
|
6425
6724
|
header?: never;
|
|
6426
6725
|
path?: never;
|
|
6427
6726
|
cookie?: never;
|
|
@@ -7134,7 +7433,7 @@ interface paths {
|
|
|
7134
7433
|
put?: never;
|
|
7135
7434
|
/**
|
|
7136
7435
|
* 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.
|
|
7436
|
+
* @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
7437
|
*/
|
|
7139
7438
|
post: {
|
|
7140
7439
|
parameters: {
|
|
@@ -7164,7 +7463,7 @@ interface paths {
|
|
|
7164
7463
|
"application/json": components["schemas"]["ConfirmedActionExecuteResponse"];
|
|
7165
7464
|
};
|
|
7166
7465
|
};
|
|
7167
|
-
/** @description Invalid or unsupported confirmed-action payload */
|
|
7466
|
+
/** @description Invalid or unsupported confirmed-action payload, or a roast-based plan whose roast has no usable Artisan file on record */
|
|
7168
7467
|
400: {
|
|
7169
7468
|
headers: {
|
|
7170
7469
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -7176,7 +7475,7 @@ interface paths {
|
|
|
7176
7475
|
[name: string]: unknown;
|
|
7177
7476
|
};
|
|
7178
7477
|
content: {
|
|
7179
|
-
"application/json": components["schemas"]["
|
|
7478
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
7180
7479
|
};
|
|
7181
7480
|
};
|
|
7182
7481
|
/** @description Authentication required */
|
|
@@ -9799,7 +10098,7 @@ interface paths {
|
|
|
9799
10098
|
get?: never;
|
|
9800
10099
|
/**
|
|
9801
10100
|
* Replace an owner roast live curve
|
|
9802
|
-
* @description Atomically replace live temperature samples and all event markers, derive milestone and phase fields upstream, and preserve non-live temperature samples. Optional If-Match protects against lost updates.
|
|
10101
|
+
* @description Atomically replace live temperature samples and all event markers, derive milestone and phase fields upstream, and preserve non-live temperature samples. The fields are derived from milestone events named `charge`, `dry_end`, `fc_start`, `fc_end`, `sc_start`, `drop`, and `cool`; the older names `start`, `maillard`, and `end` are read as `charge`, `dry_end`, and `cool` when the current name is absent. Derived times count from CHARGE, or from the start of the recording when neither `charge` nor `start` is sent, in which case `charge_time` is null. A turning point is not derived. Optional If-Match protects against lost updates.
|
|
9803
10102
|
*/
|
|
9804
10103
|
put: {
|
|
9805
10104
|
parameters: {
|
|
@@ -10246,7 +10545,7 @@ interface paths {
|
|
|
10246
10545
|
patch?: never;
|
|
10247
10546
|
trace?: never;
|
|
10248
10547
|
};
|
|
10249
|
-
"/v1/roasts/
|
|
10548
|
+
"/v1/roasts/imports/from-reference": {
|
|
10250
10549
|
parameters: {
|
|
10251
10550
|
query?: never;
|
|
10252
10551
|
header?: never;
|
|
@@ -10254,29 +10553,28 @@ interface paths {
|
|
|
10254
10553
|
cookie?: never;
|
|
10255
10554
|
};
|
|
10256
10555
|
get?: never;
|
|
10556
|
+
put?: never;
|
|
10257
10557
|
/**
|
|
10258
|
-
*
|
|
10259
|
-
* @description
|
|
10558
|
+
* Create a roast from a saved Artisan reference
|
|
10559
|
+
* @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
10560
|
*/
|
|
10261
|
-
|
|
10561
|
+
post: {
|
|
10262
10562
|
parameters: {
|
|
10263
10563
|
query?: never;
|
|
10264
10564
|
header?: {
|
|
10265
|
-
"
|
|
10266
|
-
};
|
|
10267
|
-
path: {
|
|
10268
|
-
id: number;
|
|
10565
|
+
"idempotency-key"?: string;
|
|
10269
10566
|
};
|
|
10567
|
+
path?: never;
|
|
10270
10568
|
cookie?: never;
|
|
10271
10569
|
};
|
|
10272
10570
|
requestBody: {
|
|
10273
10571
|
content: {
|
|
10274
|
-
"application/json": components["schemas"]["
|
|
10572
|
+
"application/json": components["schemas"]["RoastImportFromReferenceRequest"];
|
|
10275
10573
|
};
|
|
10276
10574
|
};
|
|
10277
10575
|
responses: {
|
|
10278
|
-
/** @description The
|
|
10279
|
-
|
|
10576
|
+
/** @description The created roast profile plus import summary */
|
|
10577
|
+
201: {
|
|
10280
10578
|
headers: {
|
|
10281
10579
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10282
10580
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -10287,7 +10585,7 @@ interface paths {
|
|
|
10287
10585
|
[name: string]: unknown;
|
|
10288
10586
|
};
|
|
10289
10587
|
content: {
|
|
10290
|
-
"application/json": components["schemas"]["
|
|
10588
|
+
"application/json": components["schemas"]["RoastImportFromReferenceResponse"];
|
|
10291
10589
|
};
|
|
10292
10590
|
};
|
|
10293
10591
|
/** @description Invalid query parameter */
|
|
@@ -10335,7 +10633,7 @@ interface paths {
|
|
|
10335
10633
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10336
10634
|
};
|
|
10337
10635
|
};
|
|
10338
|
-
/** @description No such
|
|
10636
|
+
/** @description No such coffee lot owned by the caller */
|
|
10339
10637
|
404: {
|
|
10340
10638
|
headers: {
|
|
10341
10639
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -10399,23 +10697,42 @@ interface paths {
|
|
|
10399
10697
|
};
|
|
10400
10698
|
};
|
|
10401
10699
|
};
|
|
10402
|
-
|
|
10700
|
+
delete?: never;
|
|
10701
|
+
options?: never;
|
|
10702
|
+
head?: never;
|
|
10703
|
+
patch?: never;
|
|
10704
|
+
trace?: never;
|
|
10705
|
+
};
|
|
10706
|
+
"/v1/roasts/{id}/artisan-import": {
|
|
10707
|
+
parameters: {
|
|
10708
|
+
query?: never;
|
|
10709
|
+
header?: never;
|
|
10710
|
+
path?: never;
|
|
10711
|
+
cookie?: never;
|
|
10712
|
+
};
|
|
10713
|
+
get?: never;
|
|
10403
10714
|
/**
|
|
10404
|
-
*
|
|
10405
|
-
* @description
|
|
10715
|
+
* Replace a roast's Artisan import
|
|
10716
|
+
* @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
10717
|
*/
|
|
10407
|
-
|
|
10718
|
+
put: {
|
|
10408
10719
|
parameters: {
|
|
10409
10720
|
query?: never;
|
|
10410
|
-
header?:
|
|
10721
|
+
header?: {
|
|
10722
|
+
"if-match"?: string;
|
|
10723
|
+
};
|
|
10411
10724
|
path: {
|
|
10412
10725
|
id: number;
|
|
10413
10726
|
};
|
|
10414
10727
|
cookie?: never;
|
|
10415
10728
|
};
|
|
10416
|
-
requestBody
|
|
10729
|
+
requestBody: {
|
|
10730
|
+
content: {
|
|
10731
|
+
"application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
|
|
10732
|
+
};
|
|
10733
|
+
};
|
|
10417
10734
|
responses: {
|
|
10418
|
-
/** @description The
|
|
10735
|
+
/** @description The updated roast profile plus import summary */
|
|
10419
10736
|
200: {
|
|
10420
10737
|
headers: {
|
|
10421
10738
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -10427,7 +10744,22 @@ interface paths {
|
|
|
10427
10744
|
[name: string]: unknown;
|
|
10428
10745
|
};
|
|
10429
10746
|
content: {
|
|
10430
|
-
"application/json": components["schemas"]["
|
|
10747
|
+
"application/json": components["schemas"]["RoastImportResponse"];
|
|
10748
|
+
};
|
|
10749
|
+
};
|
|
10750
|
+
/** @description Invalid query parameter */
|
|
10751
|
+
400: {
|
|
10752
|
+
headers: {
|
|
10753
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10754
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10755
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10756
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10757
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10758
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10759
|
+
[name: string]: unknown;
|
|
10760
|
+
};
|
|
10761
|
+
content: {
|
|
10762
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10431
10763
|
};
|
|
10432
10764
|
};
|
|
10433
10765
|
/** @description Authentication required */
|
|
@@ -10475,6 +10807,21 @@ interface paths {
|
|
|
10475
10807
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10476
10808
|
};
|
|
10477
10809
|
};
|
|
10810
|
+
/** @description Write conflict: an If-Match precondition failed */
|
|
10811
|
+
409: {
|
|
10812
|
+
headers: {
|
|
10813
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10814
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
10815
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
10816
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
10817
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
10818
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
10819
|
+
[name: string]: unknown;
|
|
10820
|
+
};
|
|
10821
|
+
content: {
|
|
10822
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10823
|
+
};
|
|
10824
|
+
};
|
|
10478
10825
|
/** @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. */
|
|
10479
10826
|
429: {
|
|
10480
10827
|
headers: {
|
|
@@ -10509,38 +10856,23 @@ interface paths {
|
|
|
10509
10856
|
};
|
|
10510
10857
|
};
|
|
10511
10858
|
};
|
|
10512
|
-
|
|
10513
|
-
head?: never;
|
|
10514
|
-
patch?: never;
|
|
10515
|
-
trace?: never;
|
|
10516
|
-
};
|
|
10517
|
-
"/v1/roasts/classify": {
|
|
10518
|
-
parameters: {
|
|
10519
|
-
query?: never;
|
|
10520
|
-
header?: never;
|
|
10521
|
-
path?: never;
|
|
10522
|
-
cookie?: never;
|
|
10523
|
-
};
|
|
10524
|
-
get?: never;
|
|
10525
|
-
put?: never;
|
|
10859
|
+
post?: never;
|
|
10526
10860
|
/**
|
|
10527
|
-
*
|
|
10528
|
-
* @description
|
|
10861
|
+
* Clear a roast's Artisan import
|
|
10862
|
+
* @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.
|
|
10529
10863
|
*/
|
|
10530
|
-
|
|
10864
|
+
delete: {
|
|
10531
10865
|
parameters: {
|
|
10532
10866
|
query?: never;
|
|
10533
10867
|
header?: never;
|
|
10534
|
-
path
|
|
10535
|
-
|
|
10536
|
-
};
|
|
10537
|
-
requestBody: {
|
|
10538
|
-
content: {
|
|
10539
|
-
"application/json": components["schemas"]["RoastClassificationRequest"];
|
|
10868
|
+
path: {
|
|
10869
|
+
id: number;
|
|
10540
10870
|
};
|
|
10871
|
+
cookie?: never;
|
|
10541
10872
|
};
|
|
10873
|
+
requestBody?: never;
|
|
10542
10874
|
responses: {
|
|
10543
|
-
/** @description
|
|
10875
|
+
/** @description The cleared roast id plus deleted row counts */
|
|
10544
10876
|
200: {
|
|
10545
10877
|
headers: {
|
|
10546
10878
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -10552,11 +10884,11 @@ interface paths {
|
|
|
10552
10884
|
[name: string]: unknown;
|
|
10553
10885
|
};
|
|
10554
10886
|
content: {
|
|
10555
|
-
"application/json": components["schemas"]["
|
|
10887
|
+
"application/json": components["schemas"]["RoastArtisanImportClearResponse"];
|
|
10556
10888
|
};
|
|
10557
10889
|
};
|
|
10558
|
-
/** @description
|
|
10559
|
-
|
|
10890
|
+
/** @description Authentication required */
|
|
10891
|
+
401: {
|
|
10560
10892
|
headers: {
|
|
10561
10893
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10562
10894
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -10570,8 +10902,8 @@ interface paths {
|
|
|
10570
10902
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10571
10903
|
};
|
|
10572
10904
|
};
|
|
10573
|
-
/** @description
|
|
10574
|
-
|
|
10905
|
+
/** @description Insufficient entitlement (plan or role) */
|
|
10906
|
+
403: {
|
|
10575
10907
|
headers: {
|
|
10576
10908
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10577
10909
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -10585,8 +10917,8 @@ interface paths {
|
|
|
10585
10917
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10586
10918
|
};
|
|
10587
10919
|
};
|
|
10588
|
-
/** @description
|
|
10589
|
-
|
|
10920
|
+
/** @description No such roast profile owned by the caller */
|
|
10921
|
+
404: {
|
|
10590
10922
|
headers: {
|
|
10591
10923
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
10592
10924
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
@@ -10600,7 +10932,7 @@ interface paths {
|
|
|
10600
10932
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10601
10933
|
};
|
|
10602
10934
|
};
|
|
10603
|
-
/** @description
|
|
10935
|
+
/** @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. */
|
|
10604
10936
|
429: {
|
|
10605
10937
|
headers: {
|
|
10606
10938
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -10617,7 +10949,7 @@ interface paths {
|
|
|
10617
10949
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
10618
10950
|
};
|
|
10619
10951
|
};
|
|
10620
|
-
/** @description
|
|
10952
|
+
/** @description Roast writes are not enabled in this environment */
|
|
10621
10953
|
503: {
|
|
10622
10954
|
headers: {
|
|
10623
10955
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -10634,23 +10966,148 @@ interface paths {
|
|
|
10634
10966
|
};
|
|
10635
10967
|
};
|
|
10636
10968
|
};
|
|
10637
|
-
delete?: never;
|
|
10638
10969
|
options?: never;
|
|
10639
10970
|
head?: never;
|
|
10640
10971
|
patch?: never;
|
|
10641
10972
|
trace?: never;
|
|
10642
10973
|
};
|
|
10643
|
-
"/v1/roasts/
|
|
10974
|
+
"/v1/roasts/classify": {
|
|
10644
10975
|
parameters: {
|
|
10645
10976
|
query?: never;
|
|
10646
10977
|
header?: never;
|
|
10647
10978
|
path?: never;
|
|
10648
10979
|
cookie?: never;
|
|
10649
10980
|
};
|
|
10981
|
+
get?: never;
|
|
10982
|
+
put?: never;
|
|
10650
10983
|
/**
|
|
10651
|
-
*
|
|
10652
|
-
* @description
|
|
10653
|
-
*/
|
|
10984
|
+
* Classify an imported roast
|
|
10985
|
+
* @description Match Artisan roast metadata to one of the supplied owner inventory rows. Requires member entitlement and either an authenticated session or an owner-bound API key carrying the exact roast:read scope.
|
|
10986
|
+
*/
|
|
10987
|
+
post: {
|
|
10988
|
+
parameters: {
|
|
10989
|
+
query?: never;
|
|
10990
|
+
header?: never;
|
|
10991
|
+
path?: never;
|
|
10992
|
+
cookie?: never;
|
|
10993
|
+
};
|
|
10994
|
+
requestBody: {
|
|
10995
|
+
content: {
|
|
10996
|
+
"application/json": components["schemas"]["RoastClassificationRequest"];
|
|
10997
|
+
};
|
|
10998
|
+
};
|
|
10999
|
+
responses: {
|
|
11000
|
+
/** @description Best inventory match, or null when no reasonable match exists */
|
|
11001
|
+
200: {
|
|
11002
|
+
headers: {
|
|
11003
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
11004
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
11005
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
11006
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
11007
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
11008
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
11009
|
+
[name: string]: unknown;
|
|
11010
|
+
};
|
|
11011
|
+
content: {
|
|
11012
|
+
"application/json": components["schemas"]["RoastClassificationResponse"];
|
|
11013
|
+
};
|
|
11014
|
+
};
|
|
11015
|
+
/** @description Invalid request body or input cap exceeded */
|
|
11016
|
+
400: {
|
|
11017
|
+
headers: {
|
|
11018
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
11019
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
11020
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
11021
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
11022
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
11023
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
11024
|
+
[name: string]: unknown;
|
|
11025
|
+
};
|
|
11026
|
+
content: {
|
|
11027
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
11028
|
+
};
|
|
11029
|
+
};
|
|
11030
|
+
/** @description Authentication required */
|
|
11031
|
+
401: {
|
|
11032
|
+
headers: {
|
|
11033
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
11034
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
11035
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
11036
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
11037
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
11038
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
11039
|
+
[name: string]: unknown;
|
|
11040
|
+
};
|
|
11041
|
+
content: {
|
|
11042
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
11043
|
+
};
|
|
11044
|
+
};
|
|
11045
|
+
/** @description Insufficient entitlement (plan or role) */
|
|
11046
|
+
403: {
|
|
11047
|
+
headers: {
|
|
11048
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
11049
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
11050
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
11051
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
11052
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
11053
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
11054
|
+
[name: string]: unknown;
|
|
11055
|
+
};
|
|
11056
|
+
content: {
|
|
11057
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
11058
|
+
};
|
|
11059
|
+
};
|
|
11060
|
+
/** @description API or upstream classification rate limit exceeded Customer API keys may also receive an account monthly or machine burst quota rejection. */
|
|
11061
|
+
429: {
|
|
11062
|
+
headers: {
|
|
11063
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
11064
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
11065
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
11066
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
11067
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
11068
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
11069
|
+
"Retry-After": components["headers"]["Retry-After"];
|
|
11070
|
+
"X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
|
|
11071
|
+
[name: string]: unknown;
|
|
11072
|
+
};
|
|
11073
|
+
content: {
|
|
11074
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
11075
|
+
};
|
|
11076
|
+
};
|
|
11077
|
+
/** @description Classification provider is unavailable or not configured */
|
|
11078
|
+
503: {
|
|
11079
|
+
headers: {
|
|
11080
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
11081
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
11082
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
11083
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
11084
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
11085
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
11086
|
+
[name: string]: unknown;
|
|
11087
|
+
};
|
|
11088
|
+
content: {
|
|
11089
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
11090
|
+
};
|
|
11091
|
+
};
|
|
11092
|
+
};
|
|
11093
|
+
};
|
|
11094
|
+
delete?: never;
|
|
11095
|
+
options?: never;
|
|
11096
|
+
head?: never;
|
|
11097
|
+
patch?: never;
|
|
11098
|
+
trace?: never;
|
|
11099
|
+
};
|
|
11100
|
+
"/v1/roasts/{id}/chart-data": {
|
|
11101
|
+
parameters: {
|
|
11102
|
+
query?: never;
|
|
11103
|
+
header?: never;
|
|
11104
|
+
path?: never;
|
|
11105
|
+
cookie?: never;
|
|
11106
|
+
};
|
|
11107
|
+
/**
|
|
11108
|
+
* Get sampled roast chart data
|
|
11109
|
+
* @description Fetch a chart-ready model with adaptively sampled primary and auxiliary series, discrete events, and metadata for one of the authenticated principal's roast profiles. The legacy flat points projection remains available for compatibility. Requires an authenticated session, or an owner-bound API key carrying the roast:read scope on an uncapped API plan.
|
|
11110
|
+
*/
|
|
10654
11111
|
get: {
|
|
10655
11112
|
parameters: {
|
|
10656
11113
|
query?: {
|
|
@@ -13798,7 +14255,13 @@ interface components {
|
|
|
13798
14255
|
updatedAt: string;
|
|
13799
14256
|
};
|
|
13800
14257
|
ReferenceProfileListResponse: {
|
|
13801
|
-
data: components["schemas"]["ReferenceProfileSummary"]
|
|
14258
|
+
data: (components["schemas"]["ReferenceProfileSummary"] & {
|
|
14259
|
+
/** @description The executed roast the current revision was saved from, or null for an uploaded or planned profile. */
|
|
14260
|
+
sourceRoast: {
|
|
14261
|
+
id: number;
|
|
14262
|
+
revision: string;
|
|
14263
|
+
} | null;
|
|
14264
|
+
})[];
|
|
13802
14265
|
meta: {
|
|
13803
14266
|
/** @enum {string} */
|
|
13804
14267
|
resource: "reference-profiles";
|
|
@@ -13853,6 +14316,7 @@ interface components {
|
|
|
13853
14316
|
ReferenceProfileChart: {
|
|
13854
14317
|
/** @enum {string} */
|
|
13855
14318
|
temperatureUnit: "F" | "C";
|
|
14319
|
+
/** @description Where CHARGE sits on the chart's clock, in milliseconds since the recording started. Null when no CHARGE is marked. Subtract it from any chart time for time since CHARGE. */
|
|
13856
14320
|
chargeTimeMilliseconds: number | null;
|
|
13857
14321
|
series: {
|
|
13858
14322
|
id: string;
|
|
@@ -13863,11 +14327,13 @@ interface components {
|
|
|
13863
14327
|
deviceIndex: number | null;
|
|
13864
14328
|
channel: 1 | 2 | null;
|
|
13865
14329
|
points: {
|
|
14330
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
13866
14331
|
timeMilliseconds: number;
|
|
13867
14332
|
value: number;
|
|
13868
14333
|
}[];
|
|
13869
14334
|
}[];
|
|
13870
14335
|
events: {
|
|
14336
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
13871
14337
|
timeMilliseconds: number;
|
|
13872
14338
|
name: string;
|
|
13873
14339
|
value: string | null;
|
|
@@ -13902,7 +14368,9 @@ interface components {
|
|
|
13902
14368
|
temperatureAdjustments: {
|
|
13903
14369
|
/** @enum {string} */
|
|
13904
14370
|
kind: "bean_temperature" | "environmental_temperature";
|
|
14371
|
+
/** @description Start of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
13905
14372
|
startMilliseconds: number;
|
|
14373
|
+
/** @description End of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
13906
14374
|
endMilliseconds: number;
|
|
13907
14375
|
delta: number;
|
|
13908
14376
|
}[];
|
|
@@ -13922,10 +14390,12 @@ interface components {
|
|
|
13922
14390
|
unchangedZeroSampleCount: number;
|
|
13923
14391
|
parent: {
|
|
13924
14392
|
first: {
|
|
14393
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
13925
14394
|
timeMilliseconds: number;
|
|
13926
14395
|
value: number;
|
|
13927
14396
|
} | null;
|
|
13928
14397
|
last: {
|
|
14398
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
13929
14399
|
timeMilliseconds: number;
|
|
13930
14400
|
value: number;
|
|
13931
14401
|
} | null;
|
|
@@ -13934,10 +14404,12 @@ interface components {
|
|
|
13934
14404
|
};
|
|
13935
14405
|
planned: {
|
|
13936
14406
|
first: {
|
|
14407
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
13937
14408
|
timeMilliseconds: number;
|
|
13938
14409
|
value: number;
|
|
13939
14410
|
} | null;
|
|
13940
14411
|
last: {
|
|
14412
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
13941
14413
|
timeMilliseconds: number;
|
|
13942
14414
|
value: number;
|
|
13943
14415
|
} | null;
|
|
@@ -13971,7 +14443,9 @@ interface components {
|
|
|
13971
14443
|
temperatureAdjustments: {
|
|
13972
14444
|
/** @enum {string} */
|
|
13973
14445
|
kind: "bean_temperature" | "environmental_temperature";
|
|
14446
|
+
/** @description Start of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
13974
14447
|
startMilliseconds: number;
|
|
14448
|
+
/** @description End of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
13975
14449
|
endMilliseconds: number;
|
|
13976
14450
|
delta: number;
|
|
13977
14451
|
}[];
|
|
@@ -14000,12 +14474,156 @@ interface components {
|
|
|
14000
14474
|
fileContent: string;
|
|
14001
14475
|
fileSize?: number;
|
|
14002
14476
|
};
|
|
14477
|
+
RoastSourceErrorResponse: {
|
|
14478
|
+
error: {
|
|
14479
|
+
code: string;
|
|
14480
|
+
message: string;
|
|
14481
|
+
/**
|
|
14482
|
+
* @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.
|
|
14483
|
+
* @enum {string}
|
|
14484
|
+
*/
|
|
14485
|
+
reason?: "no_artisan_import" | "artisan_file_not_retained" | "artisan_file_too_large";
|
|
14486
|
+
};
|
|
14487
|
+
};
|
|
14003
14488
|
ReferenceProfileFromRoastRequest: {
|
|
14004
14489
|
roastId: number;
|
|
14490
|
+
/** @description The roast's current revision token (its last_updated value). */
|
|
14005
14491
|
roastRevision: string;
|
|
14492
|
+
/**
|
|
14493
|
+
* @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.
|
|
14494
|
+
* @default chart_snapshot
|
|
14495
|
+
* @enum {string}
|
|
14496
|
+
*/
|
|
14497
|
+
basis: "chart_snapshot" | "artisan_source";
|
|
14006
14498
|
title?: string;
|
|
14007
14499
|
notes?: string;
|
|
14008
14500
|
};
|
|
14501
|
+
ReferenceProfileRoastCandidatesResponse: {
|
|
14502
|
+
data: {
|
|
14503
|
+
roasts: {
|
|
14504
|
+
roastId: number;
|
|
14505
|
+
roastRevision: string;
|
|
14506
|
+
label: string;
|
|
14507
|
+
batchName: string | null;
|
|
14508
|
+
coffeeName: string | null;
|
|
14509
|
+
roastDate: string | null;
|
|
14510
|
+
reference: {
|
|
14511
|
+
/** Format: uuid */
|
|
14512
|
+
profileId: string;
|
|
14513
|
+
/** Format: uuid */
|
|
14514
|
+
revisionId: string;
|
|
14515
|
+
saved: boolean;
|
|
14516
|
+
};
|
|
14517
|
+
}[];
|
|
14518
|
+
eligibleCount: number;
|
|
14519
|
+
totalRoastCount: number;
|
|
14520
|
+
ineligibleRoastCount: number;
|
|
14521
|
+
};
|
|
14522
|
+
meta: {
|
|
14523
|
+
/** @enum {string} */
|
|
14524
|
+
resource: "reference-profile-roast-candidates";
|
|
14525
|
+
/** @enum {string} */
|
|
14526
|
+
namespace: "/v1/reference-profiles";
|
|
14527
|
+
/** @enum {string} */
|
|
14528
|
+
version: "v1";
|
|
14529
|
+
};
|
|
14530
|
+
};
|
|
14531
|
+
ReferenceProfileRoastGenerationPreviewResponse: {
|
|
14532
|
+
data: {
|
|
14533
|
+
/** Format: uuid */
|
|
14534
|
+
parentRevisionId: string;
|
|
14535
|
+
title: string;
|
|
14536
|
+
userGoal: string | null;
|
|
14537
|
+
modelRecommendation: string | null;
|
|
14538
|
+
userEdits: string | null;
|
|
14539
|
+
changes: {
|
|
14540
|
+
temperatureAdjustments: {
|
|
14541
|
+
/** @enum {string} */
|
|
14542
|
+
kind: "bean_temperature" | "environmental_temperature";
|
|
14543
|
+
/** @description Start of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
14544
|
+
startMilliseconds: number;
|
|
14545
|
+
/** @description End of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
14546
|
+
endMilliseconds: number;
|
|
14547
|
+
delta: number;
|
|
14548
|
+
}[];
|
|
14549
|
+
};
|
|
14550
|
+
measuredFacts: {
|
|
14551
|
+
/** @enum {string} */
|
|
14552
|
+
temperatureUnit: "F" | "C";
|
|
14553
|
+
adjustments: {
|
|
14554
|
+
/** @enum {string} */
|
|
14555
|
+
kind: "bean_temperature" | "environmental_temperature";
|
|
14556
|
+
startMilliseconds: number;
|
|
14557
|
+
endMilliseconds: number;
|
|
14558
|
+
requestedDelta: number;
|
|
14559
|
+
/** @enum {string} */
|
|
14560
|
+
unit: "F" | "C";
|
|
14561
|
+
changedSampleCount: number;
|
|
14562
|
+
unchangedZeroSampleCount: number;
|
|
14563
|
+
parent: {
|
|
14564
|
+
first: {
|
|
14565
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
14566
|
+
timeMilliseconds: number;
|
|
14567
|
+
value: number;
|
|
14568
|
+
} | null;
|
|
14569
|
+
last: {
|
|
14570
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
14571
|
+
timeMilliseconds: number;
|
|
14572
|
+
value: number;
|
|
14573
|
+
} | null;
|
|
14574
|
+
minimum: number | null;
|
|
14575
|
+
maximum: number | null;
|
|
14576
|
+
};
|
|
14577
|
+
planned: {
|
|
14578
|
+
first: {
|
|
14579
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
14580
|
+
timeMilliseconds: number;
|
|
14581
|
+
value: number;
|
|
14582
|
+
} | null;
|
|
14583
|
+
last: {
|
|
14584
|
+
/** @description Milliseconds since the recording started. Subtract the chart's `chargeTimeMilliseconds` for time since CHARGE. */
|
|
14585
|
+
timeMilliseconds: number;
|
|
14586
|
+
value: number;
|
|
14587
|
+
} | null;
|
|
14588
|
+
minimum: number | null;
|
|
14589
|
+
maximum: number | null;
|
|
14590
|
+
};
|
|
14591
|
+
}[];
|
|
14592
|
+
/** @enum {boolean} */
|
|
14593
|
+
eventsUnchanged: true;
|
|
14594
|
+
};
|
|
14595
|
+
chart: components["schemas"]["ReferenceProfileChart"];
|
|
14596
|
+
/** @enum {boolean} */
|
|
14597
|
+
exportEligible: true;
|
|
14598
|
+
/**
|
|
14599
|
+
* Format: uuid
|
|
14600
|
+
* @description The reference this roast's Artisan file is, or will be, saved under.
|
|
14601
|
+
*/
|
|
14602
|
+
parentProfileId: string;
|
|
14603
|
+
/** @description Whether that reference already exists. A preview never creates it. */
|
|
14604
|
+
parentSaved: boolean;
|
|
14605
|
+
sourceRoast: {
|
|
14606
|
+
id: number;
|
|
14607
|
+
revision: string;
|
|
14608
|
+
label: string;
|
|
14609
|
+
batchName: string | null;
|
|
14610
|
+
coffeeName: string | null;
|
|
14611
|
+
roastDate: string | null;
|
|
14612
|
+
};
|
|
14613
|
+
};
|
|
14614
|
+
meta: {
|
|
14615
|
+
/** @enum {string} */
|
|
14616
|
+
resource: "reference-profile-previews";
|
|
14617
|
+
/** @enum {string} */
|
|
14618
|
+
namespace: "/v1/reference-profiles";
|
|
14619
|
+
/** @enum {string} */
|
|
14620
|
+
version: "v1";
|
|
14621
|
+
};
|
|
14622
|
+
};
|
|
14623
|
+
ReferenceProfileRoastGenerationRequest: components["schemas"]["ReferenceProfileGenerationRequest"] & {
|
|
14624
|
+
roastId: number;
|
|
14625
|
+
roastRevision: string;
|
|
14626
|
+
};
|
|
14009
14627
|
ProfileComparisonResponse: {
|
|
14010
14628
|
data: {
|
|
14011
14629
|
/** @enum {string} */
|
|
@@ -14029,6 +14647,7 @@ interface components {
|
|
|
14029
14647
|
kind: "bean_temperature" | "environmental_temperature" | "auxiliary";
|
|
14030
14648
|
unit: string;
|
|
14031
14649
|
points: {
|
|
14650
|
+
/** @description Milliseconds since CHARGE. */
|
|
14032
14651
|
timeMilliseconds: number;
|
|
14033
14652
|
left: number;
|
|
14034
14653
|
right: number;
|
|
@@ -14037,7 +14656,9 @@ interface components {
|
|
|
14037
14656
|
}[];
|
|
14038
14657
|
milestones: {
|
|
14039
14658
|
name: string;
|
|
14659
|
+
/** @description The left profile's milestone, in milliseconds since its CHARGE. */
|
|
14040
14660
|
leftMilliseconds: number;
|
|
14661
|
+
/** @description The right profile's milestone, in milliseconds since its CHARGE. */
|
|
14041
14662
|
rightMilliseconds: number;
|
|
14042
14663
|
deltaMilliseconds: number;
|
|
14043
14664
|
}[];
|
|
@@ -16180,14 +16801,57 @@ interface components {
|
|
|
16180
16801
|
dimensions: ("size" | "altitude" | "defects" | "cup" | "preparation")[];
|
|
16181
16802
|
};
|
|
16182
16803
|
};
|
|
16183
|
-
|
|
16804
|
+
VarietyEntry: {
|
|
16805
|
+
/** @example yellow_bourbon */
|
|
16806
|
+
code: string;
|
|
16807
|
+
/** @example Yellow Bourbon */
|
|
16808
|
+
label: string;
|
|
16809
|
+
/** @description Family this value belongs to. A family code matches itself and every descendant. */
|
|
16810
|
+
parent_code: string | null;
|
|
16811
|
+
description: string | null;
|
|
16812
|
+
active: boolean;
|
|
16813
|
+
sort_order: number;
|
|
16814
|
+
/** @description Normalized supplier spellings that map to this code. */
|
|
16815
|
+
aliases: string[];
|
|
16816
|
+
species_code: string | null;
|
|
16817
|
+
};
|
|
16818
|
+
TaxonomyEntry: {
|
|
16819
|
+
/** @example yellow_bourbon */
|
|
16820
|
+
code: string;
|
|
16821
|
+
/** @example Yellow Bourbon */
|
|
16822
|
+
label: string;
|
|
16823
|
+
/** @description Family this value belongs to. A family code matches itself and every descendant. */
|
|
16824
|
+
parent_code: string | null;
|
|
16825
|
+
description: string | null;
|
|
16826
|
+
active: boolean;
|
|
16827
|
+
sort_order: number;
|
|
16828
|
+
/** @description Normalized supplier spellings that map to this code. */
|
|
16829
|
+
aliases: string[];
|
|
16830
|
+
};
|
|
16831
|
+
CatalogTaxonomiesResponse: {
|
|
16184
16832
|
data: {
|
|
16185
|
-
|
|
16833
|
+
varieties: components["schemas"]["VarietyEntry"][];
|
|
16834
|
+
species: components["schemas"]["TaxonomyEntry"][];
|
|
16835
|
+
drying_methods: components["schemas"]["TaxonomyEntry"][];
|
|
16836
|
+
};
|
|
16837
|
+
meta: {
|
|
16186
16838
|
/** @enum {string} */
|
|
16187
|
-
|
|
16188
|
-
/**
|
|
16189
|
-
|
|
16190
|
-
/**
|
|
16839
|
+
resource: "catalog-taxonomies";
|
|
16840
|
+
/** @enum {string} */
|
|
16841
|
+
namespace: "/v1/catalog/taxonomies";
|
|
16842
|
+
/** @enum {string} */
|
|
16843
|
+
version: "v1";
|
|
16844
|
+
taxonomies: ("variety" | "species" | "drying_method")[];
|
|
16845
|
+
};
|
|
16846
|
+
};
|
|
16847
|
+
LotPriceHistoryResponse: {
|
|
16848
|
+
data: {
|
|
16849
|
+
catalogId: number;
|
|
16850
|
+
/** @enum {string} */
|
|
16851
|
+
currency: "USD";
|
|
16852
|
+
/** Format: date */
|
|
16853
|
+
from: string;
|
|
16854
|
+
/** Format: date */
|
|
16191
16855
|
to: string;
|
|
16192
16856
|
points: {
|
|
16193
16857
|
/** Format: date */
|
|
@@ -16549,12 +17213,16 @@ interface components {
|
|
|
16549
17213
|
temperatureAdjustments: {
|
|
16550
17214
|
/** @enum {string} */
|
|
16551
17215
|
kind: "bean_temperature" | "environmental_temperature";
|
|
17216
|
+
/** @description Start of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
16552
17217
|
startMilliseconds: number;
|
|
17218
|
+
/** @description End of the change on the parent chart's clock. Milliseconds since the recording started, as chart points are timed. For a time counted from CHARGE, add the chart's `chargeTimeMilliseconds`. */
|
|
16553
17219
|
endMilliseconds: number;
|
|
16554
17220
|
delta: number;
|
|
16555
17221
|
}[];
|
|
16556
17222
|
};
|
|
16557
17223
|
change_set_summary: string;
|
|
17224
|
+
source_roast_id?: number | string;
|
|
17225
|
+
source_roast_revision?: string;
|
|
16558
17226
|
};
|
|
16559
17227
|
} | {
|
|
16560
17228
|
/** @description Stable operation id. Repeating it with the same action payload replays the stored result; changing the payload returns 409. */
|
|
@@ -17078,6 +17746,7 @@ interface components {
|
|
|
17078
17746
|
};
|
|
17079
17747
|
RoastTemperature: {
|
|
17080
17748
|
roast_id: number;
|
|
17749
|
+
/** @description Seconds since the recording started, the clock the curve is sampled on. Subtract the roast's `charge_time` for time since CHARGE. */
|
|
17081
17750
|
time_seconds: number;
|
|
17082
17751
|
bean_temp: number | null;
|
|
17083
17752
|
environmental_temp: number | null;
|
|
@@ -17087,6 +17756,7 @@ interface components {
|
|
|
17087
17756
|
};
|
|
17088
17757
|
RoastEvent: {
|
|
17089
17758
|
roast_id: number;
|
|
17759
|
+
/** @description Seconds since the recording started, the clock the curve is sampled on. Subtract the roast's `charge_time` for time since CHARGE. */
|
|
17090
17760
|
time_seconds: number;
|
|
17091
17761
|
event_type: number | null;
|
|
17092
17762
|
event_value: string | null;
|
|
@@ -17111,25 +17781,34 @@ interface components {
|
|
|
17111
17781
|
roaster_type: string | null;
|
|
17112
17782
|
roaster_size: string | null;
|
|
17113
17783
|
temperature_unit: string | null;
|
|
17784
|
+
/** @description Roast length in seconds, from CHARGE to DROP. From the start of the recording when `charge_time` is null. */
|
|
17114
17785
|
total_roast_time: number | null;
|
|
17786
|
+
/** @description Development: first crack start to DROP, as a share of the time from CHARGE to DROP (`total_roast_time`), in percent. */
|
|
17115
17787
|
development_percent: number | null;
|
|
17116
17788
|
data_source: string | null;
|
|
17117
17789
|
last_updated: string;
|
|
17118
17790
|
roast_uuid: string | null;
|
|
17791
|
+
/** @description First crack start. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17119
17792
|
fc_start_time: number | null;
|
|
17120
17793
|
fc_start_temp: number | null;
|
|
17794
|
+
/** @description First crack end. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17121
17795
|
fc_end_time: number | null;
|
|
17122
17796
|
fc_end_temp: number | null;
|
|
17797
|
+
/** @description DROP. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17123
17798
|
drop_time: number | null;
|
|
17124
17799
|
drop_temp: number | null;
|
|
17125
17800
|
charge_temp: number | null;
|
|
17801
|
+
/** @description Where CHARGE sits on the recording clock: seconds from the start of the recording to CHARGE. Null when no CHARGE is marked. Every other roast time counts from this moment; add it to one of them to place it on the curve. */
|
|
17126
17802
|
charge_time: number | null;
|
|
17127
|
-
/** @description Drying-phase end
|
|
17803
|
+
/** @description Drying-phase end. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17128
17804
|
dry_end_time: number | null;
|
|
17805
|
+
/** @description Turning point. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17129
17806
|
tp_time: number | null;
|
|
17130
17807
|
tp_temp: number | null;
|
|
17131
17808
|
total_ror: number | null;
|
|
17809
|
+
/** @description Drying: CHARGE to drying-phase end, as a share of the time from CHARGE to DROP (`total_roast_time`), in percent. */
|
|
17132
17810
|
dry_percent: number | null;
|
|
17811
|
+
/** @description Maillard: drying-phase end to first crack start, as a share of the time from CHARGE to DROP (`total_roast_time`), in percent. */
|
|
17133
17812
|
maillard_percent: number | null;
|
|
17134
17813
|
auc: number | null;
|
|
17135
17814
|
dry_phase_ror: number | null;
|
|
@@ -17162,6 +17841,7 @@ interface components {
|
|
|
17162
17841
|
};
|
|
17163
17842
|
};
|
|
17164
17843
|
RoastTemperatureInput: {
|
|
17844
|
+
/** @description Seconds since the recording started. */
|
|
17165
17845
|
timeSeconds: number;
|
|
17166
17846
|
beanTemp?: number | null;
|
|
17167
17847
|
environmentalTemp?: number | null;
|
|
@@ -17171,6 +17851,7 @@ interface components {
|
|
|
17171
17851
|
dataSource?: "live" | "artisan_import" | "manual";
|
|
17172
17852
|
};
|
|
17173
17853
|
RoastEventInput: {
|
|
17854
|
+
/** @description Seconds since the recording started, the same clock as the temperature samples. */
|
|
17174
17855
|
timeSeconds: number;
|
|
17175
17856
|
eventType?: number | null;
|
|
17176
17857
|
eventValue?: string | null;
|
|
@@ -17196,18 +17877,24 @@ interface components {
|
|
|
17196
17877
|
roasterSize?: string;
|
|
17197
17878
|
/** @enum {string} */
|
|
17198
17879
|
temperatureUnit?: "F" | "C";
|
|
17880
|
+
/** @description Roast length in seconds, from CHARGE to DROP. */
|
|
17199
17881
|
totalRoastTime?: number;
|
|
17200
17882
|
developmentPercent?: number;
|
|
17201
17883
|
dataSource?: string;
|
|
17202
17884
|
roastUuid?: string;
|
|
17885
|
+
/** @description First crack start, in seconds since CHARGE. */
|
|
17203
17886
|
fcStartTime?: number;
|
|
17204
17887
|
fcStartTemp?: number;
|
|
17888
|
+
/** @description First crack end, in seconds since CHARGE. */
|
|
17205
17889
|
fcEndTime?: number;
|
|
17206
17890
|
fcEndTemp?: number;
|
|
17891
|
+
/** @description DROP, in seconds since CHARGE. */
|
|
17207
17892
|
dropTime?: number;
|
|
17208
17893
|
dropTemp?: number;
|
|
17209
17894
|
chargeTemp?: number;
|
|
17895
|
+
/** @description Where CHARGE sits on the recording clock: seconds from the start of the recording to CHARGE. Every other roast time counts from it. */
|
|
17210
17896
|
chargeTime?: number;
|
|
17897
|
+
/** @description Turning point, in seconds since CHARGE. */
|
|
17211
17898
|
tpTime?: number;
|
|
17212
17899
|
tpTemp?: number;
|
|
17213
17900
|
totalRor?: number;
|
|
@@ -17269,18 +17956,24 @@ interface components {
|
|
|
17269
17956
|
roasterSize?: string;
|
|
17270
17957
|
/** @enum {string} */
|
|
17271
17958
|
temperatureUnit?: "F" | "C";
|
|
17959
|
+
/** @description Roast length in seconds, from CHARGE to DROP. */
|
|
17272
17960
|
totalRoastTime?: number;
|
|
17273
17961
|
developmentPercent?: number;
|
|
17274
17962
|
dataSource?: string;
|
|
17275
17963
|
roastUuid?: string;
|
|
17964
|
+
/** @description First crack start, in seconds since CHARGE. */
|
|
17276
17965
|
fcStartTime?: number;
|
|
17277
17966
|
fcStartTemp?: number;
|
|
17967
|
+
/** @description First crack end, in seconds since CHARGE. */
|
|
17278
17968
|
fcEndTime?: number;
|
|
17279
17969
|
fcEndTemp?: number;
|
|
17970
|
+
/** @description DROP, in seconds since CHARGE. */
|
|
17280
17971
|
dropTime?: number;
|
|
17281
17972
|
dropTemp?: number;
|
|
17282
17973
|
chargeTemp?: number;
|
|
17974
|
+
/** @description Where CHARGE sits on the recording clock: seconds from the start of the recording to CHARGE. Every other roast time counts from it. */
|
|
17283
17975
|
chargeTime?: number;
|
|
17976
|
+
/** @description Turning point, in seconds since CHARGE. */
|
|
17284
17977
|
tpTime?: number;
|
|
17285
17978
|
tpTemp?: number;
|
|
17286
17979
|
totalRor?: number;
|
|
@@ -17393,6 +18086,61 @@ interface components {
|
|
|
17393
18086
|
/** @description Reported source size in bytes for import-log metadata; defaults to the content length. */
|
|
17394
18087
|
fileSize?: number;
|
|
17395
18088
|
};
|
|
18089
|
+
RoastImportFromReferenceResponse: {
|
|
18090
|
+
data: {
|
|
18091
|
+
roast: components["schemas"]["RoastDetailResource"];
|
|
18092
|
+
import: components["schemas"]["ArtisanImportSummary"];
|
|
18093
|
+
reference: {
|
|
18094
|
+
/** Format: uuid */
|
|
18095
|
+
profileId: string;
|
|
18096
|
+
/** Format: uuid */
|
|
18097
|
+
revisionId: string;
|
|
18098
|
+
/** @description Whether the reference now lists the new roast as a linked roast. */
|
|
18099
|
+
linked: boolean;
|
|
18100
|
+
};
|
|
18101
|
+
};
|
|
18102
|
+
meta: {
|
|
18103
|
+
/** @enum {string} */
|
|
18104
|
+
resource: "roasts";
|
|
18105
|
+
/** @enum {string} */
|
|
18106
|
+
namespace: "/v1/roasts";
|
|
18107
|
+
/** @enum {string} */
|
|
18108
|
+
version: "v1";
|
|
18109
|
+
auth: {
|
|
18110
|
+
/** @enum {string} */
|
|
18111
|
+
kind: "session" | "api-key";
|
|
18112
|
+
/** @enum {string|null} */
|
|
18113
|
+
role: "admin" | "member" | "viewer" | null;
|
|
18114
|
+
/** @enum {string|null} */
|
|
18115
|
+
apiPlan: "viewer" | "member" | "enterprise" | null;
|
|
18116
|
+
};
|
|
18117
|
+
};
|
|
18118
|
+
};
|
|
18119
|
+
RoastImportFromReferenceRequest: {
|
|
18120
|
+
/**
|
|
18121
|
+
* Format: uuid
|
|
18122
|
+
* @description A saved Artisan reference profile owned by the caller.
|
|
18123
|
+
*/
|
|
18124
|
+
referenceProfileId: string;
|
|
18125
|
+
/**
|
|
18126
|
+
* Format: uuid
|
|
18127
|
+
* @description That reference's current revision.
|
|
18128
|
+
*/
|
|
18129
|
+
referenceRevisionId: string;
|
|
18130
|
+
/** @description green_coffee_inv.id owned by the caller to roast against. */
|
|
18131
|
+
coffeeId: number;
|
|
18132
|
+
/** @description Batch name; defaults to '<coffee> - <roast date>'. */
|
|
18133
|
+
batchName?: string;
|
|
18134
|
+
/** @description Roast date (YYYY-MM-DD); defaults to the file's date. */
|
|
18135
|
+
roastDate?: string;
|
|
18136
|
+
/** @description Input weight in oz; defaults to the file's weight if present. */
|
|
18137
|
+
ozIn?: number;
|
|
18138
|
+
/** @description Output weight in oz; defaults to the file's weight if present. */
|
|
18139
|
+
ozOut?: number;
|
|
18140
|
+
/** @description Roast notes; overrides the generated import summary note. */
|
|
18141
|
+
roastNotes?: string;
|
|
18142
|
+
roastTargets?: string;
|
|
18143
|
+
};
|
|
17396
18144
|
RoastArtisanImportReplaceRequest: {
|
|
17397
18145
|
/** @description Source file name. Must end in .alog, .alog.json, or .json (Artisan export). */
|
|
17398
18146
|
fileName: string;
|
|
@@ -17443,25 +18191,34 @@ interface components {
|
|
|
17443
18191
|
roaster_type: string | null;
|
|
17444
18192
|
roaster_size: string | null;
|
|
17445
18193
|
temperature_unit: string | null;
|
|
18194
|
+
/** @description Roast length in seconds, from CHARGE to DROP. From the start of the recording when `charge_time` is null. */
|
|
17446
18195
|
total_roast_time: number | null;
|
|
18196
|
+
/** @description Development: first crack start to DROP, as a share of the time from CHARGE to DROP (`total_roast_time`), in percent. */
|
|
17447
18197
|
development_percent: number | null;
|
|
17448
18198
|
data_source: string | null;
|
|
17449
18199
|
last_updated: string;
|
|
17450
18200
|
roast_uuid: string | null;
|
|
18201
|
+
/** @description First crack start. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17451
18202
|
fc_start_time: number | null;
|
|
17452
18203
|
fc_start_temp: number | null;
|
|
18204
|
+
/** @description First crack end. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17453
18205
|
fc_end_time: number | null;
|
|
17454
18206
|
fc_end_temp: number | null;
|
|
18207
|
+
/** @description DROP. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17455
18208
|
drop_time: number | null;
|
|
17456
18209
|
drop_temp: number | null;
|
|
17457
18210
|
charge_temp: number | null;
|
|
18211
|
+
/** @description Where CHARGE sits on the recording clock: seconds from the start of the recording to CHARGE. Null when no CHARGE is marked. Every other roast time counts from this moment; add it to one of them to place it on the curve. */
|
|
17458
18212
|
charge_time: number | null;
|
|
17459
|
-
/** @description Drying-phase end
|
|
18213
|
+
/** @description Drying-phase end. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17460
18214
|
dry_end_time: number | null;
|
|
18215
|
+
/** @description Turning point. Seconds since CHARGE. When `charge_time` is null the roast has no CHARGE marked and this counts from the start of the recording instead. */
|
|
17461
18216
|
tp_time: number | null;
|
|
17462
18217
|
tp_temp: number | null;
|
|
17463
18218
|
total_ror: number | null;
|
|
18219
|
+
/** @description Drying: CHARGE to drying-phase end, as a share of the time from CHARGE to DROP (`total_roast_time`), in percent. */
|
|
17464
18220
|
dry_percent: number | null;
|
|
18221
|
+
/** @description Maillard: drying-phase end to first crack start, as a share of the time from CHARGE to DROP (`total_roast_time`), in percent. */
|
|
17465
18222
|
maillard_percent: number | null;
|
|
17466
18223
|
auc: number | null;
|
|
17467
18224
|
dry_phase_ror: number | null;
|
|
@@ -17559,6 +18316,7 @@ interface components {
|
|
|
17559
18316
|
};
|
|
17560
18317
|
RoastChartPoint: {
|
|
17561
18318
|
data_type: string;
|
|
18319
|
+
/** @description Milliseconds since the recording started, the clock the curve is sampled on. Subtract `metadata.charge_time_ms` for time since CHARGE. */
|
|
17562
18320
|
time_milliseconds: number;
|
|
17563
18321
|
field_name: string;
|
|
17564
18322
|
value_numeric: number;
|
|
@@ -17567,6 +18325,7 @@ interface components {
|
|
|
17567
18325
|
subcategory: string;
|
|
17568
18326
|
};
|
|
17569
18327
|
RoastChartSeriesPoint: {
|
|
18328
|
+
/** @description Milliseconds since the recording started, the clock the curve is sampled on. Subtract `metadata.charge_time_ms` for time since CHARGE. */
|
|
17570
18329
|
time_milliseconds: number;
|
|
17571
18330
|
value_numeric: number;
|
|
17572
18331
|
};
|
|
@@ -17583,6 +18342,7 @@ interface components {
|
|
|
17583
18342
|
points: components["schemas"]["RoastChartSeriesPoint"][];
|
|
17584
18343
|
};
|
|
17585
18344
|
RoastChartEvent: {
|
|
18345
|
+
/** @description Milliseconds since the recording started, the clock the curve is sampled on. Subtract `metadata.charge_time_ms` for time since CHARGE. */
|
|
17586
18346
|
time_milliseconds: number;
|
|
17587
18347
|
name: string;
|
|
17588
18348
|
value: string | null;
|
|
@@ -17602,6 +18362,7 @@ interface components {
|
|
|
17602
18362
|
temp_max: number | null;
|
|
17603
18363
|
ror_min: number | null;
|
|
17604
18364
|
ror_max: number | null;
|
|
18365
|
+
/** @description Where CHARGE sits on the recording clock, in milliseconds. Null when no CHARGE is marked. Subtract it from any chart time for time since CHARGE. */
|
|
17605
18366
|
charge_time_ms: number | null;
|
|
17606
18367
|
temperature_unit: string | null;
|
|
17607
18368
|
profile_schema_version: number | null;
|
|
@@ -18223,6 +18984,8 @@ type CatalogSimilarQuery = NonNullable<paths["/v1/catalog/{id}/similar"]["get"][
|
|
|
18223
18984
|
type CatalogCompareQuery = NonNullable<paths["/v1/catalog/compare"]["get"]["parameters"]["query"]>;
|
|
18224
18985
|
/** Query parameters for {@link ParchmentClient.catalog.grades}. */
|
|
18225
18986
|
type CatalogGradesQuery = NonNullable<paths["/v1/catalog/grades"]["get"]["parameters"]["query"]>;
|
|
18987
|
+
/** Query parameters for {@link ParchmentClient.catalog.taxonomies}. */
|
|
18988
|
+
type CatalogTaxonomiesQuery = NonNullable<paths["/v1/catalog/taxonomies"]["get"]["parameters"]["query"]>;
|
|
18226
18989
|
/** Query parameters for {@link ParchmentClient.catalog.priceHistory}. */
|
|
18227
18990
|
type CatalogPriceHistoryQuery = NonNullable<paths["/v1/catalog/{id}/price-history"]["get"]["parameters"]["query"]>;
|
|
18228
18991
|
/** Query parameters for {@link ParchmentClient.priceIndex.list}. */
|
|
@@ -18302,6 +19065,10 @@ type RoastChartSeries = components["schemas"]["RoastChartSeries"];
|
|
|
18302
19065
|
type RoastChartEvent = components["schemas"]["RoastChartEvent"];
|
|
18303
19066
|
type ReferenceProfileImportRequest = NonNullable<paths["/v1/reference-profiles/imports"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18304
19067
|
type ReferenceProfileFromRoastRequest = NonNullable<paths["/v1/reference-profiles/from-roast"]["post"]["requestBody"]>["content"]["application/json"];
|
|
19068
|
+
/** Request body for {@link ParchmentClient.referenceProfiles.previewFromRoast}. */
|
|
19069
|
+
type ReferenceProfileRoastGenerationRequest = NonNullable<paths["/v1/reference-profiles/from-roast/preview"]["post"]["requestBody"]>["content"]["application/json"];
|
|
19070
|
+
/** Query parameters for {@link ParchmentClient.referenceProfiles.roastCandidates}. */
|
|
19071
|
+
type ReferenceProfileRoastCandidatesQuery = NonNullable<paths["/v1/reference-profiles/from-roast/candidates"]["get"]["parameters"]["query"]>;
|
|
18305
19072
|
type ReferenceProfileUpdateRequest = NonNullable<paths["/v1/reference-profiles/{id}"]["patch"]["requestBody"]>["content"]["application/json"];
|
|
18306
19073
|
type ReferenceProfileGenerationRequest = NonNullable<paths["/v1/reference-profiles/{id}/revisions/{revisionId}/preview"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18307
19074
|
type ProfileComparisonRequest = NonNullable<paths["/v1/profile-comparisons"]["post"]["requestBody"]>["content"]["application/json"];
|
|
@@ -18317,6 +19084,8 @@ type RoastUpdateRequest = NonNullable<paths["/v1/roasts/{id}"]["patch"]["request
|
|
|
18317
19084
|
type RoastLiveCurveRequest = NonNullable<paths["/v1/roasts/{id}/live-curve"]["put"]["requestBody"]>["content"]["application/json"];
|
|
18318
19085
|
/** Request body for {@link ParchmentClient.roasts.import}. */
|
|
18319
19086
|
type RoastImportRequest = NonNullable<paths["/v1/roasts/imports"]["post"]["requestBody"]>["content"]["application/json"];
|
|
19087
|
+
/** Request body for {@link ParchmentClient.roasts.importFromReference}. */
|
|
19088
|
+
type RoastImportFromReferenceRequest = NonNullable<paths["/v1/roasts/imports/from-reference"]["post"]["requestBody"]>["content"]["application/json"];
|
|
18320
19089
|
/** Request body for {@link ParchmentClient.roasts.replaceArtisanImport}. */
|
|
18321
19090
|
type RoastArtisanImportReplaceRequest = NonNullable<paths["/v1/roasts/{id}/artisan-import"]["put"]["requestBody"]>["content"]["application/json"];
|
|
18322
19091
|
/** Query parameters for {@link ParchmentClient.sales.list}. */
|
|
@@ -22330,6 +23099,69 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
22330
23099
|
} | undefined;
|
|
22331
23100
|
};
|
|
22332
23101
|
}, `${string}/${string}`>>;
|
|
23102
|
+
/** Variety, species, and drying-method vocabularies with aliases and family links. */
|
|
23103
|
+
taxonomies: (query?: CatalogTaxonomiesQuery) => Promise<openapi_fetch.FetchResponse<{
|
|
23104
|
+
parameters: {
|
|
23105
|
+
query?: {
|
|
23106
|
+
includeRetired?: "true" | "false";
|
|
23107
|
+
};
|
|
23108
|
+
header?: never;
|
|
23109
|
+
path?: never;
|
|
23110
|
+
cookie?: never;
|
|
23111
|
+
};
|
|
23112
|
+
requestBody?: never;
|
|
23113
|
+
responses: {
|
|
23114
|
+
200: {
|
|
23115
|
+
headers: {
|
|
23116
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
23117
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
23118
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
23119
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
23120
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
23121
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
23122
|
+
[name: string]: unknown;
|
|
23123
|
+
};
|
|
23124
|
+
content: {
|
|
23125
|
+
"application/json": components["schemas"]["CatalogTaxonomiesResponse"];
|
|
23126
|
+
};
|
|
23127
|
+
};
|
|
23128
|
+
401: {
|
|
23129
|
+
headers: {
|
|
23130
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
23131
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
23132
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
23133
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
23134
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
23135
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
23136
|
+
[name: string]: unknown;
|
|
23137
|
+
};
|
|
23138
|
+
content: {
|
|
23139
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
23140
|
+
};
|
|
23141
|
+
};
|
|
23142
|
+
403: {
|
|
23143
|
+
headers: {
|
|
23144
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
23145
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
23146
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
23147
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
23148
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
23149
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
23150
|
+
[name: string]: unknown;
|
|
23151
|
+
};
|
|
23152
|
+
content: {
|
|
23153
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
23154
|
+
};
|
|
23155
|
+
};
|
|
23156
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
23157
|
+
};
|
|
23158
|
+
}, {
|
|
23159
|
+
params: {
|
|
23160
|
+
query: {
|
|
23161
|
+
includeRetired?: "true" | "false";
|
|
23162
|
+
} | undefined;
|
|
23163
|
+
};
|
|
23164
|
+
}, `${string}/${string}`>>;
|
|
22333
23165
|
};
|
|
22334
23166
|
priceIndex: {
|
|
22335
23167
|
/** Available exact 30-day comparisons, with no empty-origin search. */
|
|
@@ -23921,7 +24753,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
23921
24753
|
[name: string]: unknown;
|
|
23922
24754
|
};
|
|
23923
24755
|
content: {
|
|
23924
|
-
"application/json": components["schemas"]["
|
|
24756
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
23925
24757
|
};
|
|
23926
24758
|
};
|
|
23927
24759
|
401: {
|
|
@@ -24090,6 +24922,8 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
24090
24922
|
}[];
|
|
24091
24923
|
};
|
|
24092
24924
|
change_set_summary: string;
|
|
24925
|
+
source_roast_id?: number | string;
|
|
24926
|
+
source_roast_revision?: string;
|
|
24093
24927
|
};
|
|
24094
24928
|
} | {
|
|
24095
24929
|
executionId: string;
|
|
@@ -29330,6 +30164,165 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29330
30164
|
};
|
|
29331
30165
|
} | undefined;
|
|
29332
30166
|
}, `${string}/${string}`>>;
|
|
30167
|
+
/**
|
|
30168
|
+
* Create a roast profile from the Artisan file stored with one of the
|
|
30169
|
+
* caller's uploaded reference profiles. Only uploaded Artisan references
|
|
30170
|
+
* qualify: planned (generated) profiles are never recorded as roasts,
|
|
30171
|
+
* and a reference saved from an existing roast is refused. Requires
|
|
30172
|
+
* Mallard Studio plus a session, or an owner-bound API key carrying the
|
|
30173
|
+
* exact `roast:read` and `roast:write` scopes. The optional
|
|
30174
|
+
* `idempotencyKey` is payload-bound.
|
|
30175
|
+
*/
|
|
30176
|
+
importFromReference: (body: RoastImportFromReferenceRequest, options?: {
|
|
30177
|
+
idempotencyKey?: string;
|
|
30178
|
+
}) => Promise<openapi_fetch.FetchResponse<{
|
|
30179
|
+
parameters: {
|
|
30180
|
+
query?: never;
|
|
30181
|
+
header?: {
|
|
30182
|
+
"idempotency-key"?: string;
|
|
30183
|
+
};
|
|
30184
|
+
path?: never;
|
|
30185
|
+
cookie?: never;
|
|
30186
|
+
};
|
|
30187
|
+
requestBody: {
|
|
30188
|
+
content: {
|
|
30189
|
+
"application/json": components["schemas"]["RoastImportFromReferenceRequest"];
|
|
30190
|
+
};
|
|
30191
|
+
};
|
|
30192
|
+
responses: {
|
|
30193
|
+
201: {
|
|
30194
|
+
headers: {
|
|
30195
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30196
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30197
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30198
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30199
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30200
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30201
|
+
[name: string]: unknown;
|
|
30202
|
+
};
|
|
30203
|
+
content: {
|
|
30204
|
+
"application/json": components["schemas"]["RoastImportFromReferenceResponse"];
|
|
30205
|
+
};
|
|
30206
|
+
};
|
|
30207
|
+
400: {
|
|
30208
|
+
headers: {
|
|
30209
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30210
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30211
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30212
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30213
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30214
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30215
|
+
[name: string]: unknown;
|
|
30216
|
+
};
|
|
30217
|
+
content: {
|
|
30218
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30219
|
+
};
|
|
30220
|
+
};
|
|
30221
|
+
401: {
|
|
30222
|
+
headers: {
|
|
30223
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30224
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30225
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30226
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30227
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30228
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30229
|
+
[name: string]: unknown;
|
|
30230
|
+
};
|
|
30231
|
+
content: {
|
|
30232
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30233
|
+
};
|
|
30234
|
+
};
|
|
30235
|
+
403: {
|
|
30236
|
+
headers: {
|
|
30237
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30238
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30239
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30240
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30241
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30242
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30243
|
+
[name: string]: unknown;
|
|
30244
|
+
};
|
|
30245
|
+
content: {
|
|
30246
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30247
|
+
};
|
|
30248
|
+
};
|
|
30249
|
+
404: {
|
|
30250
|
+
headers: {
|
|
30251
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30252
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30253
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30254
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30255
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30256
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30257
|
+
[name: string]: unknown;
|
|
30258
|
+
};
|
|
30259
|
+
content: {
|
|
30260
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30261
|
+
};
|
|
30262
|
+
};
|
|
30263
|
+
409: {
|
|
30264
|
+
headers: {
|
|
30265
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30266
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30267
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30268
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30269
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30270
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30271
|
+
[name: string]: unknown;
|
|
30272
|
+
};
|
|
30273
|
+
content: {
|
|
30274
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30275
|
+
};
|
|
30276
|
+
};
|
|
30277
|
+
429: {
|
|
30278
|
+
headers: {
|
|
30279
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30280
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30281
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30282
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30283
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30284
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30285
|
+
"Retry-After": components["headers"]["Retry-After"];
|
|
30286
|
+
"X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
|
|
30287
|
+
[name: string]: unknown;
|
|
30288
|
+
};
|
|
30289
|
+
content: {
|
|
30290
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30291
|
+
};
|
|
30292
|
+
};
|
|
30293
|
+
503: {
|
|
30294
|
+
headers: {
|
|
30295
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30296
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
30297
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30298
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30299
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30300
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30301
|
+
[name: string]: unknown;
|
|
30302
|
+
};
|
|
30303
|
+
content: {
|
|
30304
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30305
|
+
};
|
|
30306
|
+
};
|
|
30307
|
+
};
|
|
30308
|
+
}, {
|
|
30309
|
+
body: {
|
|
30310
|
+
referenceProfileId: string;
|
|
30311
|
+
referenceRevisionId: string;
|
|
30312
|
+
coffeeId: number;
|
|
30313
|
+
batchName?: string;
|
|
30314
|
+
roastDate?: string;
|
|
30315
|
+
ozIn?: number;
|
|
30316
|
+
ozOut?: number;
|
|
30317
|
+
roastNotes?: string;
|
|
30318
|
+
roastTargets?: string;
|
|
30319
|
+
};
|
|
30320
|
+
params: {
|
|
30321
|
+
header: {
|
|
30322
|
+
"idempotency-key": string;
|
|
30323
|
+
};
|
|
30324
|
+
} | undefined;
|
|
30325
|
+
}, `${string}/${string}`>>;
|
|
29333
30326
|
/**
|
|
29334
30327
|
* Replace the Artisan import data on one of the caller's existing roasts,
|
|
29335
30328
|
* re-deriving its curve, events, and computed metrics while preserving the
|
|
@@ -29650,9 +30643,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29650
30643
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
29651
30644
|
};
|
|
29652
30645
|
};
|
|
29653
|
-
429:
|
|
29654
|
-
/** Closed session-only command for {@link ParchmentClient.confirmedActions.execute}. */
|
|
29655
|
-
components["responses"]["ApiRateLimitExceeded"];
|
|
30646
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
29656
30647
|
};
|
|
29657
30648
|
}, {
|
|
29658
30649
|
params: {
|
|
@@ -29783,7 +30774,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
29783
30774
|
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
29784
30775
|
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
29785
30776
|
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
29786
|
-
"X-RateLimit-Burst-Remaining":
|
|
30777
|
+
"X-RateLimit-Burst-Remaining":
|
|
30778
|
+
/** Create a signed, short-lived login request bound to a PKCE challenge. */
|
|
30779
|
+
components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
29787
30780
|
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
29788
30781
|
[name: string]: unknown;
|
|
29789
30782
|
};
|
|
@@ -30350,6 +31343,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30350
31343
|
};
|
|
30351
31344
|
};
|
|
30352
31345
|
}, `${string}/${string}`>>;
|
|
31346
|
+
/**
|
|
31347
|
+
* Save an executed roast as a reference. `basis: "artisan_source"`
|
|
31348
|
+
* copies the roast's stored Artisan file so a planned profile can be
|
|
31349
|
+
* built from it, and returns the reference already saved from that
|
|
31350
|
+
* roast's file instead of a duplicate; the default
|
|
31351
|
+
* `"chart_snapshot"` keeps a comparison-only chart.
|
|
31352
|
+
*/
|
|
30353
31353
|
fromRoast: (body: ReferenceProfileFromRoastRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
|
|
30354
31354
|
parameters: {
|
|
30355
31355
|
query?: never;
|
|
@@ -30365,6 +31365,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30365
31365
|
};
|
|
30366
31366
|
};
|
|
30367
31367
|
responses: {
|
|
31368
|
+
200: {
|
|
31369
|
+
headers: {
|
|
31370
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31371
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31372
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31373
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31374
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31375
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31376
|
+
[name: string]: unknown;
|
|
31377
|
+
};
|
|
31378
|
+
content: {
|
|
31379
|
+
"application/json": components["schemas"]["ReferenceProfileResponse"];
|
|
31380
|
+
};
|
|
31381
|
+
};
|
|
30368
31382
|
201: {
|
|
30369
31383
|
headers: {
|
|
30370
31384
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
@@ -30390,7 +31404,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30390
31404
|
[name: string]: unknown;
|
|
30391
31405
|
};
|
|
30392
31406
|
content: {
|
|
30393
|
-
"application/json": components["schemas"]["
|
|
31407
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
30394
31408
|
};
|
|
30395
31409
|
};
|
|
30396
31410
|
401: {
|
|
@@ -30455,6 +31469,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30455
31469
|
body: {
|
|
30456
31470
|
roastId: number;
|
|
30457
31471
|
roastRevision: string;
|
|
31472
|
+
basis: "chart_snapshot" | "artisan_source";
|
|
30458
31473
|
title?: string;
|
|
30459
31474
|
notes?: string;
|
|
30460
31475
|
};
|
|
@@ -30464,6 +31479,195 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30464
31479
|
};
|
|
30465
31480
|
};
|
|
30466
31481
|
}, `${string}/${string}`>>;
|
|
31482
|
+
/**
|
|
31483
|
+
* List the caller's executed roasts whose Artisan file is on record and
|
|
31484
|
+
* can therefore be the base for a planned profile, newest first.
|
|
31485
|
+
*/
|
|
31486
|
+
roastCandidates: (query?: ReferenceProfileRoastCandidatesQuery) => Promise<openapi_fetch.FetchResponse<{
|
|
31487
|
+
parameters: {
|
|
31488
|
+
query?: {
|
|
31489
|
+
limit?: number;
|
|
31490
|
+
};
|
|
31491
|
+
header?: never;
|
|
31492
|
+
path?: never;
|
|
31493
|
+
cookie?: never;
|
|
31494
|
+
};
|
|
31495
|
+
requestBody?: never;
|
|
31496
|
+
responses: {
|
|
31497
|
+
200: {
|
|
31498
|
+
headers: {
|
|
31499
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31500
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31501
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31502
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31503
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31504
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31505
|
+
[name: string]: unknown;
|
|
31506
|
+
};
|
|
31507
|
+
content: {
|
|
31508
|
+
"application/json": components["schemas"]["ReferenceProfileRoastCandidatesResponse"];
|
|
31509
|
+
};
|
|
31510
|
+
};
|
|
31511
|
+
401: {
|
|
31512
|
+
headers: {
|
|
31513
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31514
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31515
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31516
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31517
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31518
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31519
|
+
[name: string]: unknown;
|
|
31520
|
+
};
|
|
31521
|
+
content: {
|
|
31522
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31523
|
+
};
|
|
31524
|
+
};
|
|
31525
|
+
403: {
|
|
31526
|
+
headers: {
|
|
31527
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31528
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31529
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31530
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31531
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31532
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31533
|
+
[name: string]: unknown;
|
|
31534
|
+
};
|
|
31535
|
+
content: {
|
|
31536
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31537
|
+
};
|
|
31538
|
+
};
|
|
31539
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
31540
|
+
};
|
|
31541
|
+
}, {
|
|
31542
|
+
params: {
|
|
31543
|
+
query: {
|
|
31544
|
+
limit?: number;
|
|
31545
|
+
} | undefined;
|
|
31546
|
+
};
|
|
31547
|
+
}, `${string}/${string}`>>;
|
|
31548
|
+
/**
|
|
31549
|
+
* Preview a planned profile built directly on an executed roast's stored
|
|
31550
|
+
* Artisan file. Read-only: nothing is saved and the roast is unchanged.
|
|
31551
|
+
*/
|
|
31552
|
+
previewFromRoast: (body: ReferenceProfileRoastGenerationRequest) => Promise<openapi_fetch.FetchResponse<{
|
|
31553
|
+
parameters: {
|
|
31554
|
+
query?: never;
|
|
31555
|
+
header?: never;
|
|
31556
|
+
path?: never;
|
|
31557
|
+
cookie?: never;
|
|
31558
|
+
};
|
|
31559
|
+
requestBody: {
|
|
31560
|
+
content: {
|
|
31561
|
+
"application/json": components["schemas"]["ReferenceProfileRoastGenerationRequest"];
|
|
31562
|
+
};
|
|
31563
|
+
};
|
|
31564
|
+
responses: {
|
|
31565
|
+
200: {
|
|
31566
|
+
headers: {
|
|
31567
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31568
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31569
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31570
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31571
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31572
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31573
|
+
[name: string]: unknown;
|
|
31574
|
+
};
|
|
31575
|
+
content: {
|
|
31576
|
+
"application/json": components["schemas"]["ReferenceProfileRoastGenerationPreviewResponse"];
|
|
31577
|
+
};
|
|
31578
|
+
};
|
|
31579
|
+
400: {
|
|
31580
|
+
headers: {
|
|
31581
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31582
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31583
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31584
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31585
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31586
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31587
|
+
[name: string]: unknown;
|
|
31588
|
+
};
|
|
31589
|
+
content: {
|
|
31590
|
+
"application/json": components["schemas"]["RoastSourceErrorResponse"];
|
|
31591
|
+
};
|
|
31592
|
+
};
|
|
31593
|
+
401: {
|
|
31594
|
+
headers: {
|
|
31595
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31596
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31597
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31598
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31599
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31600
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31601
|
+
[name: string]: unknown;
|
|
31602
|
+
};
|
|
31603
|
+
content: {
|
|
31604
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31605
|
+
};
|
|
31606
|
+
};
|
|
31607
|
+
403: {
|
|
31608
|
+
headers: {
|
|
31609
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31610
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31611
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31612
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31613
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31614
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31615
|
+
[name: string]: unknown;
|
|
31616
|
+
};
|
|
31617
|
+
content: {
|
|
31618
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31619
|
+
};
|
|
31620
|
+
};
|
|
31621
|
+
404: {
|
|
31622
|
+
headers: {
|
|
31623
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31624
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31625
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31626
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31627
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31628
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31629
|
+
[name: string]: unknown;
|
|
31630
|
+
};
|
|
31631
|
+
content: {
|
|
31632
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31633
|
+
};
|
|
31634
|
+
};
|
|
31635
|
+
409: {
|
|
31636
|
+
headers: {
|
|
31637
|
+
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
31638
|
+
"X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
|
|
31639
|
+
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
31640
|
+
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
31641
|
+
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
31642
|
+
"X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
|
|
31643
|
+
[name: string]: unknown;
|
|
31644
|
+
};
|
|
31645
|
+
content: {
|
|
31646
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
31647
|
+
};
|
|
31648
|
+
};
|
|
31649
|
+
429: components["responses"]["ApiRateLimitExceeded"];
|
|
31650
|
+
};
|
|
31651
|
+
}, {
|
|
31652
|
+
body: {
|
|
31653
|
+
title: string;
|
|
31654
|
+
notes?: string;
|
|
31655
|
+
userGoal?: string;
|
|
31656
|
+
modelRecommendation?: string;
|
|
31657
|
+
userEdits?: string;
|
|
31658
|
+
changes: {
|
|
31659
|
+
temperatureAdjustments: {
|
|
31660
|
+
kind: "bean_temperature" | "environmental_temperature";
|
|
31661
|
+
startMilliseconds: number;
|
|
31662
|
+
endMilliseconds: number;
|
|
31663
|
+
delta: number;
|
|
31664
|
+
}[];
|
|
31665
|
+
};
|
|
31666
|
+
} & {
|
|
31667
|
+
roastId: number;
|
|
31668
|
+
roastRevision: string;
|
|
31669
|
+
};
|
|
31670
|
+
}, `${string}/${string}`>>;
|
|
30467
31671
|
update: (id: string, body: ReferenceProfileUpdateRequest) => Promise<openapi_fetch.FetchResponse<{
|
|
30468
31672
|
parameters: {
|
|
30469
31673
|
query?: never;
|
|
@@ -30528,7 +31732,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30528
31732
|
403: {
|
|
30529
31733
|
headers: {
|
|
30530
31734
|
"X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
|
|
30531
|
-
"X-RateLimit-Remaining":
|
|
31735
|
+
"X-RateLimit-Remaining":
|
|
31736
|
+
/** Revoke an API key owned by the authenticated session user. */
|
|
31737
|
+
components["headers"]["X-RateLimit-Remaining"];
|
|
30532
31738
|
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30533
31739
|
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30534
31740
|
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
@@ -30629,9 +31835,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30629
31835
|
[name: string]: unknown;
|
|
30630
31836
|
};
|
|
30631
31837
|
content: {
|
|
30632
|
-
"application/json":
|
|
30633
|
-
/** Request body for {@link ParchmentClient.apiKeys.create}. */
|
|
30634
|
-
components["schemas"]["ErrorResponse"];
|
|
31838
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
30635
31839
|
};
|
|
30636
31840
|
};
|
|
30637
31841
|
403: {
|
|
@@ -30641,7 +31845,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
|
|
|
30641
31845
|
"X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
|
|
30642
31846
|
"X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
|
|
30643
31847
|
"X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
|
|
30644
|
-
"X-RateLimit-Burst-Reset":
|
|
31848
|
+
"X-RateLimit-Burst-Reset":
|
|
31849
|
+
/** Query parameters for {@link ParchmentClient.tasting.get}. */
|
|
31850
|
+
components["headers"]["X-RateLimit-Burst-Reset"];
|
|
30645
31851
|
[name: string]: unknown;
|
|
30646
31852
|
};
|
|
30647
31853
|
content: {
|
|
@@ -31835,7 +33041,7 @@ type ParchmentClientMethod = MethodPaths<Omit<ParchmentClient, "raw">>;
|
|
|
31835
33041
|
* SDK (such as the CLI) can import this list to prove they cover everything
|
|
31836
33042
|
* the web agent can do.
|
|
31837
33043
|
*/
|
|
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"];
|
|
33044
|
+
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
33045
|
type ChatAgentCapability = (typeof CHAT_AGENT_CAPABILITIES)[number];
|
|
31840
33046
|
/**
|
|
31841
33047
|
* Writes the web agent can propose. The agent never writes directly: it
|
|
@@ -31880,4 +33086,4 @@ type PickPaths<T, P extends string> = {
|
|
|
31880
33086
|
};
|
|
31881
33087
|
type ChatAgentClient = PickPaths<ParchmentClient, ChatAgentCapability>;
|
|
31882
33088
|
|
|
31883
|
-
export { type AccountDeletionOperation, type AccountDeletionRequest, type BillingCheckoutCreateRequest, type BillingCheckoutSession, type BillingManualEntitlementsRequest, type BillingSubscriptionMutationRequest, type BillingSubscriptionOperation, type BriefMatchesQuery, CHAT_AGENT_CAPABILITIES, CHAT_AGENT_CAPABILITY_EXCLUSIONS, CHAT_AGENT_CONFIRMED_ACTION_TYPES, type CatalogCompareQuery, type CatalogGradesQuery, type CatalogInventoryBatchLifecycle, type CatalogInventoryBatchReserveRequest, type CatalogInventoryBatchResult, type CatalogItem, type CatalogListQuery, type CatalogMapHeaders, type CatalogMapQuery, type CatalogMapResponse, type CatalogPriceHistoryQuery, type CatalogProofSummary, type CatalogSimilarQuery, type ChatAgentCapability, type ChatAgentCapabilityExclusion, type ChatAgentCapabilityExclusionReason, type ChatAgentClient, type ChatAgentConfirmedActionType, type ConfirmedActionExecuteRequest, type ConversationCanvasUpdateRequest, type ConversationChatStreamRequest, type ConversationMemoryDreamRequest, type ConversationMemoryUpdateRequest, type ConversationMessageAppendRequest, type ConversationSummaryUpdateRequest, type ConversationWorkspaceClearRequest, type ConversationWorkspaceCreateRequest, type ConversationWorkspaceMetadataRequest, type InventoryCreateRequest, type InventoryShareCatalog, type InventoryShareGrant, type InventoryShareGrantCreateRequest, type InventoryShareGrantRedeemRequest, type InventoryShareInventory, type InventoryShareRoastSummary, type InventoryUpdateRequest, type MarketOverview, type MarketSignalsQuery, type MetadataIndexQuery, type OwnerApiUsage, type OwnerApiUsageQuery, type ParchmentClient, type ParchmentClientMethod, type ParchmentClientOptions, type PriceIndexQuery, type PriceIndexStatsQuery, type ProfitItem, type ProfitListQuery, type RoastBatchCreateRequest, type RoastChartData, type RoastChartDataQuery, type RoastChartEvent, type RoastChartSeries, type RoastLiveCurveRequest, type SalesCreateRequest, type SalesListQuery, type SalesUpdateRequest, type SourcingBriefCreateRequest, type TrackedLotMutation, type TrackedLotSummary, type TrackedLotsListQuery, type components, createParchmentClient, type paths };
|
|
33089
|
+
export { type AccountDeletionOperation, type AccountDeletionRequest, type BillingCheckoutCreateRequest, type BillingCheckoutSession, type BillingManualEntitlementsRequest, type BillingSubscriptionMutationRequest, type BillingSubscriptionOperation, type BriefMatchesQuery, CHAT_AGENT_CAPABILITIES, CHAT_AGENT_CAPABILITY_EXCLUSIONS, CHAT_AGENT_CONFIRMED_ACTION_TYPES, type CatalogCompareQuery, type CatalogGradesQuery, type CatalogInventoryBatchLifecycle, type CatalogInventoryBatchReserveRequest, type CatalogInventoryBatchResult, type CatalogItem, type CatalogListQuery, type CatalogMapHeaders, type CatalogMapQuery, type CatalogMapResponse, type CatalogPriceHistoryQuery, type CatalogProofSummary, type CatalogSimilarQuery, type CatalogTaxonomiesQuery, type ChatAgentCapability, type ChatAgentCapabilityExclusion, type ChatAgentCapabilityExclusionReason, type ChatAgentClient, type ChatAgentConfirmedActionType, type ConfirmedActionExecuteRequest, type ConversationCanvasUpdateRequest, type ConversationChatStreamRequest, type ConversationMemoryDreamRequest, type ConversationMemoryUpdateRequest, type ConversationMessageAppendRequest, type ConversationSummaryUpdateRequest, type ConversationWorkspaceClearRequest, type ConversationWorkspaceCreateRequest, type ConversationWorkspaceMetadataRequest, type InventoryCreateRequest, type InventoryShareCatalog, type InventoryShareGrant, type InventoryShareGrantCreateRequest, type InventoryShareGrantRedeemRequest, type InventoryShareInventory, type InventoryShareRoastSummary, type InventoryUpdateRequest, type MarketOverview, type MarketSignalsQuery, type MetadataIndexQuery, type OwnerApiUsage, type OwnerApiUsageQuery, type ParchmentClient, type ParchmentClientMethod, type ParchmentClientOptions, type PriceIndexQuery, type PriceIndexStatsQuery, type ProfitItem, type ProfitListQuery, type RoastBatchCreateRequest, type RoastChartData, type RoastChartDataQuery, type RoastChartEvent, type RoastChartSeries, type RoastLiveCurveRequest, type SalesCreateRequest, type SalesListQuery, type SalesUpdateRequest, type SourcingBriefCreateRequest, type TrackedLotMutation, type TrackedLotSummary, type TrackedLotsListQuery, type components, createParchmentClient, type paths };
|